
如何根據(jù)另一列中的唯一值轉(zhuǎn)置一列中的單元格?
假設(shè)您有一個包含兩列的數(shù)據(jù)范圍,現(xiàn)在,您想根據(jù)另一列中的唯一值將一列中的單元格轉(zhuǎn)置為水平行,以獲得以下結(jié)果。 您有什么好主意可以解決Excel中的此問題嗎?
根據(jù)具有公式的唯一值將單元格轉(zhuǎn)置為一列
使用VBA代碼根據(jù)唯一值將單元格轉(zhuǎn)置為一列
根據(jù)唯一值轉(zhuǎn)置一列中的單元格 Kutools for Excel
根據(jù)具有公式的唯一值將單元格轉(zhuǎn)置為一列使用以下數(shù)組公式,您可以提取唯一值并將其對應(yīng)的數(shù)據(jù)轉(zhuǎn)置為水平行,請執(zhí)行以下操作:
1。 輸入此數(shù)組公式: = INDEX($ A $ 2:$ A $ 16,MATCH(0,COUNTIF($ D $ 1:$ D1,$ A $ 2:$ A $ 16),0)) 放入一個空白單元格(例如D2),然后按 Shift + Ctrl + 輸入 鍵在一起以獲得正確的結(jié)果,請參見屏幕截圖:
備注:在以上公式中, A2:A16 是您要列出其唯一值的列,并且 D1 是此公式單元格上方的單元格。
2。 然后將填充手柄向下拖動到單元格以提取所有唯一值,請參見屏幕截圖:
3。 然后繼續(xù)將此公式輸入到單元格E2中: =IFERROR(INDEX($B:$B, MATCH(0, COUNTIF($D2:D2,$B:$B)+IF($A:$A<>$D2, 1, 0), 0)), 0),并記得按 Shift + Ctrl + 輸入 鍵以獲取結(jié)果,請參見屏幕截圖:
備注:在上式中: B2:B16 是您要轉(zhuǎn)置的列數(shù)據(jù), A2:A16 是您要基于其轉(zhuǎn)置值的列,并且 D2 包含您在步驟1中提取的唯一值。
4. 然后將填充手柄拖到要列出轉(zhuǎn)置數(shù)據(jù)的單元格的右側(cè),直到顯示0,請參見屏幕截圖:
5。 然后繼續(xù)將填充手柄向下拖動到單元格范圍,以獲取轉(zhuǎn)置數(shù)據(jù),如以下屏幕截圖所示:
使用VBA代碼根據(jù)唯一值將單元格轉(zhuǎn)置為一列公式可能會讓您難以理解,在這里,您可以運行下面的VBA代碼以獲取所需的所需結(jié)果。
1。 按住 ALT + F11 鍵打開 Microsoft Visual Basic應(yīng)用程序 窗口。
2。 點擊 插頁 > 模塊,然后將以下代碼粘貼到 模塊 窗口。
VBA代碼:根據(jù)另一列中的唯一值將一列中的單元格轉(zhuǎn)置:
Sub transposeunique()updateby ExtendofficeDim xLRow As LongDim i As LongDim xCrit As StringDim xCol As New CollectionDim xRg As RangeDim xOutRg As RangeDim xTxt As StringDim xCount As LongDim xVRg As RangeOn Error Resume NextxTxt = ActiveWindow.RangeSelection.AddressSet 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 SubIf (xRg.Columns.Count <> 2) Or _(xRg.Areas.Count > 1) ThenMsgBox "the used range is only one area with two columns ", , "Kutools for Excel"Exit SubEnd IfSet xOutRg = Application.InputBox("please select output range(specify one cell):", "Kutools for Excel", xTxt, , , , , 8)If xOutRg Is Nothing Then Exit SubSet xOutRg = xOutRg.Range(1)xLRow = xRg.Rows.CountFor i = 2 To xLRowxCol.Add xRg.Cells(i, 1).Value, xRg.Cells(i, 1).ValueNextApplication.ScreenUpdating = FalseFor i = 1 To xCol.CountxCrit = xCol.Item(i)xOutRg.Offset(i, 0) = xCritxRg.AutoFilter Field:=1, Criteria1:=xCritSet xVRg = xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible)If xVRg.Count > xCount Then xCount = xVRg.CountxRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible).CopyxOutRg.Offset(i, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=TrueApplication.CutCopyMode = FalseNextxOutRg = xRg.Cells(1, 1)xOutRg.Offset(0, 1).Resize(1, xCount) = xRg.Cells(1, 2)xRg.Rows(1).CopyxOutRg.Resize(1, xCount + 1).PasteSpecial Paste:=xlPasteFormatsxRg.AutoFilterApplication.ScreenUpdating = TrueEnd SubCopy3. 然后按 F5 鍵來運行此代碼,然后會彈出一個提示框,提醒您選擇要使用的數(shù)據(jù)范圍,請參見屏幕截圖:
4。 然后點擊 OK 按鈕,將彈出另一個提示框,提醒您選擇要放入結(jié)果的單元格,請參見屏幕截圖:
6。 點擊 OK 按鈕,并且已經(jīng)根據(jù)A列中的唯一值對B列中的數(shù)據(jù)進行了轉(zhuǎn)置,請參見屏幕截圖:
根據(jù)唯一值轉(zhuǎn)置一列中的單元格 Kutools for Excel如果你有 Kutools for Excel,結(jié)合 高級組合行 和 分裂細(xì)胞 實用程序,您無需任何公式或代碼即可快速完成此任務(wù)。
Kutools for Excel : 帶有300多個便捷的Excel加載項,可以在內(nèi).前往下載購買貝寶/ MyCommerce安裝后 Kutools for Excel,請執(zhí)行以下操作:
1。 選擇您要使用的數(shù)據(jù)范圍。 (如果要保留原始數(shù)據(jù),請首先將數(shù)據(jù)復(fù)制并粘貼到其他位置。)
2。 然后點擊 Kutools > 合并與拆分 > 高級組合行,請參見屏幕截圖:
3。 在 根據(jù)列合并行 對話框,請執(zhí)行以下操作:
(1.)單擊要轉(zhuǎn)置數(shù)據(jù)所基于的列名稱,然后選擇 首要的關(guān)鍵;
(2.)單擊要轉(zhuǎn)置的另一列,然后單擊 結(jié)合 然后選擇一個分隔符以分隔組合的數(shù)據(jù),例如空格,逗號,分號。
4。 然后點擊 Ok 按鈕,B列中的數(shù)據(jù)已基于A列合并到一個單元格中,請參見屏幕截圖:
5。 然后選擇組合的單元格,然后單擊 Kutools > 合并與拆分 > 分裂細(xì)胞,請參見屏幕截圖:
6。 在 分裂細(xì)胞 對話框中選擇 拆分為列 在下面 Type 選項,然后選擇用于分隔組合數(shù)據(jù)的分隔符,請參見屏幕截圖:
7。 然后點擊 Ok 按鈕,然后選擇一個單元格以將拆分結(jié)果放入彈出的對話框中,請參見屏幕截圖:
8。 點擊 OK,您將根據(jù)需要獲得結(jié)果。 看截圖:
下載并 Kutools for Excel 現(xiàn)在 !
演示:根據(jù)唯一值轉(zhuǎn)置一列中的單元格 Kutools for ExcelKutools for Excel:具有300多個方便的Excel加載項,可以在內(nèi),沒有任何限制。 立即下載并!最佳辦公生產(chǎn)力工具
將小時轉(zhuǎn)化為分鐘 Kutools for Excel!準(zhǔn)備好增強您的 Excel 任務(wù)了嗎? 利用的力量 Kutools for Excel - 您終極的節(jié)省時間的工具。 簡化復(fù)雜的任務(wù)并像專業(yè)人士一樣瀏覽數(shù)據(jù)。 以閃電般的速度體驗 Excel!
為什么需要 Kutools for Excel

