2

特定の文字列を含む Excel 列の一意の値をすべてカウントしたいと考えています。たとえば、私のコラムにこれがあるとします。

strA
strB
strA
strC
diffA
diffB
strC

「str」の値を書き込んでいるこの理論関数を指定すると、「str」を含む一意の値がカウントされ、数値 3 が返されます。

助言がありますか?Web には、この問題に対する半分の答えがたくさんありますが、明確な解決策を見つけるのに 1 時間費やしたので、StackOverflow がその質問から利益を得られるのではないかと考えました。

4

3 に答える 3

1
Option Explicit

Sub Test()
    GetCount 1, "str"
End Sub

Sub GetCount(colNum As Integer, str As String)
    Dim row As Integer
    Dim dict
    Set dict = CreateObject("Scripting.Dictionary")

    row = 1

    Dim key As String
    While Cells(row, colNum) <> ""
        key = Cells(row, colNum)
        If InStr(key, str) And Not dict.Exists(key) Then
            dict.Add key, key
        End If

        row = row + 1
    Wend

    MsgBox ("the count is " & dict.Count)

End Sub

入力サンプルで実行すると、3 になります。ループの終了条件は、列で見つかった最初の空のセルです。ロジックが必要なものでない場合は、それを調整できます。

このマクロをコンパイルして実行するには、VBA セクションに Microsoft Scripting Runtime への参照を追加する必要があります。

于 2010-09-08T16:53:59.593 に答える
0
=SUM(1/COUNTIF(A1:A7,A1:A7)*(LEFT(A1:A7,3)="str"))

配列数式なので、Enterだけでなく、Control+Shift+Enterで入力してください。通常、リスト内の一意のアイテムの数を数えるには、配列を入力します

=SUM(1/COUNTIF(A1:A7,A1:A7))

文字列で始まらないものはゼロとして扱われるように、COUNTIF 部分に別の基準 (str で始まる) を掛けました。配列数式を初めて使用する場合は、次を参照してください。

http://www.dailydoseofexcel.com/archives/2004/04/05/anatomy-of-an-array-formula/

于 2010-09-08T20:11:55.793 に答える
0

私は遅すぎましたが、別の解決策を得ました:

検索する文字列を B1 に入力し、配列数式として入力します。

=SUM(NOT(ISERROR(SEARCH(B1;A1:A7)))*(1/COUNTIF(A1:A7,A1:A7))
于 2010-09-08T21:16:29.300 に答える