0

次のシナリオのマクロを作成する必要があります。

私は1枚のExcelの本を持っています。シートには、テストケースとテストステータスを含むモジュール名が含まれています。「Mod1」などの特定のモジュールのテストステータスでテストケースをカウントする必要があります。

Module    Test Case ID    Status
Mod1            123         Pass
Mod2            124         Fail
Mod1            125         Fail
Mod1            126         Blocked
Mod5            127         Pass
Mod1            128         NA

私が書いたコードは以下の通りです:

Sub testnw()

Dim k, l, ps, fl, bl, na As Integer

Dim frng As Range


ps = 0
fl = 0
bl = 0
na = 0
frng = Worksheets(1).Range("A1")


k = 1
l = 1
       While (frng.Cells(k, l).Value <> "")

        If frng.Cells(k, l).Value = "Mod1" Then
            If frng.Cells(k, l + 2).Value = "Pass" Then
            ps = ps + 1
            ElseIf frnng.Cells(k, l + 2).Value = "Fail" Then
            fl = fl + 1
            ElseIf frng.Cells(k, l + 2).Value = "Blocked" Then
            bl = bl + 1
            Else
            na = na + 1
            End If
        End If
    Wend
MsgBox (ps)
MsgBox (fl)
MsgBox (bl)
MsgBox (na)
End Sub

上記のコードを実行すると、「オブジェクト変数またはブロック変数が設定されていません」というエラーメッセージが表示されます。

誰かが私がどこが間違っているのか教えてくれて、正しいコードを教えてもらえますか?

前もって感謝します。

4

2 に答える 2

1

エラーは次の行にあります:

frng = Worksheets(1).Range("A1")

SETオブジェクト(単純な変数ではない)を使用しているため、次のコマンドが必要です。

set frng = Worksheets(1).Range("A1")

LETSETの詳細については、この質問を参照してください

于 2013-02-27T20:30:36.103 に答える
1

Peter Albertが提案したように、これには本当にaPivot Tableを使用する必要があります。VBAでこれを行うための非常に特別なニーズがない限り、ホイールを再作成する意味はありません。

ピボットテーブルでこれがどのように表示されるかを知りたい場合は、次のように作成します。

1.データの範囲(モジュール、テストケースID、テストステータス)を強調表示します

2.[挿入]->[ピボットテーブル]に移動し、[OK]をクリックします

ここに画像の説明を入力してください

3.右下でPivotTable Field List、ドラッグします。

  • Module行ラベルへ、
  • Test Case ID
  • Status列ラベル

ここに画像の説明を入力してください

結果のテーブルは次のようになります。

ここに画像の説明を入力してください

これが探していたビューと正確に一致しない場合は、ニーズに合った値が見つかるまで、PivotTable Field List値(たとえば、switchStatusと)を試してみることができます。Test Case ID

于 2013-02-27T22:07:34.350 に答える