如何在 Excel 中自動將行轉換為列

如何在 Excel 中自動將行轉換為列

我有一個包含 2000 行的表,結構如下

company   product   targetJan   targetFeb   targetMarch   targetApril ...
Google    Docs      10          20          30            40
Google    Mail      13          25          45            70

我想隱藏到

Company  product  Date  Target
Google   Docs     Jan   10
Google   Docs     Feb   20
...
Google   Mail     Jan   13
...

我不知道如何解決這個問題,而且對宏或 vba 也不是特別熟悉。我該如何解決這個問題?

編輯:我已經錄製了一個可以完成這項工作的宏,但僅在我指定的第一行上。現在我需要弄清楚如何將其應用到整個文件的每 12 行:https://pastebin.com/D9yUHxZk

答案1

這可以在不使用巨集的情況下完成。下面的公式將在現有資料的右側填入一個新表格:

在此輸入影像描述

這些公式(分別)從 O2:R2 向下填充,給出了所示結果。

 =OFFSET($A$2,TRUNC((ROW()-2)/12),0)
 =OFFSET($B$2,TRUNC((ROW()-2)/12),0)
 =RIGHT(OFFSET($C$1,0,MOD((ROW()-2),12)),3)
 =OFFSET($C$2,TRUNC((ROW()-2)/12),MOD((ROW()-2),12))

請注意(為了簡單起見)我更改了您的目標標題,因此月份部分是三個字母的縮寫。如果您想提取更長的月份名稱,可以使用 MID() 和 LEN() 文字函數來完成。

填寫完所有新資料後,您可以根據需要刪除包含舊資料的資料列。但首先,選擇所有新數據,複製它,然後選擇性貼上 > 值...,這樣當您刪除派生數據的列時,數據就不會丟失。

答案2

若要將行轉換為列(轉置):

  • 複製你的範圍
  • 貼上
  • 點選貼上選項(貼上數組的右下角)
  • 按一下轉置 (T)

否則你的轉置範例不清楚,但如果你想要更自訂,這是學習一些 vba/excel 函數的好機會。只需從逐步拆分預期操作開始即可。

祝你好運。

相關內容