如何从 Excel 的单列中列出所有可能的组合?

网友投稿 285 2024-01-04

如何从 Excel 的单列中列出所有可能的组合?

如果您想从单列数据中返回所有可能的组合以获得如下屏幕截图所示的结果,您是否有任何快速的方法可以在 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
Copy
备注:在上面的代码中: 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%,并减少数百次鼠标单击!
阅读更多 免费下载... 采购... 

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何列出工作簿中的所有数据透视表?
下一篇:如何在Excel中列出所有表名?
相关文章