如何根據另一列中的唯一值轉置一列中的單元格?
假設您有一個包含兩列的數據范圍,現在,您想根據另一列中的唯一值將一列中的單元格轉置為水平行,以獲得以下結果。 您有什麼好主意可以解決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 人工智慧助手:基於以下內容徹底改變數據分析: 智慧執行 | 生成代碼 | 建立自訂公式 | 分析數據並產生圖表 | 呼叫 Kutools 函數... |
熱門特色: 尋找、突出顯示或識別重複項 | 刪除空白行 | 合併列或儲存格而不遺失數據 | 沒有公式的回合 ... | |
超級查詢: 多條件VLookup | 多值VLookup | 跨多個工作表的 VLookup | 模糊查詢 .... | |
高級下拉列表: 快速建立下拉列表 | 依賴下拉列表 | 多選下拉列表 .... | |
欄目經理: 新增特定數量的列 | 移動列 | 切換隱藏列的可見性狀態 | 比較範圍和列 ... | |
特色功能: 網格焦點 | 設計圖 | 大方程式酒吧 | 工作簿和工作表管理器 | 資源庫 (自動文字) | 日期選擇器 | 合併工作表 | 加密/解密單元格 | 按清單發送電子郵件 | 超級濾鏡 | 特殊過濾器 (過濾粗體/斜體/刪除線...)... | |
前 15 個工具集: 12 文本 工具 (添加文本, 刪除字符,...) | 50+ 圖表 類型 (甘特圖,...) | 40+ 實用 公式 (根據生日計算年齡,...) | 19 插入 工具 (插入二維碼, 從路徑插入圖片,...) | 12 轉化 工具 (數字到單詞, 貨幣兌換,...) | 7 合併與拆分 工具 (高級合併行, 分裂細胞,...) | ... 和更多 |
使用 Kutools for Excel 增強您的 Excel 技能,體驗前所未有的效率。 Kutools for Excel 提供了 300 多種進階功能來提高生產力並節省時間。 點擊此處獲取您最需要的功能...
Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆
- 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
- 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
- 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!