![Excel:比较不同工作表中不完全匹配的字符串值](https://linux22.com/image/1594166/Excel%EF%BC%9A%E6%AF%94%E8%BE%83%E4%B8%8D%E5%90%8C%E5%B7%A5%E4%BD%9C%E8%A1%A8%E4%B8%AD%E4%B8%8D%E5%AE%8C%E5%85%A8%E5%8C%B9%E9%85%8D%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%80%BC.png)
我有一本包含两张工作表的工作簿,每张工作表都包含人员列表。如果工作表 1 中的某个人还出现在 Sheet 2 上,我需要能够在 Sheet 1 上标记它们。我添加了一个列,我将在其中插入一个公式,该公式将返回 Sheet 2 上任何人的某种值。
只需使用VLOOKUP
公式即可完成这项简单的任务。但问题在于:工作表 1 上的大多数姓名都以Last Name, First Name, Middle Initial
格式显示(有些姓名不使用中间名首字母),而工作表 2 上的所有姓名都只显示Last Name, First Name
(尽管我看到有几个姓名带有中间名首字母)。
我想要看到的示例:
Sheet 1 In Sheet 2? | Sheet 2
-----------------------------------------------------------
Smith, John M. YES | Smith, John
White, Mary S. | Black, Phil
Green, Joe L. | Doe, Jane T.
Doe, Jane T. YES | Jones, Mike
Jones, Mike YES | Adams, Ann
Brown, Bob C. YES | Shaw, Frank
Gray, Carl R. | Brown, Bob
Adams, Ann B. YES | Hall, Tim
有没有办法使用该VLOOKUP
功能而不拉精确的值?显然所有名称都匹配几乎完全不同,中间首字母是唯一的区别(至少我见过)。或者还有其他更有效的方法来做到这一点?
(是的,存在多人同名的风险,但现在我忽略了这个变量)
答案1
我正在回答我自己的问题,因为我最终找到了解决方案。作为一些额外的背景信息,工作表 1(标题为“主要”)包含访问过某个组织的人员列表,以及适当的联系信息,以便对他们的访问进行满意度调查。但是,任何访问者雇员必须将该组织的所有员工从列表中删除,以避免调查结果出现偏差。工作表 2(标题为“员工”)包含组织所有现任员工的列表。因此,我们的想法是比较每个列表中的姓名,并标记出现在主工作表上的任何员工。主工作表是大多数访问者使用中间名首字母的工作表,而员工工作表是大多数人没有中间名首字母的工作表。
幸运的是,我注意到被列为访客的员工的格式与员工表上的格式相同:没有中间名首字母。因此,他们的名字在两张表上完全匹配,我不确定这是否会起作用。我最终INDEX MATCH
在新列中使用了一个函数,该函数从员工表中提取姓名并将其显示在主表上相应的访客姓名旁边,从而向我展示了要删除哪些人。
作为参考,名称字段位于两张表的 E 列中,我最终得到以下公式,从第 2 行开始,因为第 1 行包含表标题。
=INDEX(Employees!E:E,MATCH(E2,Employees!E:E,0))
至少对于这个特定项目而言,这似乎已奏效。正如我之前所说,如果每张表上的员工姓名格式不同,则此方法无效。