使用多列中的数据在Excel中创建唯一行

时间:2013-01-22 19:59:56

标签: excel

如果数据我有多列,我需要为每个LOC1和&创建唯一的行。 LOC2: 模拟图片:

LOC 1 LOC 2 FC      AMT Type
CUN   ABQ   LLA0PNR 10  AN1
CUN   AUS   BLA0PNR 15  NR2
CUN   GSP   QLA0PNR 16  AN1
CUN   DAL   HLA0PNR 14  NR2
CUN   HOU   WLA0PNR 13  AN1
CUN   ELP   RLA0PNR 12  AN3
CUN   MDW   OLA0PNR 11  NR4

创建:

CUN ABQ LLA0PNR 10  AN1
CUN ABQ BLA0PNR 15  NR2
CUN ABQ QLA0PNR 16  AN1
CUN ABQ HLA0PNR 14  NR2
CUN ABQ WLA0PNR 13  AN1
CUN ABQ RLA0PNR 12  AN3
CUN ABQ OLA0PNR 11  NR4
CUN     AUS     ......  ..      ...
CUN     AUS     ......  ..      ...

将为每个LOC1和LOC2构建一行,其中FC,AMT,Type中的所有值都是常量。

2 个答案:

答案 0 :(得分:0)

看起来你想要这两个表的'Cartesian Product'。

Excel选项

这是我的示例数据(由于我对数据输入很懒,因此缩短了: - )

Starting Data

  1. 创建一个'计数器'列,每行增加1。

  2. 使用excel公式确定table1和table2中使用哪一行

  3. 使用excel函数'INDEX'根据(2)
  4. 中的行#s从每个表中提取内容

    enter image description here

    如果你想获得更好的,你可以改变公式,以清除所有21(21 = 7 * 3)条目,如=IF(Counter>(B14*C14),"",--do stuff--)

    这是example Excel workbook,展示了它们如何结合在一起。

    SQL选项

    虽然我知道这是一个很好的问题,但如果我没有提醒你找到合适的工具,我就会失职。如果可以在这些表上运行SQL,请使用:

    SELECT t1.*, t2.* FROM table1 t1, table2 t2;
    

    SQL的默认连接是笛卡尔积,因此一切正常。这比说服Excel去做更优雅。

答案 1 :(得分:0)

很好的解决方案,没有VB脚本,非常感谢

以下是上例中使用的公式:

(1)= FLOOR((A17-1)/ $ C $ 14,1)+1

(2)= MOD(A17-1,$ C $ 14)+1

(3)= INDEX($ A $ 3:$ B $ 9,$ B17,F $ 14)

(4)= INDEX($ A $ 3:$ B $ 9,$ B17,$ 14)

(5)= INDEX($ D $ 3:$ F $ 5,$ C17,H $ 14)

(6)= INDEX($ d $ 3:$ F $ 5,$ C17,I $ 14)

(7)= INDEX($ d $ 3:$ F $ 5,$ C17,J $ 14)