在 Google 表格或 Excel 中,如何搜索相似的值?
In Google Sheets or Excel, how do I search for values that are similar?
我想做的是:
我有一个包含 3 个 sheet 的文件(tab1、tab2 和 tab3)。在每个列中,我都有列名称 "Company Name",在 tab1 中,我有两个特定的列,分别名为 'tab2' 和 'tab3',分别代表 sheet 的 tab2 和 tab3。我想做的是查询 sheet 的 tab2 和 tab3 以查看是否有公司名称与 tab1 的 'Company Name' 列中列出的公司名称 100% 匹配或相似。
示例:
Tab1
公司名称
很棒的鞋子
Tab2
公司名称
很棒
Tab3
公司名称
Greatness 鞋业公司
所以在上述情况下,我想输入 sheet tab1 中的 tab2 和 tab3 列,无论是否存在部分匹配,是或否。
在 Excel 或 Google 表格中执行此操作的最佳公式是什么?我在 Excel 中尝试过,但使用以下公式找到了精度非常低的部分匹配:
=IF(ISNA(VLOOKUP(B2 "*",'tab2'!$A:$A4,1,FALSE)), "No", "Yes")
google-spreadsheets has regex functions。
你可以试试:
- 将所有数据合并到一个 sheet(A 列)中以简化比较
- 使用公式:
=TEXTJOIN(";",1,FILTER(A:A,REGEXMATCH(A:A,A1) + REGEXMATCH(A1,A:A),A:A<>A1))
备注:
- 公式没有给出 100% 的匹配,您仍然需要人工查找拼写错误。
- 该公式将给出所有找到的匹配项除以分号
- 如果找不到匹配项,单元格将留空
您可以手动添加一些关键字到您的列表中,以便组合相似的公司名称:例如单词"Great",它匹配所有包含该单词的公司。
粘贴到B1并复制下来
您可以组合使用 ARRAYFORMULA
、ISNUMBER
和 SEARCH
。使用 Max 中的 "great shoes" 示例,如果您的数据位于 B1 中的 A 列中,您可以输入:
=ARRAYFORMULA(IF(ISNUMBER(SEARCH("Great",A:A))=TRUE,A:A,""))
因此,在 A 列中搜索字符串 "Great." 如果找到 =TRUE
,则返回该单元格中的任何内容。如果没有找到,FALSE
,则返回空白 ""
。不需要 "copy down." 您可以根据需要修改 "if true" 和 "if false" 语句来修改数据。您可以放置一个单元格引用来代替 "Great" 字符串。
您也可以以类似于 ISNUMBER(SEARCH
的方式使用 QUERY
。在 B1 你可以放 =QUERY(A:A,"Select A where A contains 'Great'",0)
您也可以使用 INDEX
和 MATCH
。如果您的数据在 B1 的 A 列中,您可以输入类似 =INDEX($A1:$A3,MATCH("Great",$A1:$A3,FALSE)).
的内容 您必须 "copy down" 每行的公式。如果要防止显示 #N/A 错误,请将其全部包装在 IFERROR
公式中。 =IFERROR(INDEX($A1:$A3,MATCH("Great",$A1:$A3,FALSE)),"")
.
我想做的是:
我有一个包含 3 个 sheet 的文件(tab1、tab2 和 tab3)。在每个列中,我都有列名称 "Company Name",在 tab1 中,我有两个特定的列,分别名为 'tab2' 和 'tab3',分别代表 sheet 的 tab2 和 tab3。我想做的是查询 sheet 的 tab2 和 tab3 以查看是否有公司名称与 tab1 的 'Company Name' 列中列出的公司名称 100% 匹配或相似。
示例:
Tab1
公司名称
很棒的鞋子
Tab2
公司名称
很棒
Tab3
公司名称
Greatness 鞋业公司
所以在上述情况下,我想输入 sheet tab1 中的 tab2 和 tab3 列,无论是否存在部分匹配,是或否。
在 Excel 或 Google 表格中执行此操作的最佳公式是什么?我在 Excel 中尝试过,但使用以下公式找到了精度非常低的部分匹配:
=IF(ISNA(VLOOKUP(B2 "*",'tab2'!$A:$A4,1,FALSE)), "No", "Yes")
google-spreadsheets has regex functions。
你可以试试:
- 将所有数据合并到一个 sheet(A 列)中以简化比较
- 使用公式:
=TEXTJOIN(";",1,FILTER(A:A,REGEXMATCH(A:A,A1) + REGEXMATCH(A1,A:A),A:A<>A1))
备注:
- 公式没有给出 100% 的匹配,您仍然需要人工查找拼写错误。
- 该公式将给出所有找到的匹配项除以分号
- 如果找不到匹配项,单元格将留空
您可以手动添加一些关键字到您的列表中,以便组合相似的公司名称:例如单词"Great",它匹配所有包含该单词的公司。
粘贴到B1并复制下来
您可以组合使用 ARRAYFORMULA
、ISNUMBER
和 SEARCH
。使用 Max 中的 "great shoes" 示例,如果您的数据位于 B1 中的 A 列中,您可以输入:
=ARRAYFORMULA(IF(ISNUMBER(SEARCH("Great",A:A))=TRUE,A:A,""))
因此,在 A 列中搜索字符串 "Great." 如果找到 =TRUE
,则返回该单元格中的任何内容。如果没有找到,FALSE
,则返回空白 ""
。不需要 "copy down." 您可以根据需要修改 "if true" 和 "if false" 语句来修改数据。您可以放置一个单元格引用来代替 "Great" 字符串。
您也可以以类似于 ISNUMBER(SEARCH
的方式使用 QUERY
。在 B1 你可以放 =QUERY(A:A,"Select A where A contains 'Great'",0)
您也可以使用 INDEX
和 MATCH
。如果您的数据在 B1 的 A 列中,您可以输入类似 =INDEX($A1:$A3,MATCH("Great",$A1:$A3,FALSE)).
的内容 您必须 "copy down" 每行的公式。如果要防止显示 #N/A 错误,请将其全部包装在 IFERROR
公式中。 =IFERROR(INDEX($A1:$A3,MATCH("Great",$A1:$A3,FALSE)),"")
.