
如何在Excel中將重復的行轉置為列?
假設您在Excel中擁有一系列數據,現在,您想要將重復的行轉置為多列,如下面的屏幕截圖所示,您有解決此任務的好主意嗎?
使用VBA代碼將重復的行轉換為列
使用VBA代碼將重復的行轉換為列不幸的是,您沒有直接的方法可以在Excel中處理它,但是您可以創建一個VBA代碼來解決它,請執行以下操作:
1. 按住 ALT + F11 鍵打開 Microsoft Visual Basic for Applications窗口.
2。 點擊 插頁 > 模塊,然后將以下代碼粘貼到 模塊窗口.
VBA代碼:將重復的行轉置為多列
Sub ConvertTable()Updateby ExtendofficeDim xArr1 As VariantDim xArr2 As VariantDim InputRng As Range, OutRng As RangeDim xRows As LongxTitleId = "KutoolsforExcel"Set InputRng = Application.SelectionSet InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)Set OutRng = OutRng.Range("A1")xArr1 = InputRng.Valuet = UBound(xArr1, 2): xRows = 1With CreateObject("scripting.Dictionary").CompareMode = 1For i = 2 To UBound(xArr1, 1)If Not .exists(xArr1(i, 1)) ThenxRows = xRows + 1: .Item(xArr1(i, 1)) = VBA.Array(xRows, t)For ii = 1 To txArr1(xRows, ii) = xArr1(i, ii)NextElsexArr2 = .Item(xArr1(i, 1))If UBound(xArr1, 2) < xArr2(1) + t - 1 ThenReDim Preserve xArr1(1 To UBound(xArr1, 1), 1 To xArr2(1) + t - 1)For ii = 2 To txArr1(1, xArr2(1) + ii - 1) = xArr1(1, ii)NextEnd IfFor ii = 2 To txArr1(xArr2(0), xArr2(1) + ii - 1) = xArr1(i, ii)NextxArr2(1) = xArr2(1) + t - 1: .Item(xArr1(i, 1)) = xArr2End IfNextEnd WithOutRng.Resize(xRows, UBound(xArr1, 2)).Value = xArr1End SubCopy3。 然后按 F5 鍵以運行此代碼,在彈出的對話框中選擇要將重復的行轉換為多列的數據范圍,請參見屏幕截圖:
4。 點擊 OK,然后在以下對話框中選擇要將結果放入其中的一個單元格,請參見屏幕截圖:
5. 然后點擊 OK 按鈕,您選擇的數據已轉換為以下內容:
相關文章:
如何將列和行轉置/轉換為單行?
如何將列和行轉置/轉換為單列?
如何在Excel中將單個列轉置/轉換為多個列?
最佳辦公生產力工具
將小時轉化為分鐘 Kutools for Excel!準備好增強您的 Excel 任務了嗎? 利用的力量 Kutools for Excel - 您終極的節省時間的工具。 簡化復雜的任務并像專業人士一樣瀏覽數據。 以閃電般的速度體驗 Excel!
為什么需要 Kutools for Excel

