场景一:排序
从将A列里的5个地区中取出2个地区,列出所有可能,不考虑排序,也就是河北-山西和山西-河北是2种组合结果(排列:指从给定个数的一组数据中取出指定个数的元素进行排序,考虑排序。)
5个地区,每个地区有4种组合可能,不考虑排序,也就是5*4=20(种)可能。
Excel中有对应的函数求排序数:=PERMUT(元素总数,取的个数)
01 思路:使用POWER QUERY产生笛卡尔积表,然后删除值相同的即可
注:POWER QUERY是Excel2016及以上自带的插件,主要功能是做数据处理;笛卡尔积表可以简单理解为表A和表B两个表相乘,得到的一张表(所有的可能)
02 步骤:
第一步:将数据导入POWER QUERY(简称pq);导入方式有很多种,这里使用来自表格/区域,进入pq编辑器
第二步:将表1复制(一般做笛卡尔积表的时候会有2张表,第2张表按照第一张的方式导入pq即可,这里的话,需要将表1复制做为第2张表)
第三步:在表1里添加自定义列【=表1(2)】
第四步:展开地区2 (table),笛卡尔积表就生成了
第五步:删除2列值相同的行:可以通过非重复值计数的结果进行判断,如果值为1,是值相同的,否则是值不同的,筛选留下值为2的
第五步:删除非重复计数列,将数据加载到Excel
关闭并上载:会将每个查询以表的形式加载到Excel,一个查询一个新的工作表
关闭并上载至:可以选择显示方式,一般选择仅创建连接,后期需要用到哪里查询,加载那个查询即可,将【表1】以表的形式加载出来,我们的效果就实现了
场景二:组合
从将A列里的5个地区中取出2个地区,列出所有可能,考虑排序,也就是河北-山西和山西-河北是1种组合结果(组合:指从给定个数的一组数据中取出指定个数的元素进行排序,不考虑排序。)
5个地区,组合个数为4+3+2+1=10种组合可能,在这里就是排序数的一半
Excel中有对应的函数求组合数:=COMBIN(元素总数,取的个数)
01 思路:使用POWER QUERY对地区进行编号,产生笛卡尔积表,对2个表里的编号进行相减,值为0,说明值相同,需要删除,而值为正负各站一半,我们保留正或者负的,就是想要的结果
02 步骤:(重复的步骤大家参考场景排序)
第一步:将数据导入POWER QUERY
第二步:添加列-序号;【添加列】==》【索引列】==》【从1】
第三步:复制表1
第四步:在表1里添加自定义列【=表1(2)】,并且展开(table)
第五步:【索引】列-【索引.1】列
第六步:筛选值大于0(或者筛选值小于0)
第七步:删除多余的列,将数据加载到Excel中
亲身测试好用的方法哟,但是power query对版本有要求,大家有没有更好的方法呢?欢迎大家在评论区留言!!!