如何從 Excel 的單列中列出所有可能的組合?
如果您想從單列數據中返回所有可能的組合以獲得如下屏幕截圖所示的結果,您是否有任何快速的方法可以在 Excel 中處理此任務?
用公式列出單列中所有可能的組合
使用 VBA 代碼列出單列中所有可能的組合
用公式列出單列中所有可能的組合
以下數組公式可以幫助您完成這項工作,請逐步執行:
1. 首先,您應該創建兩個輔助公式單元格。 在 C1 單元格中,請輸入以下公式,然后按 Ctrl + Shift + Enter 獲得結果的關鍵:
=MAX(LEN(A2:A6))
備注:在此公式中, A2:A6 是您要列出其組合的單元格列表。
2. 在單元格 C2 中,輸入以下公式,然后按 Ctrl + Shift + Enter 鍵一起得到第二個結果,見截圖:
=CONCAT(A2:A6&REPT(" ",C2-LEN(A2:A6)))
備注:在此公式中, A2:A6 是您要列出其組合的單元格列表, C2 單元格是否包含您在步驟 1 中創建的公式。
3. 然后,將以下公式復制并粘貼到單元格 D2 中,然后按 Ctrl + Shift + Enter 鍵在一起以獲得第一個結果,請參見屏幕截圖:
=IF(ROW()>2^(COUNTA(A$2:A$6)),"",TEXTJOIN(" + ",TRUE,IF(MID(TEXT(DEC2BIN(ROW()-1),REPT("0",COUNTA($A$2:$A$6))),ROW(INDIRECT("1:"&COUNTA($A$2:$A$6))),1)+0,TRIM(MID($C$3,(ROW(INDIRECT("1:"&COUNTA($A$2:$A$6)))-1)*$C$2+1,$C$2)),"")))
備注:在此公式中, A2:A6 是您要列出其組合的單元格列表, C2 單元格是否包含您在步驟 1 中創建的公式, C3 是具有您在步驟 2 中創建的公式的單元格, + 字符是分隔組合的分隔符,您可以根據需要更改它們。
4. 然后,選擇此公式單元格,然后向下拖動填充柄,直到出現空白單元格。 現在,您可以看到指定列數據的所有組合顯示如下演示所示:
備注:此公式僅適用于 Office 2019、365 及更高版本。
使用 VBA 代碼列出單列中所有可能的組合
以上公式僅適用于較新的 Excel 版本,如果您有較早的 Excel 版本,以下 VBA 代碼可以幫到您。
1。 按 Alt + F11 同時打開 Microsoft Visual Basic應用程序 窗口。
2。 然后,點擊 插頁 > 模塊,將以下 VBA 代碼復制并粘貼到窗口中。
VBA 代碼:列出單列中所有可能的組合
Sub ConnectArr()
Updateby ExtendOffice
Dim xDValue As Variant
Dim xOutRg As Range
Dim xDictionary As Object
Dim xF As Long
Dim xChar As String
xDValue = Range("A2:A6").Value the data range
Set xOutRg = Range("C1") output range
xChar = "," separator
For xF = 1 To UBound(xDValue)
Set xDictionary = CreateObject("Scripting.Dictionary")
xDictionary(0) = "Sets of " & xF
Call ConnectValue(xDValue, xDictionary, 0, xF, 0, "", xChar)
xOutRg.Offset(0, xF - 1).Resize(xDictionary.Count).Value = WorksheetFunction.Transpose(xDictionary.Items)
Set xDictionary = Nothing
Next
End Sub
Sub ConnectValue(ByRef pDValue, ByRef pDictionary, ByRef pLevel, ByVal pMaxLevel, ByVal pIndex, ByVal pValue, ByVal pChar)
Dim xF As Long
If pLevel = pMaxLevel Then
pDictionary(pDictionary.Count + 1) = pValue
Exit Sub
End If
For xF = pIndex + 1 To UBound(pDValue)
If pValue = "" Then
Call ConnectValue(pDValue, pDictionary, pLevel + 1, pMaxLevel, xF, pDValue(xF, 1), pChar)
Else
Call ConnectValue(pDValue, pDictionary, pLevel + 1, pMaxLevel, xF, pValue & pChar & pDValue(xF, 1), pChar)
End If
Next
End Sub
備注:在上面的代碼中:
A2:A6: 是您要使用的數據列表;
C1: 是輸出單元格;
,: 分隔組合的分隔符。
3. 然后,按 F5 執行此代碼的關鍵。 單列中的所有組合如下圖所示:
最佳辦公生產力工具
將小時轉化為分鐘 Kutools for Excel!
準備好增強您的 Excel 任務了嗎? 利用的力量 Kutools for Excel - 您終極的節省時間的工具。 簡化復雜的任務并像專業人士一樣瀏覽數據。 以閃電般的速度體驗 Excel!
為什么需要 Kutools for Excel
??? 超過 300 項強大功能: Kutools 包含 300 多項高級功能,可簡化您在 1500 多種場景中的工作。
?? 卓越的數據處理能力:合并單元格、刪除重復項并執行高級數據轉換 - 所有這些都不費吹灰之力!

?? 高效的批量操作:當你可以聰明地工作時,為什么還要付出額外的努力呢? 輕松批量導入、導出、組合和調整數據。
?? 可定制的圖表和報告:訪問各種附加圖表并生成富有洞察力的報告。
??? 強大的導航窗格:通過強大的列管理器、工作表管理器和自定義收藏夾獲得優勢。
?? 七種類型的下拉列表:通過各種功能和類型的下拉列表使數據輸入變得輕而易舉。
?? 用戶友好:對于初學者來說輕而易舉,對于專家來說是一個強大的工具。
立即下載,與 Excel 一起穿越時空!
閱讀更多
免費下載... 采購...
Office Tab 為 Office 帶來選項卡式界面,讓您的工作更輕松
在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
在同一窗口的新選項卡中而不是在新窗口中打開并創建多個文檔。
每天將您的工作效率提高50%,并減少數百次鼠標單擊!