计算一个超串中包含多少个子串。

问题描述 投票:0回答:1

在LibreOffice Calc和Excel中,计算一个范围内的超级字符串包含子串的次数很容易。如何计算一个超串在一个范围内包含子串的次数?在下面的例子中,在一个集合中包含一个动物的次数是COUNTIF($A$2:$A$5,""&B2&"") for Dog, COUNTIF($A$2:$A$5,""&B3&"")为猫,以此类推。如何计算 "猫狗鼠蛇 "中包含多少个范围为B:B的动物?D列的答案应该是3,1,1,1。

enter image description here

excel-formula libreoffice-calc
1个回答
1
投票

将以下公式放在 D2 中。 它是一个数组公式,所以你需要使用 控制+换挡+进入 而不是仅仅 进入. 当公式栏中的公式周围出现{ }时,你就会知道你的操作是正确的。 注意,这些不能手动添加。

=SUM(--NOT(ISERR(SEARCH($B$2:$B$5,A2))))

复制单元格,然后粘贴在D3:D5中。


0
投票

首先把这个UDF放在一个标准模块中。

Public Function KeyKount(s As String, keywds As Range) As Long
    Dim temp As String, cell As Range

    KeyKount = 0
    temp = " " & s & " "
    For Each cell In keywds
        v = " " & cell.Text & " "
        If InStr(temp, v) > 0 Then KeyKount = KeyKount + 1
    Next cell
End Function

然后在单元格中输入,例如:

=keykount(A2,B2:B10)

enter image description here


0
投票

例如: Either:

=SUMPRODUCT(--(ISNUMBER(MATCH(FILTERXML("<a><b>"&SUBSTITUTE(A2," ","</b><b>")&"</b></a>","//b"),B:B,0))))

或者

=SUMPRODUCT(--ISNUMBER(SEARCH(" "&$B$2:$B$5&" "," "&A2&" ")))

同样都能在Excel中使用,不知道librecalc的情况。 如果字符串的字数比查找列表的字数少,第一种方法会减少交互次数,而第二种方法则相反。

enter image description here


0
投票

对于LO计算。

=SUMPRODUCT(ISNUMBER(SEARCH(B$2:B$5;A2)))

3,1,1,1

© www.soinside.com 2019 - 2024. All rights reserved.