分享

两列数据两两相乘,用Excel函数实现‘笛卡尔积’

 excel05 2019-09-11

两列数据两两相乘,用Excel函数实现‘笛卡尔积’

要求:A、B两列数据两列相乘,变成C列数据。


1、生成B列数据个数的序列,如例子中B列数据有6个,则生成序列,如下图。

公式为:=ROUNDUP(ROW()/(COUNTA(B:B)),0)-1

两列数据两两相乘,用Excel函数实现‘笛卡尔积’

2、在上面的公式中套一个offset函数用来偏移数据。

公式为:

=OFFSET($A$1,ROUNDUP(ROW()/(COUNTA(B:B)),0)-1,,)

两列数据两两相乘,用Excel函数实现‘笛卡尔积’

3、根据B列生成1,2,3,4,5....这样的序列数据,如上面B列有6个数据,则生成序列123456 123456...

公式为:

=IF(MOD(ROW(),COUNTA(B:B))=0,COUNTA(B:B),MOD(ROW(),COUNTA(B:B)))

两列数据两两相乘,用Excel函数实现‘笛卡尔积’

4、使用indirect函数引用B列数据

公式为:

=INRECT('B'&IF(MOD(ROW(),COUNTA(B:B))=0,COUNTA(B:B),MOD(ROW(),COUNTA(B:B))))

两列数据两两相乘,用Excel函数实现‘笛卡尔积’

5、将上面的步骤合起来,成为一条公式,下拉得出最终结果。

=IF(ROW()>COUNTA(A:A)*COUNTA(B:B),'',OFFSET($A$1,ROUNDUP(ROW()/(COUNTA(B:B)),0)-1,,)&INDIRECT('B'&IF(MOD(ROW(),COUNTA(B:B))=0,COUNTA(B:B),MOD(ROW(),COUNTA(B:B)))))

两列数据两两相乘,用Excel函数实现‘笛卡尔积’

该问题有更加简洁的公式,此火车公式仅供参考。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多