Excel-计算行和逗号分隔单元格中的出现次数
我有一个数据表,我想在其中计算一个单词在列中的所有出现次数。但该列可以包含几个用逗号分隔的单词Excel-计算行和逗号分隔单元格中的出现次数,excel,expression,Excel,Expression,我有一个数据表,我想在其中计算一个单词在列中的所有出现次数。但该列可以包含几个用逗号分隔的单词 False Negative False Negative, False Positive 这是一个例子。结果列只能包含以下表达式: False Negative False Positive Positive 因此,基于上述示例,我想要一个由以下内容组成的结果列: False Negative 2 False Positive 1 通过这种方式,我可以根据这些值绘制图表 我不太擅长Excel,
False Negative
False Negative, False Positive
这是一个例子。结果列只能包含以下表达式:
False Negative
False Positive
Positive
因此,基于上述示例,我想要一个由以下内容组成的结果列:
False Negative 2
False Positive 1
通过这种方式,我可以根据这些值绘制图表
我不太擅长Excel,但我知道如何输入表达式,只是不知道如何编写逻辑
谢谢
编辑:
我不想把“假阳性”这个词和“阳性”相提并论。它需要查找逗号 从您的示例来看,似乎您希望统计数据中某些短语的出现次数,而不仅仅是单词。如果是这种情况,且短语是非排他性的,则以下公式可能适用: Rng是您列的范围,例如$A$1:$A$100 G1包含感兴趣的短语,例如假阳性
=SUMPRODUCT((LEN(Rng)-LEN(SUBSTITUTE(Rng,G1,"")))/LEN(G1))
并根据需要填写
请注意,由于阳性是假阳性的一部分,上述数字将计为阳性数2。如果你想要不同的东西,你需要告诉我们你想要什么
编辑由于您现在表示不希望将假阳性计算为阳性实例,因此我将提供一个用户定义的函数,用于检查以确保所讨论的短语以逗号分隔
要输入此用户定义函数UDF,alt-F11将打开Visual Basic编辑器。
确保项目在“项目资源管理器”窗口中高亮显示。
然后,从顶部菜单中选择插入/模块和
将下面的代码粘贴到打开的窗口中
要使用此用户定义函数UDF,请输入以下公式
=FindPhrase(Rng,G1)
在某个牢房里
Option Explicit
Function FindPhrase(SearchRange As Range, Phrase As String) As Long
Dim RE As Object, MC As Object
Dim sPat As String
Dim V As Variant
Dim I As Long, J As Long
V = SearchRange
Set RE = CreateObject("vbscript.regexp")
With RE
.Global = True
.MultiLine = True
.ignorecase = True
.Pattern = "(?:^|,\s*)" & Phrase & "(?:\s*,|$)"
End With
For I = 1 To UBound(V, 1)
If RE.test(V(I, 1)) Then J = J + 1
Next I
FindPhrase = J
End Function
EDIT2如果每个单元格中可以有多个短语实例,并且您希望分别对它们进行计数,那么在上面的示例中,可以更改
.Pattern = "(?:^|,\s*)Positive(?=(?:\s*,|$))"
或者使用以下不同的UDF,该UDF也可以轻松地调整为仅计算单个实例,并且可能比第一个实例运行得更快:
Option Explicit
Function FindPhrase2(SearchRange As Range, Phrase As String) As Long
Dim V As Variant
Dim I As Long, J As Long, K As Long
Dim aStrings As Variant
V = SearchRange
For I = 1 To UBound(V)
aStrings = Split(V(I, 1), ",")
If IsArray(aStrings) Then
For J = 0 To UBound(aStrings)
If Trim(aStrings(J)) = Trim(Phrase) Then K = K + 1
Next J
Else
If Trim(aStrings) = Trim(Phrase) Then K = K + 1
End If
Next I
FindPhrase2 = K
End Function
嗨,罗恩。我试过你的表情,但总是给我一个错误=我把假阳性这个词放在了E4中。当我说OK时,它标记了位C24,E4,我得到的是标准excel对话框,您键入的公式包含错误。。顺便说一下,请看最新的问题。我不想让假阳性加上阳性。啊哈,用逗号分隔的参数代替不是。。。它的该行应为替换项C4:C24;E4;。但现在我知道名字了?在表达式所在的字段中。我不确定,但您是否定义了Rng?是的,某些非美国版本的Excel将使用分号作为参数分隔符