如何计算一个string的出现次数,如果它也匹配另一个单元格

所以我有以下几点:

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

给定的范围j2:j9999将计算依赖string出现的次数,而不pipe其余的单元格 – 即如果该单元格包含主,依赖和另一个依赖计数将是2。

我需要和不能真正弄清楚上面给出了我将如何引用行中的另一个单元格。 所以,如果我仍然需要计数的string依赖的发生,我将如何限制只发生的事件,如果这两个string依赖被发现,还有另一个单元格在同一行与依赖== foo单元格。

例:

 column1, column2, column3 foo, bar, dependent bar, baz, dependent foo, bar, primary dependent dependent1 

在这个例子中,我想做一个伪countifs我在哪里计数的string依赖的出现给定的行也匹配foo。

这里的计数是3,因为第1行在单元格1中具有foo,并且具有依赖性,并且第3行在第1列中具有foo,在第3列中具有依赖性的第2个事件

不需要数组input的版本:

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

或者,如果“依赖”每个单元格只出现一次,则可以使用:

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

这应该有希望工作。 它是根据您的样本数据完成的,并返回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 

你可以添加一个IF到你的公式,就像这样:

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

显然,它仍然是一个数组公式,用CtrlShiftEnterinput