Table of contents
如果你有一个文本列表,并想根据列表搜索单元格并返回数值,你需要建立一个公式,因为Excel没有提供简单的方法。 在这篇文章中,我已经解决了这个问题,并提供了五个不同的公式来执行这个操作,这样你就可以根据你的情况选择一个完美的公式,如果单元格包含某些文本,则返回数值从一个列表中。
下载实践工作手册
你可以从下面的按钮中下载我在本文中使用的工作手册,自己用它来练习。
如果单元格包含来自List.xlsx的文本
本文使用的函数介绍
我在这里使用的公式使用了以下函数。
- COUNTIFS功能。
该函数对符合多个条件的单元格进行计数。 其语法为 COUNTIFS功能 详见下文。
=COUNTIFS (range1, criteria1, [range2], [criteria2], ...)
- 范围1 - 要评估的第一个范围。
- 标准1 - 在第一个范围内使用的标准。
- range2 [可选]: 第二个范围,就像范围1一样。
- 标准2 [可选]。 在第2个范围内使用的标准。 该功能最多允许127个。 范围和标准对 .
- TEXTJOIN功能。
该函数用一个分隔符连接文本值。 TEXTJOIN功能 详见下文。
=TEXTJOIN (delimiter, ignore_empty, text1, [text2], ...)
- 分隔符。 该函数要合并的文本之间的分隔符。
- ignore_empty: 这个参数指定函数是否忽略空单元格。
- text1: 第1个文本值(或范围)。
- text2 [可选]: 第2个文本值(或范围)。
- MATCH功能。
该函数获取一个数组中某项的位置。 其语法为 MATCH功能 详见下文。
=MATCH (lookup_value, lookup_array, [match_type])
- lookup_value: 中要匹配的值 lookup_array .
- lookup_array: 一个单元格的范围或一个数组的引用。
- match_type [可选]。 1=完全或次小,0=完全匹配,-1=完全或次大。 默认情况下,match_type=1。
- INDEX功能。
该函数根据位置获取列表或表格中的值。 语法为 INDEX功能 详见下文。
=INDEX (array, row_num, [col_num], [area_num])
- 阵列。 单元格的范围,或一个数组常数。
- row_num: 参考中的行位置。
- col_num [可选] : 参考文献中的列位置。
- area_num [可选]。 应该使用的参考范围。
- IFERROR函数。
该函数捕获并处理错误。 其语法为 IFERROR函数 详见下文。
=IFERROR (value, value_if_error)
- 价值。 要检查错误的值、参考值或公式。
- value_if_error。 如果发现错误要返回的值。
- 搜索功能。
该函数获取文本在字符串中的位置。 其语法为 搜索功能 详见下文。
=SEARCH (find_text, within_text, [start_num])
- 查找文本 : 这个参数指定了要查找的文本。
- within_text: 这指定了在哪里可以找到文本。
- start_num [可选]。 通过这个,你将指定--从文本字符串中的哪个位置开始计算指定文本的位置。 可选,默认为从左数1。
5个公式:如果单元格中包含列表中的某些文本,则在Excel中返回值
我将尝试在这个数据集中介绍一个真实的例子。 这里代表了一些饮料。 薯片 , 冷饮 ,以及 谷物 是这个数据集中的三类饮料。 在一个名为 所有产品 ,饮料的名称和类别是联系在一起的。 其中有两个类别。 薯片 和 冷饮 属于 "不合格",也属于 "不合格"。 列表 列。 根据 列表 栏,所需的输出将显示在第二栏。
1.结合COUNTIF, IF & OR函数,如果一个单元格包含一个列表中的文本,则返回值
如果你想在匹配后返回整个单元格的值,这是最有用的公式。
在这里,我获取了以下单元格的值 产品 匹配的 列表 列标准,并向他们展示了 基于该清单的产品 列。
该公式如下。
=IF(OR(COUNTIF(B5,"*"&$E$5:$E$6&"*")),B5,"")
公式分解。
=IF(OR(COUNTIF(B5,"*"&$E$5:$E$6&"*")),B5,"")
在这里, 星号标志 ( )是一个通配符。 它搜索到的是" 薯片 "和 "冷饮 "内的子串 细胞B5 这就是 "
拉夫饼干 - 薯片
"
字符串。
-
=IF(OR(COUNTIF("Ruffles - Chips",*Chips*, *Cold Drinks*)), B5, "" )
ǞǞǞ COUNTIF 函数对每个子串的匹配都返回一个。 由于 "
薯片
"
被发现在 细胞B5 ,它返回{ 1:0 }.
=if(or({1;0}), b5, "")
ǞǞǞ 或 函数返回一个 为真 的值,如果任何参数是 为真 在这种情况下,一(1)= 为真 .
=IF(TRUE, "Ruffles - Chips", "")
由于 基金会 函数的值是 为真 ,它返回第一个参数,即期望的输出。
最后 输出 : 拉夫饼干 - 薯片
请注意。
这里,我显示了匹配的单元格,但你可以通过改变以下内容来显示你想要的任何输出 基金会 用你想要的输出功能输出。
=IF(OR(COUNTIF(B5, "*"&$E$5:$E$6& "*") ),TRUE,FALSE)
阅读更多。 如果单元格中含有单词,则在Excel中赋值(4个公式)。
2.使用IF-OR与搜索函数的组合来返回具有多个条件的值
在这里,我获取了以下单元格的值 产品 匹配的 列表 列标准,并向他们展示了 基于该清单的产品 列。
该公式如下。
=if(or(isnumber(search($e$5,b5)),isnumber(search($e$6,b5)),b5,")
公式分解。
=if(or(isnumber(search($e$5,b5)),isnumber(search($e$6,b5)),b5,")
ǞǞǞ 搜索 函数搜索了 列表 栏目中的 细胞B5 ......对于" 薯片 "它返回 11 是子串的起始位置。 对于 冷饮 ,它返回一个错误。
=if(or(isnumber(11),isnumber(search(#value))),b5," ")
ǞǞǞ 身份证号码 功能转换 11 进入 为真 值,并将误差计入 失败 价值。
=if(or(true,false)),b5,"" )
ǞǞǞ 或 函数返回一个 为真 的值,如果任何参数是 为真 因为有一个 为真 参数,它还返回 为真 在这种情况下的值。
=IF(TRUE, "Ruffles - Chips",")
由于 基金会 函数的值是 为真 ,它返回第一个参数,即期望的输出。
最终产出:松饼 - 薯片
请注意。
- 在这里,我显示了匹配的单元格,但你可以通过改变以下内容来显示你想要的任何输出 基金会 用你想要的输出功能输出。
=if(or(isnumber(search($e$5,b5)),isnumber(search($e$6,b5)),1,0)
- 这个公式的主要好处是,这不是一个数组公式,但如果你有很多单元格在 列表 因为你必须输入每个单元格的 列表 手动。
- 对于区分大小写的情况,我们可以使用下面的公式,基于 查找功能 而不是 搜索 功能。
=if(or(isnumber(find($e$5,b5)),isnumber(find($e$6,b5)),b5,")
阅读更多。 淘宝网上有很多卖家,他们都是在淘宝网上买的,但是淘宝网上有很多卖家,他们都是在淘宝网上买的。
类似的阅读。
- 如何在Excel中对包含特定文本的单元格进行求和(6种方法)
- 在Excel中,如果单元格中含有文字,就使用VLOOKUP
- 如何在Excel范围内查找文本&返回单元格引用(3种方法)
3.使用TEXTJOIN公式返回另一个单元格中的值,如果一个单元格有一个列表中的文本的话
这个公式在你必须显示什么字符串或字符串从 列表 匹配。
在这里,我从以下方面获取了单元格值 列表 列,它们与 产品 并将其显示为来自的匹配值 列表 列。
该公式如下。
=TEXTJOIN(",",TRUE,IF(COUNTIF(B5, "*"&$E$5:$E$6& "*"), $E$5:$E$6,"))
公式分解。
=TEXTJOIN(", ",TRUE,IF(COUNTIF(B5, "*"&$E$5:$E$6& "*"),$E$5:$E$6,")
在这里, 星号标志 ( )是一个通配符。 它搜索到的是" 薯片 "和 "冷饮 "在单元格B5内的子串是" 拉夫饼干 - 薯片 "字符串。
TEXTJOIN(",",TRUE,IF(COUNTIF("Ruffles - Chips",*Chips*, *Cold Drinks*),$E$5:$E$6,"))
ǞǞǞ COUNTIF 函数为每个子串匹配返回一个。 由于" 薯片 "见于 细胞B5 ,它返回{ 1:0 }.
textjoin(", ",true,if({1;0},$e$5:$e$6,"))
ǞǞǞ 基金会 函数只返回" 薯片 "的值,因为它的参数中只有第一个值是1 = 真 .
TEXTJOIN(", ",TRUE,{"Chips";""})
ǞǞǞ 文本编辑器(TEXTJOIN 函数在这里没有做任何事情,因为只有一个值从 列表 如果有许多值需要匹配,它将返回所有的值,并在它们之间用逗号(,)作为分隔符。
最终产出: 芯片
阅读更多。 在Excel中,如果单元格中包含文本,则在另一个单元格中添加文本
4.使用INDEX MATCH公式在单元格包含特定文本时返回数值
这是对 文本编辑器(TEXTJOIN 这个公式还显示了从一个或多个字符串的 列表 匹配。
在这里,我已经从以下方面获取了单元格值 列表 列,它们与 产品 并将其显示为来自的匹配值 列表 列。
该公式如下。
=IFERROR(INDEX($E$5:$E$6, MATCH(1, COUNTIF(B5, "*"&$E$5:$E$6& "*"), 0),""
公式分解。
=IFERROR(INDEX($E$5:$E$6,MATCH(1,COUNTIF(B5, "*"&$E$5:$E$6& "*"),0)), "")
在这里, 星号标志 ( )是一个通配符。 它搜索到的是" 薯片 "和" 冷饮 " 内的子串 细胞B5 这就是" 拉夫饼干 - 薯片 "字符串。
IFERROR(INDEX($E$5:$E$6,MATCH(1,COUNTIF("Ruffles - Chips",*Chips*,*Cold Drinks*),0)),""
ǞǞǞ COUNTIF 函数为每个子串匹配返回一个。 由于" 薯片 "见于 细胞B5 ,它返回{ 1:0 }.
iferror(index($e$5:$e$6,match(1,{1;0}),0)), "")
ǞǞǞ 匹配 函数返回一个,因为只有一个值" 薯片 ",符合要求。
iferror(index($e$5:$e$6,1),"" )
ǞǞǞ 索引 函数返回" 薯片 ",因为它是在的价值。 列表 阵列。
IFERROR("Chips",")
在这里, 误差(IFERROR 函数用于处理在没有匹配的情况下会出现的错误。
最终产出: 芯片
请注意。
这里,我显示了匹配的单元格,但你可以通过改变以下内容来显示你想要的任何输出 基金会 用你想要的输出功能输出。
阅读更多。 Excel公式:如果单元格中包含文本,则在另一个单元格中返回值
5.应用EXACT函数与IF和TEXTJOIN
这是在不同情况下对这个问题的另一个解决方案。 在这里,我从List列中获取了一个成员的单元格值。 我们将这个值与Product进行匹配,并在一个单元格中显示所有的匹配值。
该公式如下。
=textjoin(", ",true,if(exact(c5:c14,$f$5),b5:b14,"))
公式分解 :
exact(c5:c14,$f$5)。
这一部分检查哪些值的 范围C5:14 相配 细胞F5 并返回 为真 和 失败 .
if(exact(c5:c14,$f$5),b5:b14,"" )
这一部分返回名称,我们得到 为真 .
textjoin(", ",true,if(exact(c5:c14,$f$5),b5:b14,"))
最后,这将所有的名字连接起来,每个名字后面有一个逗号。
速记
这里所有的公式(除了第二个)都是数组公式。 这意味着你必须按 按Ctrl+Shift+Enter键 而不是只按 进入 但是,如果你是一个 办公室365 用户,那么你就可以通过只按 进入。
总结
在这篇文章中,我缩小了各种情况下的不同公式,以在单元格包含列表中的特定文本时返回值。 我希望你能找到解决问题的方法。 如果你有任何建议或问题,请留下评论。 此外,你可以访问我们的 博客 了解更多此类文章。