最后收到这么一个求助,需要找出两列内容的全部组合,懂点编程或者数据分析的同学应该知道这玩意叫做“笛卡尔积”! 那么Excel中要如何处理这种需求呢?
处理方法有很多,我们简单写几种
?65函数处理法
这里用到了一点基础知识,就是一行和一列组合,得到的结果就是一个二维结果,分别对应组合,也就是本题目的要求,如果公式看不懂,也没有关系,可以学习下面的其他方法!
TOROW: 区域转成一行 ,TOCOL: 区域转成一列
【Excel两列全部组合,5种方法,笛卡尔积!】
=TOCOL(A1:A3&TOROW(B1:B4))
记刹僮鞣?/b>
利用复制-选择性粘贴-转置功能把其中的一行转成一行,然后输入下面的简单公式,主要一下相对引用,这点很重要,0基础的同学,可以阅读 引用方式
=E$1&$D2
▲ 遗漏了4,了解用法即可
第一步处理完,下一步我们怎么把区域转一列呢? 也是使用技巧操作! 具体看动画演示! 这里用的原理是循环迭代!
▼ 动画演示
如果技巧看不懂,也可以使用SQL,更加简单一些!
⊿QL解法
关于如何Excel中如何写SQL就不说了,方法比较多了,这里用的的是【数据】-【现有链接】的方式!
select * from [DT$A1:A3],[DT$B1:B4]
SQL如果查询多个表 , 多个表之间没有限定关系,那么结果就是笛卡尔积!
当然实现笛尔卡积,VBA、DAX和PQ都可以实现,下面我们使用VBA实现一下,其实就是简单的双循环 , 非常基?。?
╒BA解法
比较简单基础,我们循环即可 , 不使用数组,如果数据量较大,可以考虑使用数组来提高运行速度!
PQ中的处理方法也是使用链接和SQL基本差不多!
≒owerQuery处理
PQ中也有类似VBA的循环,比如类似的双循环可以使用List.TransformMany 如果没有空值直接x&y 就是我们想要的结果,处理空值和类型问题,所以看上去长了点 , 其实是几种方法中最简单的!当然你也可以使用合并查询中的“完全外部”来处理也是可以的!
就说这么多吧,希望能给你带来灵感吧!