Excel二維表格轉一維

為了顯示及輸入方便,使用者常常使用二維表格

但是這個紀錄方式資料很難統計分析,因此可利用VBA來轉換一下資料

原始資料

VBA轉換程式碼

Sub 轉換表格()
    '清除三欄內容
    Sheet2.Columns(1).ClearContents
    Sheet2.Columns(2).ClearContents
    Sheet2.Columns(3).ClearContents
    
    '展開群組
    Sheet1.Outline.ShowLevels RowLevels:=2
    Sheet1.Outline.ShowLevels ColumnLevels:=2
    
    '遍歷欄、列
    Row = 1
    For i = 2 To Sheet1.Range("A" & Rows.Count).End(xlUp).Row
        For j = 2 To Sheet1.Cells(1, Sheet1.Columns.Count).End(xlToLeft).Column
            If Sheet1.Cells(i, j).Value <> "" Then
                Sheet2.Cells(Row, 1).Value = Sheet1.Cells(i, 1).Value 'ABC
                Sheet2.Cells(Row, 2).Value = Sheet1.Cells(1, j).Value '123
                Sheet2.Cells(Row, 3).Value = Sheet1.Cells(i, j).Value '內容
                
                 Row = Row + 1
            End If
           
            DoEvents
        Next
    Next
End Sub

轉換後資料