2017-01-05 11 views
0

特定の列、特定のテキスト、特定のワークシートからの検索に基づいてセルの数が更新される以下のコードがあります。引数を渡してvbaのセルに数えられるのです

Sub WBR() 
Dim wf As WorksheetFunction 
Set wf = Application.WorksheetFunction 

With ActiveWorkbook.Worksheets("TT")    'no of tickets processed - summary 
[AE43] = wf.CountIfs(.Range("I:I"), "<>Duplicate TT", _ 
         .Range("G:G"), "<>Not Tested", _ 
         .Range("U:U"), "Item") 
End With 

With ActiveWorkbook.Worksheets("TT")    'not tested tickets - summary 
[AE44] = wf.CountIfs(.Range("G:G"), "Not Tested") 
End With 

With ActiveWorkbook.Worksheets("TT")    'Tickets moved back- outdated OS and App Versions - summary 
[AE45] = wf.CountIf(.Range("I:I"), "Outdated App Version") + wf.CountIf(.Range("I:I"), "Outdated OS") 
End With 

条件を満たすと、指定したセルでカウントが更新されるように引数を渡すにはどうすればよいですか?

+0

例を作成してください – user3598756

+0

現在、コードは上記のワークシートに移動し、特定の文字列をスキャンして一致する場合は、指定されたセルの一致する行の合計数を表示します。ですから、このタスクを実行するには、同じコードを30以上のセルに適用する必要があります(diffシートの検索条件としてdiff文字列を使用)。上記のコードを引数を持つハッシュ(引数はシート名、検索するテキスト、数を置く範囲、colから検索する)と引数(ここでは文字列)が条件を満たす場合、カウントを更新する必要があります指定されたセルに格納します。 –

+0

'' TT ''や' 'Not Tested''や '' G:G ''などの定数の代わりに変数を使うだけです。これらの変数を好きなように設定します(たとえば、ExcelやVBAで作成された配列、「InputBox」、フォーム、または他の方法で配列を検索するなど)。 – YowE3K

答えて

0

サンプルすべての定数格納する配列を使用してコード:

これは、すべてのケースを処理しません
Sub WBR() 
    Dim Count1Criteria As Variant 
    Dim Count3Criteria As Variant 
    Dim test As Variant 
    Dim wf As WorksheetFunction 
    Set wf = Application.WorksheetFunction 

    Count1Criteria = Array(Array("AE44", "TT", "G:G", "Not Tested"), _ 
          Array("AF44", "TT", "U:U", "Item")) 

    Count3Criteria = Array(Array("AE43", "TT", "I:I", "<>Duplicate TT", _ 
               "G:G", "<>Not Tested", _ 
               "U:U", "Item"), _ 
          Array("AF43", "TT", "I:I", "<>Duplicate TT", _ 
               "G:G", "<>Not Tested", _ 
               "U:U", "Item")) 


    For Each test In Count1Criteria 
     With Worksheets(test(1)) 
      Range(test(0)) = wf.CountIfs(.Range(test(2)), test(3)) 
     End With 
    Next         
    For Each test In Count3Criteria 
     With Worksheets(test(1)) 
      Range(test(0)) = wf.CountIfs(.Range(test(2)), test(3), _ 
             .Range(test(4)), test(5), _ 
             .Range(test(6)), test(7)) 
     End With 
    Next         
End Sub 

- あなたには、いくつか持っているあなたが2つ(またはそれ以上)を追加する必要がある場所は一緒に結果を - しかし、どのようにコードを「反復的」にするのかを考えなければなりません。

+0

これを試してみます..しかし、ここでの "テスト"は何を表していますか?テスト(0)、テスト(1)など?また、辞書を使って引数を「ハッシュ」する方法はありますか? –

+0

@walterwhile - (a) 'test'は単なる変数名です。私は 'x'を使うつもりだったが、あまり意味がないと判断したので、それぞれの"テスト "が実行されることを意味する' test'に行きました。おそらくそれを 'countToBePerformed'に改名しますか?またはあなたが好きな何か。 (b)あなたが好きな場合は、値の辞書を使うことができます - 配列を使用したのは、それがサンプルコードを提供するように要求したからです。 – YowE3K

+0

"辞書"が提訴されている場合は、それは配列より優れていますか?このコードで辞書を使用する必要がある場合、私はどのような変更を行う必要がありますか? –

関連する問題