我想做的是以下内容:
我有一个3页的文件(tab1,tab2和tab3)。在每个中,我都有列名“公司名称”,在tab1中,我有两个名为“tab2”和“tab3”的特定列,它们代表工作表tab2和tab3。我想要做的是查询工作表tab2和tab3,看看是否有公司名称匹配100%或类似于tab1中“公司名称”列中列出的名称。
例:
TAB1
公司名
伟大的鞋子
TAB2
公司名
大
遵循
公司名
伟大鞋业公司
因此,在上述场景中,我想输入表格tab1中的列tab2和tab3,无论是否存在与是或否的部分匹配。
在Excel或Google表格中执行此操作的最佳公式是什么?我在Excel中尝试过,但是使用这个公式可以找到具有非常低精度的部分匹配:
=IF(ISNA(VLOOKUP(B2 "*",'tab2'!$A$2:$A$884,1,FALSE)), "No", "Yes")
google-spreadsgeets有regex functions。
你可以尝试:
=TEXTJOIN(";",1,FILTER(A:A,REGEXMATCH(A:A,A1) + REGEXMATCH(A1,A:A),A:A<>A1))
笔记:
你可以使用ARRAYFORMULA
,ISNUMBER
和SEARCH
的组合。使用Max的“好鞋”示例,如果您的数据在列中,则可以使用B1中的A:
=ARRAYFORMULA(IF(ISNUMBER(SEARCH("Great",A:A))=TRUE,A:A,""))
因此,在A列中搜索字符串“Great”。如果找到=TRUE
那么返回该单元格中的任何内容。如果没有找到任何东西,FALSE
,然后空白返回""
。没有必要“复制”。您可以根据需要修改“if true”和“if false”语句来修改数据。代替“Great”字符串,您可以放置单元格引用。
你也可以用类似于QUERY
的方式使用ISNUMBER(SEARCH
。在B1你可以把=QUERY(A:A,"Select A where A contains 'Great'",0)
你也可以使用INDEX
和MATCH
。如果您的DATA位于B1的A列,您可以输入类似=INDEX($A1:$A3,MATCH("Great",$A1:$A3,FALSE)).
的内容。您必须“复制”每行的公式。如果要防止显示#N / A错误,请将所有内容包装在IFERROR
公式中。 =IFERROR(INDEX($A1:$A3,MATCH("Great",$A1:$A3,FALSE)),"")
。
为了简单起见,我同意将所有数据合并为一张表的想法。之后,使用此公式:
FLOOKUP(lookupValue, tableArray, lookupCol, indexNum, threshold, rank)
什么是Flookup?这是一个Google表格附加组件。您可以在附加商店中搜索它,安装并使用它。它允许您查找范围从0%到100%相似性的匹配。从官方网站上了解更多有关使用情况的信息(我不允许在此处发布链接)