如何不用函数、vba在excel中生成10选5的所有排列组合?

在Excel中列举排列组合也是一个比较常见的需求。

 

比如给你0到9十个数字,列出从中选择5个数字的所有排列。

 

上述问题如果用函数或者vba来做,都会比较复杂,而且如果不是经常做这个,一时半会是做不出来的,要花不少时间去思考。

 

今天分享一种快速简单又高效的生成所有排列的方法,该方法不仅适用于数字也适用于任意字符串。

 

接下来,让我们一起来看看是如何实现的?

 

1.构造数据源,如下所示:

 

 

2.依次隔一列复制粘贴5列相同的数据,如下所示:

 

 

3.单击A1单元格,创建数据透视表,勾选【将此数据添加到到数据模型】(最关键的一步),如下所示:

 

 

4.然后依次单击C1、E1、G1、I1单元格,创建数据透视表,保持【创建数据透视表】对话框中的其它选项不变,勾选【将此数据添加到到数据模型】,如下所示:

 

 

5.最后任意选择其中一个数据透视表,单击数据透视表字段中的全部,可以看到5个单元格区域都在数据透视表列表中,如下图所示:

 

 

6.然后依次将【数据】字段都拉到数据透视表的行区域,设置数据透视表的【报表布局】为【以表格形式显示】,然后勾选【重复所有项目标签】,如下所示,10选5的所有排列数都出来了。

 

 

7.由于10选5的排列数是不能有重复出现的,最后添加如下的数组公式把每一行的数据不重复的筛选出来即可。

=MAX(COUNTIF(A2:E2,A2:E2))=1

如下图所示

通过上述的步骤,就可以生成10选5的所有排列数。

       

发表评论