# Excel多行儲存格展開巨集 ## 程式碼 ```vb Sub TransformRowsToMultipleRows() Dim ws As Worksheet Dim newWs As Worksheet Dim lastRow As Long Dim i As Long, j As Long, k As Long Dim splitData As Variant ' 設定當前工作表和新的工作表 Set ws = ThisWorkbook.Sheets("Sheet1") ' 根據實際情況修改工作表名稱 Set newWs = ThisWorkbook.Sheets.Add newWs.Name = "TransformedData" ' 找出A欄的最後一行 lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row j = 1 ' 新工作表的列數起始位置 ' 循環處理每一行 For i = 1 To lastRow ' 將B欄的內容用換行符號進行拆分 splitData = Split(ws.Cells(i, 2).Value, Chr(10)) ' 將拆分後的B欄內容逐列貼到新工作表 For k = LBound(splitData) To UBound(splitData) newWs.Cells(j, 1).Value = ws.Cells(i, 1).Value ' 複製A欄的內容 newWs.Cells(j, 2).Value = splitData(k) ' 將拆分後的B欄內容填入 j = j + 1 ' 移到新工作表的下一列 Next k Next i MsgBox "轉換完成!" End Sub ``` ## 功能說明 此巨集可將 Excel 中儲存多行資料的儲存格展開為多列。假設 `a欄` 是編號欄,`b欄` 是資料欄,且 `b欄` 儲存格內的資料有多行,該巨集將資料逐行拆分並依次放入新列,保留 `a欄` 對應的編號。 ### 主要流程 1. `a欄` 的資料作為編號,`b欄` 的資料為多行內容。 2. 程式將 `b欄` 的每個儲存格按換行符號拆分為多行,並將其對應的 `a欄` 資料重複放在拆分後的每一列中。 3. 結果會產生一個新的工作表,展開的資料按照行排列。 ### 使用範例 假設原本 `Sheet1` 的資料如下: | A欄 (編號) | B欄 (多行資料) | | --- | --- | | 001 | 資料1\\n資料2 | | 002 | 資料3\\n資料4\\n資料5 | 執行後,新工作表中的資料會變成: | A欄 (編號) | B欄 (單行資料) | | --- | --- | | 001 | 資料1 | | 001 | 資料2 | | 002 | 資料3 | | 002 | 資料4 | | 002 | 資料5 |
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up