计算包含一定文本但不重复的单元格

我需要计算一列中包含一定文本的单元格的数量。 其实,我会做这些计数的多个,我需要删除重复。

示例信息:
拉拉
Lerly PTY LTD
Trang AS TTE
Trerek AS TTE
PRING PTY LTD作为TTE
Treps PTY LTD
Liang AS TTE
Praderpis PTY LTD AS TTE

我需要统计“AS TTE”出现的次数,以及“PTY LTD”出现的次数。 但是,我只想计算一次包含“AS TTE”和“PTY LTD”的单元格。

我到目前为止:

(COUNTIF(F4:F1000,"*AS TTE*") + COUNTIF(F4:F1000, "*PTY LTD*")) 

但是这个重复计数。

编辑:我应该澄清,我的这个用法比我列出的要复杂得多,所以它不像简单地减去另一个具有它们的COUNTIF那样简单。 我还有许多其他COUNTIF我会做。

“AS TTE”和“PTY LTD”的人是否总是按“PTY LTD AS TTE”的顺序排列?

如果是这样,你可以添加:

COUNTIF(F4:F1000,"*PTY LTD AS TTE*")

你的净公式将是:

 (COUNTIF(F4:F1000,"*AS TTE*") + COUNTIF(F4:F1000, "*PTY LTD*") - COUNTIF(F4:F1000,"*PTY LTD AS TTE*")) 

编辑:如果你不能简单地做另一个COUNTIF ,你也许可以添加列,你有公式:

=IF(AND(ISERROR(FIND("AS TTE",E4)),ISERROR(FIND("PTY LTD",E4))),0,1)

如果“AS TTE”或“PTY LTD”位于单元格F4中,则将插入1否则为0 。 将公式向下拖动并添加列以获取总和。

您可以添加三个额外的列到您的input数据表:

  A 1 | Lerly PTY LTD | =COUNTIF(A1,"*PTY LTD*") | =COUNTIF(A1,"*AS TTE*") | =B1+C1-B1*C1 2 | Trang AS TTE | =COUNTIF(A2,"*PTY LTD*") | =COUNTIF(A2,"*AS TTE*") | =B2+C2-B2*C2 ... 

然后总结第三个额外的列,其中将有满足其中一个标准的每一行中的一个。

你可以添加一列吗? 如果可以的话,添加一个(也许是隐藏的)列,比如说B,用像这样的公式

 =if(and(iserror(find("PTY LTD",A1)),iserror(find("PTY LTD",A1))),0,1) 

(假设列A中的数据)然后只是总结该列。 该公式显然可以包括尽可能多的条件,只要你喜欢。 请注意,我实际上在做的是寻找既不包含术语又不包含术语的线条。

根据你需要计数的复杂程度,你可能会更好地使用自定义函数,下面的代码可以扩展到测量许多标准,但因为它会计算任何包含“AS TTE”或“PTY LTD”的单元格,但是将每个单元格计为1:

 Public Function CountIfExt(Rng As Range, str1 As String, str2 As String) As Long Dim c As Range Dim x As Long For Each c In Rng If InStr(c.Value, str1) > 0 Or InStr(c.Value, str2) > 0 Then x = x + 1 End If Next c CountIfExt = x End Function 

将“或”更改为“和”会计算包含两个string的单元格,但要检查单元格是否只包含一次,即排除具有“Trang AS TTE PTY LTD AS TTE”的单元格:(重新读取问题我不认为这是你以后的样子,但展示如何扩展function…)

 Public Function CountIfExt(Rng As Range, str1 As String, str2 As String) As Long Dim c As Range Dim x As Long Dim lstr1 As Long, lstr2 As Long For Each c In Rng lstr1 = InStr(c.Value, str1) lstr2 = InStr(c.Value, str2) If lstr1 > 0 And lstr2 > 0 Then If InStr(lstr1 + 1, c.Value, str1) = 0 _ And InStr(lstr2 + 1, c.Value, str2) = 0 Then x = x + 1 End If End If Next c CountIfExt = x End Function 

希望这可以让你足够的到达你需要的地方。