4

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

示例信息:
Lala
Lerly PTY LTD
Trang AS TTE
Trerek AS TTE
PRING PTY LTD AS 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 要做。

4

4 回答 4

7

具有“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)

1如果“AS TTE”或“PTY LTD”在单元格 F4 中,这将插入,0如果不是。向下拖动公式并添加列以获取总数。

于 2013-05-01T16:57:10.730 回答
0

根据您需要计数的复杂程度,使用自定义函数可能会更好,下面可以扩展以测量许多标准,但因为它会计算包含“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

将“或”更改为“和”将对包含两个字符串的单元格进行计数,但要检查该单元格是否只包含一次,即排除具有“Trang AS TTE PTY LTD AS TTE”的单元格,然后:(重新阅读您的问题我认为这不是您所追求的,而是为了演示如何扩展该功能...)

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

希望这能给你足够的帮助,让你到达你需要的地方。

于 2013-05-02T03:22:20.287 回答
0

您可以在输入数据表中添加三个额外的列:

          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
 ...

然后总结第三个附加列,对于满足其中一个条件的每一行,该列将有一个。

于 2013-05-01T17:27:02.613 回答
0

可以加一列吗?如果可以的话,添加一个(可能是隐藏的)列,比如 B,使用如下公式

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

(假设A列中的数据)然后对该列求和。该公式显然可以包含任意数量的条件。请注意,我实际上正在做的是寻找不包含任何术语的行并将它们从总和中省略。

于 2013-05-01T17:27:21.777 回答