如何根据另一列包含带分隔符的string在Excel中对列进行分类; string可以有两个单独的单词
这个问题跟在前面的查询之后: 如何根据另一列包含string中的值用分号分隔excel中的列
我有以下电子表格(请点击以下链接查看图片): 原始数据和预期输出
我的问题是我想对原始数据进行分类,所以输出结果如B16:B34和C16:C34所示。 当他们的兴趣在一个包含以多个分号分隔的string的列中时,我试图按照他们的兴趣对他们进行分类。 这个名字可以根据自己的兴趣多次出现,比如电影,动作片,音乐,摇滚乐,爵士音乐和广播。
我已经尝试了@Glitch_doctor提供的答案:
{= IFERROR(INDEX($ B $ 1:$ B $ 11 SMALL(IF(ISNUMBER(SEARCH(B $ 15 $ C $ 1:$ C $ 11)),ROW($ C $ 1:$ C $ 11)-ROW(INDEX( $ C $ 1:$ C $ 11,1,1))+ 1),ROW(1:1))), “”)}
答案的问题是,当一个人的兴趣实际上是动作电影时,他们出现在电影分类中。 我试图匹配时,他们的兴趣是动作电影,他们只在行动电影分类后显示。 多个单词似乎不适用于SEARCHfunction。
我尝试用VBA代码replaceSEARCH函数:
Function ProjectSearch(ByVal strProj As String, ByVal strVal As String, _ Optional ByVal delimiter As String = ";") As Boolean Dim i As Long Dim strSplit() As String strSplit = Split(strProj, delimiter) ProjectSearch = False For i = LBound(strSplit) To UBound(strSplit) If strSplit(i) = strVal Then ProjectSearch = True Exit Function End If Next i End Function
由于我是一个新手它似乎并没有工作。 我的问题是有没有办法在没有VBA的情况下做我想做的事情? 如果我需要使用VBA,我需要做什么?
感谢您提前。
好的,那比我期望的要简单得多:
=IFERROR(INDEX($C$1:$C$11,SMALL(IF(ISNUMBER(IF(SEARCH(E$15,$D$1:$D$11)=1,SEARCH(E$15,$D$1:$D$11),SEARCH(CONCATENATE("; ",E$15),$D$1:$D$11))),ROW($D$1:$D$11)-ROW(INDEX($D$1:$D$11,1,1))+1),ROW(1:1))),"")
我只将ISNUMBER(SEARCH(B$15,$C$1:$C$11))
部分更改为ISNUMBER(IF(SEARCH(E$15,$D$1:$D$11)=1,SEARCH(E$15,$D$1:$D$11),SEARCH(CONCATENATE("; ",E$15),$D$1:$D$11)))
另外IF
语句是说如果searchfind单个单词作为单元格中的第一个字符来接受search到数组中,否则search以"; "
开头。