如何根據另一列中的唯一值轉置一列中的單元格?
假設您有一個包含兩列的數據范圍,現在,您想根據另一列中的唯一值將一列中的單元格轉置為水平行,以獲得以下結果。 您有什麼好主意可以解決Excel中的此問題嗎?
使用Kutools for Excel根據唯一值將單元格轉置為一列
根據具有公式的唯一值將單元格轉置為一列
使用以下數組公式,您可以提取唯一值並將其對應的數據轉置為水平行,請執行以下操作:
1。 輸入此數組公式: = INDEX($ A $ 2:$ A $ 16,MATCH(0,COUNTIF($ D $ 1:$ D1,$ A $ 2:$ A $ 16),0)) 放入一個空白單元格(例如D2),然後按 Shift + Ctrl + 輸入 鍵在一起以獲得正確的結果,請參見屏幕截圖:
備註:在以上公式中, A2:A16 是您要列出其唯一值的列,並且 D1 是此公式單元格上方的單元格。
2。 然後將填充手柄向下拖動到單元格以提取所有唯一值,請參見屏幕截圖:
3。 然後繼續將此公式輸入到單元格E2中: =IFERROR(INDEX($B$2:$B$16, MATCH(0, COUNTIF($D2:D2,$B$2:$B$16)+IF($A$2:$A$16<>$D2, 1, 0), 0)), 0),並記得按 Shift + Ctrl + 輸入 鍵以獲取結果,請參見屏幕截圖:
備註:在上式中: B2:B16 是您要轉置的列數據, A2:A16 是要基於其轉置值的列,並且 D2 包含您在步驟1中提取的唯一值。
4. 然後將填充手柄拖到要列出轉置數據的單元格的右側,直到顯示0,請參見屏幕截圖:
5。 然後繼續將填充手柄向下拖動到單元格範圍,以獲取轉置數據,如以下屏幕截圖所示:
使用VBA代碼根據唯一值將單元格轉置為一列
公式可能會讓您難以理解,在這裡,您可以運行下面的VBA代碼以獲取所需的所需結果。
1。 按住 ALT + F11 鍵打開 Microsoft Visual Basic for Applications 窗口。
2。 點擊 插入 > 模塊,然後將以下代碼粘貼到 模塊 窗口。
VBA代碼:根據另一列中的唯一值將一列中的單元格轉置:
Sub transposeunique()
'updateby Extendoffice
Dim xLRow As Long
Dim i As Long
Dim xCrit As String
Dim xCol As New Collection
Dim xRg As Range
Dim xOutRg As Range
Dim xTxt As String
Dim xCount As Long
Dim xVRg As Range
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("please select data range(only two columns):", "Kutools for Excel", xTxt, , , , , 8)
Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
If xRg Is Nothing Then Exit Sub
If (xRg.Columns.Count <> 2) Or _
(xRg.Areas.Count > 1) Then
MsgBox "the used range is only one area with two columns ", , "Kutools for Excel"
Exit Sub
End If
Set xOutRg = Application.InputBox("please select output range(specify one cell):", "Kutools for Excel", xTxt, , , , , 8)
If xOutRg Is Nothing Then Exit Sub
Set xOutRg = xOutRg.Range(1)
xLRow = xRg.Rows.Count
For i = 2 To xLRow
xCol.Add xRg.Cells(i, 1).Value, xRg.Cells(i, 1).Value
Next
Application.ScreenUpdating = False
For i = 1 To xCol.Count
xCrit = xCol.Item(i)
xOutRg.Offset(i, 0) = xCrit
xRg.AutoFilter Field:=1, Criteria1:=xCrit
Set xVRg = xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible)
If xVRg.Count > xCount Then xCount = xVRg.Count
xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible).Copy
xOutRg.Offset(i, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = False
Next
xOutRg = xRg.Cells(1, 1)
xOutRg.Offset(0, 1).Resize(1, xCount) = xRg.Cells(1, 2)
xRg.Rows(1).Copy
xOutRg.Resize(1, xCount + 1).PasteSpecial Paste:=xlPasteFormats
xRg.AutoFilter
Application.ScreenUpdating = True
End Sub
3. 然後按 F5 鍵來運行此代碼,然後會彈出一個提示框,提醒您選擇要使用的數據范圍,請參見屏幕截圖:
4。 然後點擊 OK 按鈕,將彈出另一個提示框,提醒您選擇要放入結果的單元格,請參見屏幕截圖:
6。 點擊 OK 按鈕,並且已經根據A列中的唯一值對B列中的數據進行了轉置,請參見屏幕截圖:
使用Kutools for Excel根據唯一值將單元格轉置為一列
如果你有 Excel的Kutools,結合 高級合併行 及 分裂細胞 實用程序,您無需任何公式或代碼即可快速完成此任務。
Excel的Kutools : 帶有300多個便捷的Excel加載項,可以在30天內免費試用. |
安裝後 Excel的Kutools,請執行以下操作:
1。 選擇您要使用的數據范圍。 (如果要保留原始數據,請首先將數據複製並粘貼到其他位置。)
2。 然後點擊 庫工具 > 合併與拆分 > 高級合併行,請參見屏幕截圖:
3。 在 根據列合併行 對話框,請執行以下操作:
(1.)單擊要轉置數據所基於的列名稱,然後選擇 首要的關鍵;
(2.)單擊要轉置的另一列,然後單擊 結合 然後選擇一個分隔符以分隔組合的數據,例如空格,逗號,分號。
4。 然後點擊 Ok 按鈕,B列中的數據已基於A列合併到一個單元格中,請參見屏幕截圖:
5。 然後選擇組合的單元格,然後單擊 庫工具 > 合併與拆分 > 分裂細胞,請參見屏幕截圖:
6。 在 分裂細胞 對話框中選擇 拆分為列 在 類別 選項,然後選擇用於分隔組合數據的分隔符,請參見屏幕截圖:
7。 然後點擊 Ok 按鈕,然後選擇一個單元格以將拆分結果放入彈出的對話框中,請參見屏幕截圖:
8。 點擊 OK,您將根據需要獲得結果。 看截圖:
演示:使用Kutools for Excel根據唯一值將單元格轉置為一列
最佳辦公效率工具
Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%
- 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
- 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
- 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
- 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
- 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
- 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
- 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
- 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
- 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆
- 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
- 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
- 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
















































