0

特定の文字列/文から特定の単語の出現をカウントしたい。私はすでに以下のコードで試しましたが、うまくいきません。

Sub main()
   MainStr = " yes no yes yes no yes no "
   Str1 = " yes "
   MsgBox UBound(Split(MainStr, Str1))
End Sub

上記のコードでは、MainStr から Str1 を検索します。ほとんどのブログで、People は「Split」機能を使用して発生回数をカウントするソリューションを提供しました。ただし、検索語がすぐ後に来ると、正しい結果が得られません。

上記のシナリオでは、検索ワードは「はい」で、3 番目と 4 番目の位置に来ています。

MainStr = " yes no yes no yes no yes " Str1 = " yes " の場合、上記のコードは以下のシナリオで正しい結果を返します。

解決策を見つけるためにすでに多くのことを試したり検索したりしたので、これを手伝ってください。

ありがとう !

4

2 に答える 2

0
I beleive you will need a loop, Not sure you can accomplish this with just 1 line of code, maybe I am wrong


Dim s As String
Dim searchWord As String
Dim iSearchIndex As Integer
Dim iCounter
searchWord = "YES"
s = "yes no yes yes no no yes yes yes no yes"
Do While True
    'get the location of the search word
    iSearchIndex = InStr(1, UCase(s), "YES")
    'check to make sure it was found
    If iSearchIndex > 0 Then
        'create a string removing the found word
        s = Mid(s, iSearchIndex + Len(searchWord))
        'add 1 to our counter for a found word
        iCounter = iCounter + 1
    Else
        Exit Do 'nothing found so exit
    End If
Loop
MsgBox CStr(iCounter)
于 2013-10-15T22:02:28.127 に答える