Excel查找单元格中的每个单词并与列表匹配
我正试图想出一个excel公式来查找单元格中由空格或逗号分隔的每个单词,将每个单词与单词列表进行匹配,并在另一列中返回找到的单词。 例如: 所以ColorFamily列应该是一个公式 我试过使用VLOOKUP,例如Excel查找单元格中的每个单词并与列表匹配,excel,excel-formula,Excel,Excel Formula,我正试图想出一个excel公式来查找单元格中由空格或逗号分隔的每个单词,将每个单词与单词列表进行匹配,并在另一列中返回找到的单词。 例如: 所以ColorFamily列应该是一个公式 我试过使用VLOOKUP,例如 =VLOOKUP(H3,color_family!$A$3:$A$19,1,FALSE) 但它的局限性在于它不能遍历单元格中的每个单词。是否可以使用Excel公式执行此操作,或者是否需要VBA?以数组公式形式输入(ctrl+shift+Enter): =TEXTJOIN(“”,
=VLOOKUP(H3,color_family!$A$3:$A$19,1,FALSE)
但它的局限性在于它不能遍历单元格中的每个单词。是否可以使用Excel公式执行此操作,或者是否需要VBA?以数组公式形式输入(ctrl+shift+Enter):
=TEXTJOIN(“”,TRUE,IF(ISER(查找(颜色族!$A$3:$A$19,H3)),”,颜色族!$A$3:$A$19))
作为数组公式输入(ctrl+shift+Enter):
=TEXTJOIN(“,TRUE,IF(ISERR(FIND(color\u family!$A$3:$A$19,H3)),”,color\u family!$A$3:$A$19))
我无法理解公认的答案,但这里有一个类似的方法。这在Excel 365中工作,取决于其动态数组功能
以下是我正在使用的电子表格布局:
我用空格来分隔颜色列表中的值,但解决方案可以推广到处理逗号等
我用于构建所需公式的步骤包括:
TEXTJOIN(“,”,TRUE,$a$7:$a$9)
TRIM(MID(替换为(A2),”,REPT(“,LEN(A2))),SEQUENCE(1,LEN(A2)-LEN(替换为(A2),”)+1,1,LEN(A2)),LEN(A2)))
`=TEXTJOIN(",",TRUE,IF(ISNUMBER(FIND(TRIM(MID(SUBSTITUTE(A2," ",REPT(" ",LEN(A2))),SEQUENCE(1,LEN(A2)-LEN(SUBSTITUTE(A2," ",""))+1,1,LEN(A2)),LEN(A2))),TEXTJOIN(",",TRUE,$A$7:$A$9))),TRIM(MID(SUBSTITUTE(A2," ",REPT(" ",LEN(A2))),SEQUENCE(1,LEN(A2)-LEN(SUBSTITUTE(A2," ",""))+1,1,LEN(A2)),LEN(A2))),""))`
可复制到B3、B4等中,给出最终结果:
我无法理解这个公认的答案,但这里有一个类似的方法。这在Excel 365中工作,取决于其动态数组功能 以下是我正在使用的电子表格布局: 我用空格来分隔颜色列表中的值,但解决方案可以推广到处理逗号等 我用于构建所需公式的步骤包括:
TEXTJOIN(“,”,TRUE,$a$7:$a$9)
TRIM(MID(替换为(A2),”,REPT(“,LEN(A2))),SEQUENCE(1,LEN(A2)-LEN(替换为(A2),”)+1,1,LEN(A2)),LEN(A2)))
`=TEXTJOIN(",",TRUE,IF(ISNUMBER(FIND(TRIM(MID(SUBSTITUTE(A2," ",REPT(" ",LEN(A2))),SEQUENCE(1,LEN(A2)-LEN(SUBSTITUTE(A2," ",""))+1,1,LEN(A2)),LEN(A2))),TEXTJOIN(",",TRUE,$A$7:$A$9))),TRIM(MID(SUBSTITUTE(A2," ",REPT(" ",LEN(A2))),SEQUENCE(1,LEN(A2)-LEN(SUBSTITUTE(A2," ",""))+1,1,LEN(A2)),LEN(A2))),""))`
可复制到B3、B4等中,给出最终结果:
您当前正在处理整个单元格。如果您想逐字执行此操作,则必须将字符串拆分为各个单词并查找它们。根据字符串的长度,可以使用多个公式,但VBA也足够了。请查看。我很确定你能做到。你有没有试过find()@Luuklag:你能不能不使用VBA,将一个单元格的内容拆分成不同的单元格?(我认为这只可能使用VBA,而不是公式)@Dominique,利用
Find()
和Left()
或Right()
可以将其分为不同的单元格。您目前正在处理整个单元格。如果您想逐字执行此操作,则必须将字符串拆分为各个单词并查找它们。根据字符串的长度,可以使用多个公式,但VBA也足够了。请查看。我很确定你能做到。你有没有试过find()@Luuklag:你能不能不使用VBA,将一个单元格的内容拆分成不同的单元格?(我认为这只可能使用VBA,而不是公式)@Dominique,利用Find()
和Left()
或Right()
可以将它分为不同的单元格。谢谢你的全面回答。谢谢你的全面回答。