2017-01-11 5 views
0

次のコードでは、col範囲を値として使用してシート内の列を検索しています。その代わりに、私は彼が条件を検索し、同じ機能を実行するように(そのシート内の)col名を使用する必要があります。これをどのように実装すればよいですか?VBAの範囲として列名を使用

Sub WBR() 
Dim Count1Criteria As Variant 
Dim Count3Criteria As Variant 
Dim test As Variant 
Dim wf As WorksheetFunction 
Set wf = Application.WorksheetFunction 

Filter1InSummary = Array(Array("AE4", "Latency", "O:O", "Pass"), _ 
        Array("AE51", "TT", "G:G", "Yes"), _ 
        Array("AE52", "TT", "G:G", "No"), _ 
        Array("AE61", "Reactive", "R:R", "Item")) 

Filter3InSummary = Array(Array("AE43", "TT", "I:I", "<>Duplicate TT", _ 
             "G:G", "<>Not Tested", _ 
             "U:U", "Item")) 
For Each test In Filter3InSummary 
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 

答えて

0

列名がワークシートの最初の行にあると仮定して、配列の2,4,6要素を列名に置き換えます。列名がが指定された行に現れなければならないことに注意

.rows(1).Find(test(2),lookat:xlWhole).EntireColumn 

及び4,6

に同じ操作を行います。

Filter3InSummary = Array(Array("AE43", "TT", "CName1", "<>Duplicate TT", _ 
             "CName2", "<>Not Tested", _ 
             "CName3", "Item")) 

そしてこれを式で.Range(test(2))を交換それは失敗するでしょう。

+0

これを試しましたが、構文エラーが発生しました: 'Range(test(0))= wf.CountIfs(.rows(1).Find(test(2)、lookat:xlWhole).EntireColumn)、test _.rows(1).Find(test(2)、lookat:xlWhole).EntireColumn)、test(5)、_ .rows(1).Find(test(2)、lookat:xlWhole).EntireColumn) 、テスト(7)) ' –

関連する問題