プロが教える店舗&オフィスのセキュリティ対策術

特定の文字列をカウントするマクロ

cnt = worksheetFunction.subtotal(3,Range(“G1:G10000”)) - 1

上記カウントするプログラムの「特定の文字列」でカウントしたいです。
※ワイルドカー
ドも上記したいです。
※フィルタでソートを掛けた状態で対応して欲しいです。

不明点あれば補足しますので
よろしくお願いします。

A 回答 (1件)

こんばんは。



たぶん、ご質問のアプリはExcelだとは思いますが、もし違うようなら、指定してください。

cnt = worksheetFunction.subtotal(3,Range(“G1:G10000”)) - 1
こういう引用があると返ってややこしいです。

非表示の行はカウントしない、検索する文字列の数を数えるマクロ・またはユーザー定義関数。

=SUMPRODUCT(SUBTOTAL(3,OFFSET(G1,ROW(G1:G10000)-1,))*(G1:G10000="A"))
ただし、これでは、ワイルドカードが使えません。たぶん、CountIf を組み合わせれば、それも可能になると予想はできますが、VBAですと、このようにすぐにワイルドカードが使えます。

=VisCountIf(G1:G10000,"A*")

'//標準モジュールのみ
Function VisCountIf(rng As Range, ByVal sText As String)
 Dim cnt As Long
 Dim c As Range
 For Each c In rng
  If c.EntireRow.Hidden = False Then
   If UCase(c) Like UCase(sText) Then
    cnt = cnt + 1
   End If
  End If
 Next
 VisCountIf = cnt
End Function
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!