2016-10-20 4 views
0

注:この質問は前の投稿hereで機能します。Excel VBA:タスクを実行する前に別のブックのセルに文字列が含まれているかどうか確認してください。

ここに私の問題の背景があります。私はフォルダ内に同じフォーマットの複数のテストファイルを持っています。私は、各作業本の列に「YES」という特定の金額を数える必要があります。私の以前の質問から、各ファイルを横切って "YES"を数え、カウンターをマスターワークブックに入れるマクロを得ることができました。次のマクロを示し、このコード:

Private Sub CommandButton1_Click() 

    Dim r As Range 
    With Worksheets("Sheet1") 
     For Each r In .Range("A2", .Range("A" & .Rows.Count).End(xlUp)) 
      r.Offset(0, 1).Value = getYesCount(r.Value) 
     Next 
    End With 
End Sub 

Function getYesCount(WorkBookName As String) As Long 
    Const FolderPath As String = "C:\Users\khanr1\Desktop\CodeUpdateTest\" 

    If Len(Dir(FolderPath & WorkBookName)) Then 
     With Workbooks.Open(FolderPath & WorkBookName) 
      With .Worksheets("Sheet2") 
       getYesCount = Application.CountIf(.Range("D:D"), "YES") 
      End With 
      .Close False 
     End With 
    Else 
     Debug.Print FolderPath & WorkBookName; ": Not Found" 
    End If 
End Function 

今私が持っている問題は、それに隣接する「警告」の文字列がある場合のみ、「YES」を数える機能を追加することです。テストファイルの1の次のスナップショットを参照してください:私の考えはした

enter image description here

:ここ

Warning Snap

は、マスターワークブック(CountResults.xlsm)のスナップショットですセルに「警告」が含まれているかどうかを確認する「If」関数を作成し、そうであればYES列をカウントします。また、列に複数の文字列が含まれる可能性があるため、列に文字列があるかどうかを確認できるマクロを作成することはできません。 「警告」または「警告*」(それに続く詳細がある場合)を指定する必要があります。

答えて

2
getYesCount = Application.CountIfs(.Range("D:D"), "YES", _ 
            .Range("B:B"), "Warning*") 
+0

ブリリアント! :)うまく動作します – Ridwan

関連する問題