我的工作簿中有两张 Excel 表,如下所示
第 1 和第 2 页:
以下是两个表之间的字段关系
- EID 与 EmID 相同
- DepID 与 DependentID 相同
- DepDOB 与 DependentDOB 相同
我想将 EID 与 EmID 进行比较。如果匹配,则对 DepID 与 DependentID 进行另一次比较。如果 DepID 为空,则将 DepDOB 与 DependentDOB 进行比较。当所有这些都为真时,从 Sheet2 中获取 DependentFirstName 和 DependentLastName 并将其复制到 Sheet 1 中的新列中。
请参见下图了解我想要的结果。
输出:
请提供实现此目的的方法。如果必须结合使用 VLOOKUP 和 IF,请告诉我公式。这让我做噩梦 :(
答案1
按要求解决
按照您要求的方式执行此操作的一种简单方法是使用辅助列。假设工作表 1 看起来像您的输出示例,其中显示列 A:F,工作表 2 也显示 A:F。假设我们将 G 列用作每张工作表上的辅助列。
辅助列连接了三个比较值。因此,在每张表中,G2 将包含:
=A2&E2&F2
将公式复制到每张表的列中。然后比较这些值以找到所需的记录。
VLOOKUP 要求查找列位于数组的最左边。您可以使用 INDEX 加 MATCH 完成相同样式的查找,而 MATCH 没有此限制。工作表 1,C2 将包含:
=INDEX(sheet2!B:C,MATCH(G2,sheet2!G:G,0),1)
在 D2 中:
=INDEX(sheet2!B:C,MATCH(G2,sheet2!G:G,0),2)
将这些复制到列下。MATCH 查找与 Sheet 2 上的行匹配的键并返回相应的名称。
如果不想看到辅助列,可以将其隐藏。如果您好奇为什么与 DepDOB 关联的键看起来不像日期,那是因为它使用了 Excel 用来存储日期的内部表示。
更简单的解决方案
在这种情况下,您拥有填写记录中已包含的名字和姓氏字段所需的所有信息。您可以只解析 DepName 字段,而不是使用辅助列和查找。C2 将是:
=LEFT(B2,FIND(" ",B2)-1)
D2 将是:
=RIGHT(B2,LEN(B2)-FIND(" ",B2))