摘要:很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。
很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。
现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手。
解答网友问题:如何列举出 6 个字符中所有 4 个字符的排列组合?不考虑排列顺序。
列出字母 A、B、C、D、E、F 中任意 4 个字母的排列组合。组合中的字母相同、排列顺序不同视为同一个。
效果如下图所示。

Public Sub GenerateCombinationsDim sourceStr As StringDim result As CollectionDim outputRow As Integer' 初始化参数sourceStr = "ABCDEF" ' 可替换为任意6个字符Set result = New CollectionoutputRow = 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 resultActiveSheet.Cells(outputRow, 1).Value = ItemoutputRow = outputRow + 1Next' 显示统计信息With ActiveSheet.Range("B2").Value = result.Count.Columns("A:B").AutoFitEnd WithMsgBox "成功生成 " & 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 Thenresult.Add currentExit SubEnd If' 递归生成组合Dim i As IntegerFor i = startPos To Len(source) - remain + 1GetCombinations source, remain - 1, _current & Mid(source, i, 1), _i + 1, resultNextEnd Sub以下就是运行结果。

3. 关闭对话框。
来源:Excel学习世界
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!