如何基于包含以分号分隔的字符串值的另一列对excel中的列进行分类

时间:2017-01-09 13:59:31

标签: excel excel-vba excel-formula vba

我在图片上有以下电子表格(请点击下面的链接查看图片):

Raw data and categorised data

假设我有原始数据名称B4:B11和兴趣C4:C11。

我的问题是我想对原始数据进行分类,因此输出结果如B16:B34和C16:C34所示。当他们的兴趣在包含由分号分隔的字符串的列中时,我试图按照他们的兴趣对人进行分类。名称可以根据他们的兴趣多次出现,在这种情况下,电影,音乐和电台。

请帮忙。谢天谢地。

1 个答案:

答案 0 :(得分:0)

此公式的效果如下图所示。

这需要作为数组公式输入(当在公式栏中点击 Ctrl + Shift + Enter

=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))),"")

数组公式的细分范围,一次计算一个单元格(或行)。

SMALL公式(=SMALL(array,k))将使用IF公式的数组结果。当使用搜索在单元格中找到文本时,IF公式返回FALSE(默认)或行号,我使用=ISNUMBER强制为true而不是抛出任何错误,就好像它找到文本,它将给出一个数值作为该单元格中该字符串的起始位置。

SMALL公式将结果按升序排列在数组中,并且只会调用实际值(不是FALSE),因此我在小公式的末尾使用了ROW(1:1)对于k部分:当行自动增加到下一个数字时,将显示下一个最高结果。

我希望这有助于解释所使用的逻辑。

enter image description here