將水平表格佈局轉換為垂直表格佈局

將水平表格佈局轉換為垂直表格佈局

以下 Excel 工作表必須重新排列

ID  Name1  Name2  Name3

1   Alf    Bert   Fritz

2   Curt

3   Otto   Mike

4   Sue    Zack 

ID  Name

1   Alf

1   Bert

1   Fritz

2   Curt

3   Otto

3   Mike

4   Sue

4   Zack

我缺少正確的搜尋字詞,我猜它相當常見,但我無法正確描述它。

答案1

試試這個程式碼。透過一步一步的工作,這是不言自明的。輸入資料從 A1 開始,輸出從 A8 開始。這是可以改變的。

更短的程式碼當然是可能的,我想也可以將陣列公式放在一起。

Sub single_col()
    Dim icell As Integer
    Dim irow As Integer, icol As Integer
    Dim nrows As Integer, ncols As Integer
    Dim rng_all As Range, rng_curr As Range, rng_trg As Range
    Set rng_all = Range("A2:D5")
    Set rng_trg = Range("A8")
    nrows = rng_all.Rows.Count
    icell = 0
    For irow = 1 To nrows
      Set rng_curr = rng_all.Rows(irow)
      ncols = WorksheetFunction.CountA(rng_curr)
      For icol = 2 To ncols
        icell = icell + 1
        Dim name As String
        name = rng_curr.Cells(1, icol).Text
        rng_trg.Value = rng_curr.Cells(1, 1).Text
        rng_trg.Offset(0, 1).Value = name
        Set rng_trg = rng_trg.Offset(1, 0)
      Next icol
    Next irow
End Sub

PS:上面的程式碼已經包含評論中建議的修改。

答案2

您有一個想要「取消透視」的資料透視表佈局。這文章Jon Walkenbach 的文章展示了只需敲擊幾下鍵盤即可完成的操作,並且不需要 VBA 程式碼。

針對您的具體情況,我會這樣做。

1.使用 Alt + D、P 開啟「舊」資料透視表選單。選擇“多個合併範圍”選項,然後按一下“下一步”。

在此輸入影像描述

2.下一步選擇「我將建立頁面欄位」;點選下一步」。

在此輸入影像描述

3.反白顯示儲存格範圍,以便在對話方塊的上部定義它,然後按一下「新增」按鈕將該範圍複製到「所有範圍」清單中。點選下一步」。

在此輸入影像描述

4.選擇一個遠離資料的儲存格。您可以看到我在同一張紙上選擇了 F3。 (如果您願意,您可以選擇不同的工作表。)按一下「完成」。

在此輸入影像描述

5.你會得到一個像這樣的資料透視表。在對話方塊中,取消選取「行」和「列」複選框。

在此輸入影像描述

6.這將為您提供一個單一單元格資料透視表。

在此輸入影像描述

7.然後雙擊一個單元格,在新工作表上,您將獲得“未透視”資料作為新表:

在此輸入影像描述

有了這個表數據,您現在可以過濾 C 列以顯示非空白,並且可以刪除 B 列,這樣您就可以獲得所需的佈局。

相關內容