如何计算字符串的出现次数给定它也匹配另一个单元格

时间:2015-02-26 05:15:42

标签: excel excel-vba excel-formula vba

所以我有以下内容:

=SUM(LEN(Data!$J$2:$J$9999)-LEN(SUBSTITUTE(Data!$J$2:$J$9999,"dependent","")))/LEN("dependent")

给定范围j2:j9999将计算字符串相关的出现次数,而不管其余的单元格 - 即,如果单元格包含primary,依赖,而另一个依赖,则计数将为2。

我需要什么,不能真正弄清楚上面给出了如何引用行中的另一个单元格。因此,如果我仍然需要计算字符串相关的出现次数,那么如果发现字符串相关的情况以及与依赖于== foo的单元格在同一行中的另一个单元格,我将如何限制仅计算出现次数。< / p>

实施例

column1, column2, column3

foo, bar, dependent 
bar, baz, dependent
foo, bar, primary dependent dependent1

在这个例子中,我想做一个伪countifs,其中我计算字符串依赖的出现,因为该行也匹配foo。

此处的计数为3,因为第1行在cell1中具有foo且具有依赖性,第3行在第1列中具有foo,在第3列中具有2次依赖

3 个答案:

答案 0 :(得分:1)

不需要数组输入的版本:

=SUMPRODUCT((Data!$H$2:$H$9999="foo")*(LEN(Data!$J$2:$J$9999)-LEN(SUBSTITUTE(Data!$J$2:$J$9999,"dependent",""))))/LEN("dependent")

或者,如果&#34;依赖&#34;只会在每个单元格中出现一次,您可以使用:

=COUNTIFS(Data!$H$2:$H$9999,"foo",Data!$J$2:$J$9999,"*dependent*")

答案 1 :(得分:0)

这应该可行。它基于您的示例数据完成,并返回D1中的值:

Sub StringCounter_II_The_Sequel()
Dim range1 As Range, rCell As Range
Dim string1 As String
Dim length As Long, i As Long
string1 = "dependent"
length = Len(string1)
     Set range1 = ActiveSheet.Range("C:C")
        For Each rCell In range1
            txt = rCell.Text
            If InStr(txt, string1) > 0 And rCell.Offset(,-2) = "foo" Then
                i = i + (Len(txt) - Len(Replace(txt, string1, ""))) / length
            End If
        Next rCell    
ActiveSheet.Range("D1").Value = i
End Sub

答案 2 :(得分:0)

您可以在公式中添加IF,如下所示:

=SUM(IF(Data!H2:H9999="foo",LEN(Data!$J$2:$J$9999)-LEN(SUBSTITUTE(Data!$J$2:$J$9999,"dependent","")))/LEN("dependent"),0)

显然,它仍然是一个数组公式,用 ctrl 输入 - shift - 输入