比较多列与多列2张纸,如果数据匹配,则返回不同的列

时间:2019-03-13 18:30:42

标签: excel excel-formula vlookup

我有2张Excel工作表。一栏包含客户信息,发货地区和销售,一栏包含客户信息和地理编码信息(长/纬度)。我想做的是将Sheet2的CustomerID,LocationID,CustomerName列与相同名称的Sheet1列进行比较,如果它们匹配,则将经度,纬度列中的数据从Sheet2移到Sheet1上的相应列。我需要编译所有信息才能上传到地图系统。我不是Excel专家,下周将开始更高级的课程,并且我一直在使用vLookups,但从来没有能够将其用于此enter image description here。我应该使用其他东西吗?

在下面的示例中,第一个应该匹配并插入Sheet1,第二个不应该匹配。我们有大约7,000条记录要解析。

Sheet1

CustomerID LocationID CustomerName经度纬度Sales $发货 1234 1 Smith 125 DFW

4567 1琼斯450 DFW

Sheet2

CustomerID LocationID CustomerName经度纬度地址城市

1234 1史密斯25.xxx -97.xxx 1234主达拉斯

4567 2 Jones 25.xxx -97.xxx 452 Comm Buda

2 个答案:

答案 0 :(得分:0)

这是一个复杂的查询,需要花费一些时间才能计算出14K(7K的经纬度)数据单元。

根据您提供的图像,将其放入Sheet1!D2中,然后向右拖动并向下填充。

=IFERROR(INDEX(Sheet2!D:D, AGGREGATE(15, 7, ROW($1:$9999)/((Sheet2!$A:$A=$A2)*(Sheet2!$B:$B=$B2)*(Sheet2!$C:$C=$C2)), 1)), "")

您也可以尝试SUMIFS。仅当三个值组合在Sheet2中是唯一的时这才起作用,因此可能需要COUNIFS,但如果没有它,它将更快。

=IF(COUNTIFS(Sheet2!$A:$A, $A2, Sheet2!$B:$B, $B2, Sheet2!$C:$C, $C2)=1, SUMIFS(Sheet2!D:D, Sheet2!$A:$A, $A2, Sheet2!$B:$B, $B2, Sheet2!$C:$C, $C2), "")

答案 1 :(得分:0)

使用magix IndexMatch组合,例如在D2中输入以下公式:

{=INDEX(Sheet2!D:D,MATCH(A2&B2&C2;Sheet2!A:A&Sheet2!B:B&Sheet2!C:C,0))}

在单元格E2中,将公式放在下面:

{=INDEX(Sheet2!E:E,MATCH(A2&B2&C2;Sheet2!A:A&Sheet2!B:B&Sheet2!C:C,0))}

请注意,它们都是数组公式,需要通过 Ctrl Shift Enter

进行确认

另一种可能的方式是使用=SUMPRODUCT(),例如像在单元格D2中那样:

=IFERROR(INDEX(Sheet2!D:D,SUMPRODUCT((A3=Sheet2!$A$1:$A$3)*(B3=Sheet2!$B$1:$B$3)*(C3=Sheet2!$C$1:$C$3)*ROW()),0),"")

请注意,这不是数组公式,因此在大数据上应该更快!