VBA宏结合唯一ID上的两个表

时间:2018-08-05 19:17:31

标签: excel vba

我在Excel工作簿中有两张纸。 第一张纸有

1)客户ID –每个客户的唯一值。

2)问题ID –每个问题的唯一ID

3)问题

            Customer ID     Question ID question        

            1               34              name        
            1               45              company 
            2               34              name        
            2               45              company     
            3               34              name        
            3               45              company     
            4               34              name        
            4               45              company     
            5               34              name        
            5               45              company     

第二张纸有三列

1)客户ID –每个客户的唯一值。

2)问题ID –每个问题的不合法ID

3)问题

            Customer ID     Question ID   Answer

            1                   34          Amy
            1                   45          GEICO
            2                   34          Steph
            3                   34          Anna
            3                   45          GEICO
            4                   34          Adam
            5                   34          Mark
            5                   45          AAA

在此工作表中,并非工作表1中的每个客户ID和问题ID在工作表2中都有答案

第3张预期产出

我想做一个vba宏来合并sheet1和sheet2并具有所有列。对于任何客户ID,如果没有问题的答案,则该字段应留空。

Sheet3中的预期输出

            Customer ID     Question ID    question     Answer

            1               34              name        Amy
            1               45              company     GEICO
            2               34              name        Steph
            2               45              company     
            3               34              name        Anna
            3               45              company     GEICO
            4               34              name        Adam
            4               45              company     
            5               34              name        Mark
            5               45              company     AAA

1 个答案:

答案 0 :(得分:1)

有几种方法可以在不编写代码的情况下完成。

下面是我头顶上的一种方法。其他包括内置查询编辑器(Get & Transform)或PivotTables以及其他访问consolidate data in multiple worksheets的方法。


Sheet2上,由于要匹配多个列,因此请先设置“帮助列”。在此示例中,公式为:=C2&D2从单元格B2开始。

img

...然后,在Sheet1(示例中为单元格E2)中,使用类似以下公式:

=IFERROR(VLOOKUP(B2&C2,Sheet2!$B$1:$E$9,4,FALSE),"")

img

两个公式都会根据需要进行复制或“拖拽”,很明显,该公式已调整为引用正确的单元格。

不需要第三张工作表,但是如果需要,可以将Sheet1复制到Sheet3


更多信息: