我有一個包含 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 函數的好機會。只需從逐步拆分預期操作開始即可。
祝你好運。