excel生成笛卡尔积的形式
-
由于要在数据库中插入一系列的数据,故用到excel来进行处理
-
首先我们有两列数据,如图左边标红部分,右边为最终效果:
-
创建辅助列D列,主要用于后面的快速填充,操作方法:在D2中输入1,选择“填充”功能的等差序列,终止值为A列行数与B列行数的乘积,此处为18x55=990
-
在E列中编辑公式,E2单元格中输入:
=INDEX(A:A,INT((ROW(A2)-2)/(COUNTA(B:B)-1))+2)
公式解读:
index函数用于返回a列中某行的值 ,所以重点在计算正确的返回行数,Row()用于返回当前行的行数,counta用于计算当前列中有数据的行数,因此我们利用两数相除取整的方法实现正确位置的读取,其中标粗部分可根据实际情况进行调整,主要取决于标题行或数据上面的行数。
-
双击E2右下角的黑十字符号进行自动填充,现在体会到辅助列的作用了吧,否则需要手工拖放,如果数据量大的话特别不方便。
-
同理在F2列中输入以下公式:
=INDEX(B:B,MOD(ROW()-2,COUNTA(B:B)-1)+2)
公式解读:
基本原理同上,不过此处使用了MOD取余,而非int取整,大家好好体会一下,主要是因为需要多次循环的原因,而不是像E列中是向下递加的。
-
双击F2右下角的黑十字符号进行自动填充,实现我们的最终效果。