【发布时间】:2014-10-01 19:47:12
【问题描述】:
我正在使用 excel 并尝试查找一个单元格的一部分是否与列表中的任何内容匹配。我正在尝试提取单元格的那部分作为我的结果。
我正在使用的公式是:
{=INDEX($A$1:$A$10,MATCH(1,COUNTIF(B1,"* "&$A$1:$A$10&"*"),0))}
注意:必须将星号隔开以避免斜体
A1 到 A10 是我引用的列表,B 列中的任何内容都是我在列表中搜索的部分
问题是公式返回列表中最常见的值,而不是列表中最具体的部分。
例子:
A(list) B (formula result) (desired Result)
1 ABC sdfjABCsdhfs ABC ABC
2 ABC123 asdfasdfa #N/A #N/A
3 RBZ456 agfhABC1234shj ABC ABC1234
4 ABC1234 wuefhiuvbsiue #N/A #N/A
5 DEF123 dfsghABC123sdf ABC ABC123
在 B 列中找到的最大结果是我希望找到的结果。不是最低公分母。
任何建议都会很棒!
提前致谢。
编辑:加了括号,是数组公式
【问题讨论】:
-
您的公式不返回“最常见”值,也没有返回“最小公分母”。相反,它会返回与它找到的条件匹配的 first 条目。在这种情况下,“最大”是什么意思?你怎么能有一个字母数字字符串的“最大值”?你的意思是“最长”吗?或者也许是列中满足您测试的最后一个示例?
-
是的,我的意思是与列表中的内容匹配的最长可用文本字符串。 B5 包含 A 列(列表)中的 ABC123,但由于 B3 包含也在列表中的 ABC1234,因此返回 ABC1234 是正确的。
-
按长度排序列表似乎有效。我会做一些仔细检查以确保。谢谢你的提示。反正有没有通过代码来做到这一点而不进行排序?我不知道这种类型的公式只是在列表中查找并在第一个匹配项处停止,而不是搜索最具体的匹配项。
标签: excel indexing max match countif