0

私はVBAを初めて使用し、特定の列で同じ値が繰り返される回数を見つけようとしています。

次に、値と繰り返し値のカウントを別のシートの列AとBに貼り付ける必要があります。

繰り返される値の回数を数える必要があります。

PSV_Cust_1
PSV_Cust_1
PSV_Cust_1
PSV_Cust_1
PSV_Cust_1
PSV_Cust_2
PSV_Cust_2
PSV_Cust_2
PSV_Cust_2
PSV_Cust_3
PSV_Cust_3
PSV_Cust_3
PSV_Cust_3
PSV_Cust_4
PSV_Cust_4
PSV_Cust_4
PSV_Cust_5
PSV_Cust_5
PSV_Cust_5
PSV_Cust_5
PSV_Cust_5
PSV_Cust_5
PSV_Cust_5
PSV_Cust_5

結果は次のようになります。

Value        Count
PSV_Cust_1   5
PSV_Cust_2   4
PSV_Cust_3   4
PSV_Cust_4   3
PSV_Cust_5   7

VBAコードを使用してoutpuを取得するために誰か助けてください。

4

3 に答える 3

11

他の人が示唆しているように、Pivot Tableこれを達成するための最も簡単な方法です。方法は次のとおりです。

1)カウントする行を選択します

2)Insert -> PivotTable リボンから選ぶ

3)ウィンドウが表示されたら、クリックOkしてピボット テーブルを作成します。

ここに画像の説明を入力

4) [ピボットテーブル フィールド リスト: レポートに追加するフィールドを選択:] の下の右側で、次のチェックボックスをクリックします。

ここに画像の説明を入力

5)クリックしたチェックボックス フィールドを [値] リストにドラッグして放します。

ここに画像の説明を入力

6)それだけです!これで、求めていたものが得られます:

ここに画像の説明を入力

于 2013-02-15T19:49:31.713 に答える
3

このマクロは、必要なことを行います。

Sub Summarize(rngSource As Range, rngTarget As Range)
    Dim d As New Scripting.Dictionary
    Dim rng As Range
    Dim var As Variant

    For Each rng In rngSource
        If rng <> "" Then
            If d.Exists(rng.Value) Then
                d(rng.Value) = d(rng.Value) + 1
            Else
                d.Add rng.Value, 1
            End If
        End If
    Next rng

    rngTarget = "Value"
    rngTarget.Offset(, 1) = "Count"
    Set rng = rngTarget.Offset(1)
    For Each var In d.Keys
        rng = var
        rng.Offset(, 1) = d(var)
        Set rng = rng.Offset(1)
    Next
End Sub

Visual Basic Editor (Tools->References) でMicrosoft Scripting Libraryへの参照を追加する必要があります。次のように呼び出すことができます。

Summarize Sheet1.Range("A1:A24"), Sheet1.Range("C1")
于 2013-02-15T14:31:37.773 に答える
2

COUNTIF(範囲, 値) 関数は、必要なことを行います。(ピボット テーブルと比較して) 検索する値をより簡単に制限できるという利点があります。データが「customers」という名前の範囲「Sheet1!A1:A25」にあるとします (これを行うには、範囲を選択しcustomers、数式バーの左側にあるアドレス ボックスに入力します)。 2... 顧客 10 まで」で、顧客 1 と 5 の出現回数だけを知りたい場合は、シート 2 に次のように作成できます。

col A        col B
Value        count
customer 1   =COUNTIF(customers, A1)
customer 5   =COUNTIF(customers, A2)

もちろん、数式をセル B1 から下にドラッグすることもできます。再度入力する必要はありません。

これにより、顧客がカウントされ、自動的に更新されます...この例では、ピボット テーブルよりも簡単だと思います。

于 2013-02-15T14:33:16.320 に答える