編輯:

編輯:

我为此苦苦挣扎了很长时间,却没有找到答案。我需要进行涉及部分匹配值的双重查找。如果我的单元格包含特定文本,我需要返回特定值。

例如,在下面显示的情况下,我在 A 列中有一个包含大约 40,000 个名字的列表。在 D 列中,我有一个包含大约 1,000 个姓氏的列表。A 列中的每个名字都包含其中一个姓氏。E 列包含与每个姓氏相关的查找值。

对于 A 列中的每个名字,我需要识别它包含哪个 D 列姓氏,并将该姓氏的关联值放在 B 列中。

例如,A2 中的名称为A Smith。它包含Smith,其关联值为3,因此3将进入 B2。

A3 也包含Smith,因此 B3 也获取关联的3

A4 包含White,其关联值为4,因此 B4 获取4

A5 也包含White,所以 B5 也获取4

忽略 E 列值有时与 A 列行号一致的巧合。还忽略我的示例和解释中大写字母并不总是一致的事实;在实际数据中,所有大写字母都一致。

我尝试使用=VLOOKUP(A2,"*"&B:C&"*",2,FALSE)但是没有作用。

在此处输入图片描述

fixer1234 的补充:作为一个抽象问题,这可能仍然令人困惑。让我提供一个常见的类比。

假设在你的社区里,每个家庭都有不同的(即独特的)姓氏,并且每个家庭成员都使用相同的姓氏。每个家庭都住在同一所房子里。

D 列列出了唯一姓氏。E 列列出了姓氏所属家庭的街道地址。D 列和 E 列是查找表。

A 列是社区中每个人的列表。每个家庭的每个成员都在该列表中,但姓名不遵循标准格式。有些是名字 + 姓氏,有些是首字母 + 姓氏,有些是姓氏 + 名字,等等。在 B 列中,您需要输入每个人的街道地址。

因此,任务是,对于每个 A 列名称,从 D 列中找到包含在 A 列名称中的姓氏。根据该姓氏,在 E 列中找到相关的街道地址,并将其作为结果返回到 B 列。由于每个家庭的多名成员都在 A 列列表中,因此所有这些家庭成员将显示相同的结果街道地址。

答案1

您的问题可以使用以下字符解决Wildcard

示例 1:查找数据时A smith

在此处输入图片描述

单元格中的公式C2

=IFERROR(VLOOKUP("A s*",A2:B6,2,FALSE),"")

笔记,Excel 将查找值"A s*"视为A第一个、SPACE第二个和s第三个字符,并用通配符括起来,通配符*假定多个字符。

示例 2:当找到两者的数据时A & B smith

在此处输入图片描述

单元格中的公式D2

=IFERROR(VLOOKUP("? s*",A55:B59,2,FALSE),"")

笔记,Excel 认为查找值"? s*"、通配符?为任意一个字符、SPACE第二个和s第三个字符,用通配符包装,*假定多个字符。

示例 3:当查找的数据时C, D & A white

在此处输入图片描述

单元格中的数组(CSE)公式E2

 {=IFERROR(INDEX($B$2:$B$6, SMALL(IF(ISNUMBER(SEARCH($F$1, $A$2:$A$6)), MATCH(ROW($A$2:$A$6), ROW($A$2:$A$6))), ROWS($A$1:A1))),"")}

注意:

  • 完成这个公式Ctrl+Shift+Enter 并填充。
  • 单元格F1有匹配的字符串。

现在让我解释一下这个公式是如何运作的:

SEARCH($F$1, $A$2:$A$6)变成,

 SEARCH("white", {"A smith"; "B smith; C white"; "D white E"; "A white"})

ISNUMBER(SEARCH($F$1, $A$2:$A$6))返回,

{FALSE; FALSE; TRUE; TRUE; TRUE}

ISNUMBER然后,SEARCH和的组合MATCH ROW变成,

IF({FALSE; FALSE; TRUE; TRUE; TRUE}, {1; 2; 3; 4; 5})

并返回

{FALSE; FALSE; 3; 4; 5}

INDEXSMALL设置名称和过滤器的第 n 个最小值,最终3,4 & 5在所有whites 的相邻单元格中找到数据。

編輯:

我已经包含了此解决方案,响应@fixer1234 对 OP 的附录,返回符合条件的每个名称的通用数字。

情况 1:

在此处输入图片描述


情况 2:

在此处输入图片描述


在单元格中输入此数组(CSE)公式B81,最后输入Ctrl+Shift+Enter并填写。

{=IF($F$80="","",IF(ISNUMBER(SEARCH($F$80,A81:A$85)),INDEX($D$81:$E$82,SMALL(IF($D$81:$D$82=$F$80,ROW($D$81:$D$82)-80),1),2),""))}

注意:

  • 在这一部分中ROW($D$81:$D$82)-80) -80是可编辑的,因为公式在Row 81,所以您需要根据需要进行调整。
  • 根据需要调整公式中的单元格引用。
  • 单元格F80有以下标准:case insensitive.

相关内容