繁体   English   中英

如何在Excel中的多个单元格中的一系列文本字符串中计算关键字?

[英]How to count a keyword in a series of text strings within multiple cells in Excel?

我在Excel中使用SEARCH或FIND在这里发现了类似的想法,但这些想法似乎更多是关于查找关键字的位置,而不是计算出现的次数。

我有一个镜头清单的CSV文件。 每个镜头都与一个序列相关联,并且每个镜头都有一组“标签”(这是文本字符串)。 请参见下面的示例:

在此处输入图片说明

我想跟踪两个主要关键字:“ dog”和“ fox”。 每个序列有多个镜头,我的目标是找出每个序列有“ dog”标记的镜头和多少具有“ fox”标记的镜头。 我需要的公式是黄色突出显示的列,并且我手动输入了前几个整数,以了解应该有多少个数字。 填写完这些内容后,我便可以计算每个序列中“狗”或“狐狸”标记更多的比率。

我不能在Excel中使用“文本到列”来轻松分解文本字符串列,因为每个标签都包含不同系列的标签(我的示例文本已对此有所说明)。

我想出了一个简单的公式来计算如果文本列中仅包含“ dog”或“ fox”时我想要的内容,但是我无法弄清楚如何使Excel在文本字符串中查找一个单词并计数它。

=SUMIFS(D:D,B:B,1,F:F,"dog")

1是序列号,其余各列引用的是我较大的数据表。

任何帮助将非常感激!!

编辑:此处为文本形式的表格(对格式感到抱歉,无法从工作ATM上传文件):

COUNTER      SAMPLE DATA
Sequence    Total Fox   Total Dog   Total Entries   Ratio Fox   Ratio Dog       Sequence    Shot    Text
1   2   2   4   0.5 0.5     1   mov_101 The quick brown fox
2   3   2   5   0.6 0.4     2   mov_102 jumps over the lazy dog
3           4               3   mov_103 The fox and the hound
4           2               4   mov_104 fox news
5           3               5   mov_105 I am a dog
                            1   mov_106 The fox and the hound
                            2   mov_107 jumps over the lazy dog
                            3   mov_108 The fox and the hound
                            4   mov_109 jumps over the lazy dog
                            5   mov_110 I am a dog
                            1   mov_111 jumps over the lazy dog
                            3   mov_112 The fox and the hound
                            5   mov_113 The fox and the hound
                            2   mov_114 jumps over the lazy dog
                            2   mov_115 fox news
                            1   mov_116 I am a dog
                            3   mov_117 I am a dog
                            2   mov_118 The fox and the hound

有人可能会比这有更好的解决方案,但是我在寻找类似功能之前就用过它,但找不到。

=(LEN([textcell]) - LEN(SUBSTITUTE([textcell], [wordcell], ""))) / LEN([wordcell])

这是将原始字符串的长度与删除了搜索词的字符串的长度进行比较。 将其除以单词的长度,即可获得删除的次数。

因此,给出以下内容:

fox dog search
1   0   The quick brown fox
0   1   jumps over the lazy dog

A2上的公式是

=(LEN($C2) - LEN(SUBSTITUTE($C2,A$1, ""))) / LEN(A$1)

美元符号不是必需的,但是可以使用美元符号,因此可以将公式复制到所有4个单元格中。

距离您很近,您需要使用COUNTIFS而不是SUMIFS来获取序列数。 并在foxdog周围使用"*"来考虑周围的单词。

这是我用来获取狐狸数量的公式:

=COUNTIFS($H:$H,$A2,$J:$J,"*fox*")  

将此公式放在单元格B2并将其向下拖动。
同样,以下公式将为您提供每个序列的狗数:

=COUNTIFS($H:$H,$A2,$J:$J,"*dog*")  

将此公式放在单元格C2并将其向下拖动。

因此,我尝试复制您的数据,这就是我所使用的:

在此处输入图片说明

如果您有任何疑问,请告诉我。

如果“序列”列为E,且文本列为F,则可以使用以下公式:

=SUMPRODUCT(--(NOT(ISERROR(SEARCH(B$1,$F$2:$F$6)))),--($E$2:$E$6=$A2))

这将创建两个数组,一个数组是1和0的序列,其中1是文本包含B1(“ fox”或“ dog”),另一个数组是1的序列匹配,而0表示非序列匹配。

然后将它们相乘并求和,这样您就只能得到两个条件都匹配时的计数。

在我的示例中,公式位于单元格B2:C3中:

我使用的示例数据的图片: 样本数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM