我为此苦苦挣扎了很长时间,却没有找到答案。我需要进行涉及部分匹配值的双重查找。如果我的单元格包含特定文本,我需要返回特定值。
例如,在下面显示的情况下,我在 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}
INDEX
并SMALL
设置名称和过滤器的第 n 个最小值,最终3,4 & 5
在所有white
s 的相邻单元格中找到数据。
編輯:
我已经包含了此解决方案,响应@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.