0

VBA初心者です。最後に、数式で対処できない Excel の問題が発生しました。ここに私のサンプルデータがあります:

-----------------------
|   |   A     |  B*   |
-----------------------
| 1 |  Text1  |  3001 |
-----------------------
| 2 |  Text2  |  0231 |
-----------------------
| 3 |  Text1  |  1003 |
-----------------------
| 4 |  Text3  |  0012 |
-----------------------

f(A1:A4, "Text1", B1:B4, "3") = 2 を達成したいと思います。

つまり、「Text1」を含む行ごとに、列 B に文字「3」が累積的に出現する回数を数えたいとします。列 B のセルは、テキスト型ではなく int 型であることに注意してください。vba を使用せずにこれを実現する方法があれば、それも歓迎します。

これが私がこれまでに持っているものです:

Function CountCharInStr(FilterStr As String, FilterRange As Range, SearchStr As String,    StrRange As Range) As Integer

    Dim Idx As Integer, IsFound As Boolean
    CountCharInStr = 0
    IsFound = False

    For Idx = 1 To FilterRange.Rows.Count
        IsFound = True
        If FilterRange(Idx) <> FilterStr Then
            IsFound = False
            Exit For
        End If

        If IsFound Then
            CountCharInStr = Len(StrRange(Idx)) - Len(Replace(StrRange(Idx), SearchStr, "")) + CountCharInStr
            Exit For
        End If
    Next Idx

End Function

関数は現在、初期値の 2 ではなく 0 を返します。また、デバッグ目的でユーザー定義関数をステップ実行する簡単な方法があるかどうかも知りたいです。

どうもありがとう!

4

1 に答える 1