标题:excel A列 B列互相组合的方法

-------------------------------------------------------------------------------------------------------------------------------

时间:2009/9/11 16:20:19

-------------------------------------------------------------------------------------------------------------------------------

内容:

经常碰到需要将excel中 两列数据 相互交叉组合,类似排列组合的全排  就是a列的每一个数据去和b列每一个组合

 

现在把函数写下来 很方便  向下填充就行了  里面的数字 5 就是代表a列有多少行 其他的不用理会

自用把函数写到c列 就行了 

 

查看更多精彩图片

=INDEX(A:A,MOD(ROW(A5),5)+1)&INDEX(B:B,INT(ROW(A5)/5))

 

 来分析下这个函数

 

可以从图片中看出c列是由 2字符组成  前半边是不断的顺序读取 a1到a5的值   半边是1重复 a到e的个数  次 例如这里就是重复5次

 

先看左边的函数  从里往外看 row(a5)这个很简单  得到一个数字5, row函数是返回元素的行号,

                再看外面那个mod(row(5),5) 这个就是比较经典的地方了 mod是取余数

                因为公式向下填充的时候 row(a5)的数字是逐步增加一的,再除以一个5那么余数就是 从1变化到5 再回到1 循环下去  这就是为什么c行的左边从来都是a循环到e的原因 不断的顺序读取 a1到a5的值 

 

右边的比较简单 就是把每行的数重复 a列的行数 听起来拗口 其实很简单

先用了一个row(a5)获得一个逐步增加的自然数(公式向下填充的时候 a5会变a6) 然年后 再除以5 再用个int 就变成了重复5次才变化一次的函数

 

最后总结下 2个组合函数的用法  想获得一个a列的的  n个 元素不断循环的 函数是 mod(row(an),n)

获得一个重复n次 再读取下一个数字的函数是 int(row(an)/n)

 

okay就这么简单 以后再碰到 excel中 2列 数 相互交叉 组合 就用这个函数把 复制 到c列 向下自填充 改下函数里的数字就可以解决了

经常碰到需要将excel中 两列数据 相互交叉组合,类似排列组合的全排  就是a列的每一个数据去和b列每一个组合

 

现在把函数写下来 很方便  向下填充就行了  里面的数字 5 就是代表a列有多少行 其他的不用理会

自用把函数写到c列 就行了 

 

查看更多精彩图片

=INDEX(A:A,MOD(ROW(A5),5)+1)&INDEX(B:B,INT(ROW(A5)/5))

 

 来分析下这个函数

 

可以从图片中看出c列是由 2字符组成  前半边是不断的顺序读取 a1到a5的值   半边是1重复 a到e的个数  次 例如这里就是重复5次

 

先看左边的函数  从里往外看 row(a5)这个很简单  得到一个数字5, row函数是返回元素的行号,

                再看外面那个mod(row(5),5) 这个就是比较经典的地方了 mod是取余数

                因为公式向下填充的时候 row(a5)的数字是逐步增加一的,再除以一个5那么余数就是 从1变化到5 再回到1 循环下去  这就是为什么c行的左边从来都是a循环到e的原因 不断的顺序读取 a1到a5的值 

 

右边的比较简单 就是把每行的数重复 a列的行数 听起来拗口 其实很简单

先用了一个row(a5)获得一个逐步增加的自然数(公式向下填充的时候 a5会变a6) 然年后 再除以5 再用个int 就变成了重复5次才变化一次的函数

 

最后总结下 2个组合函数的用法  想获得一个a列的的  n个 元素不断循环的 函数是 mod(row(an),n)

获得一个重复n次 再读取下一个数字的函数是 int(row(an)/n)

 

okay就这么简单 以后再碰到 excel中 2列 数 相互交叉 组合 就用这个函数把 复制 到c列 向下自填充 改下函数里的数字就可以解决了