夜雨聆风学习资料网

ARTICLE · 1199309

如何在 Excel 中列出 6 个字符中所有 4 个字符的组合?

如何在 Excel 中列出 6 个字符中所有 4 个字符的组合?

公众号平台最新的推送规则对技术类文章不太友善,如果不想错过干货,请务必“设为星标”哦!!!

点击任意文章上方的“☆星标”即可。

解答网友问题:如何列举出 6 个字符中所有 4 个字符的排列组合?不考虑排列顺序。

案例:

列出字母 A、B、C、D、E、F 中任意 4 个字母的排列组合。组合中的字母相同、排列顺序不同视为同一个。

效果如下图所示。

解决方案:

1. 按 Alt+F11 打开 VBE --> 输入以下代码:

Public Sub GenerateCombinations()    Dim sourceStr As String    Dim result As Collection    Dim outputRow As Integer    ' 初始化参数    sourceStr = "ABCDEF" ' 可替换为任意6个字符    Set result = New Collection    outputRow = 2    ' 准备输出工作表    With ActiveSheet        .Cells.Clear        .Range("A1").Value = "组合结果 (源字符: " & sourceStr & ")"        .Range("B1").Value = "总数"    End With    ' 调用核心组合生成算法    Call GetCombinations(sourceStr, 4, "", 1, result) '任意4个字符的组合;如果改成5就可以得到任意5个字符的组合    ' 输出结果    For Each Item In result        ActiveSheet.Cells(outputRow, 1).Value = Item        outputRow = outputRow + 1    Next    ' 显示统计信息    With ActiveSheet        .Range("B2").Value = result.Count        .Columns("A:B").AutoFit    End With    MsgBox "成功生成 " & result.Count & " 种组合", vbInformation, "完成"End SubPrivate Sub GetCombinations(source As String, remain As Integer, _                          current As String, startPos As Integer, _                          ByRef result As Collection)    ' 终止条件:组合长度达标    If remain = 0 Then        result.Add current        Exit Sub    End If    ' 递归生成组合    Dim i As Integer    For i = startPos To Len(source) - remain + 1        GetCombinations source, remain - 1, _                      current & Mid(source, i, 1), _                      i + 1, result    NextEnd Sub

2. 点击“运行”按钮运行代码。

以下就是运行结果。

3. 关闭对话框。

转发、点赞、在看也是爱!

相关学习资料