文字検索について教えてください。
文字内に指定した文字がはいっているかどうかはINSTR関数で<>0でなければ
指定文字が入っているということとHPに書いてあったのですが、
Dim moji as String
moji = qqqqqkqqkkqqqkqqqq
INSTR(moji,"k") → 6が返ってくるので<>0ではなく、Kが入っているということになる。
文字内に指定した文字が何文字入っているかどうかは調べれないんでしょうか?
moji の中にkがいくつはいっているかを調べたいんです。
よろしくお願いします。
InStr([開始位置,]文字列,検索文字[,比較モード])
ですので INSTR(moji,"k") で見つかった位置+1を
次の開始位置にしてゼロになるまで(これ以上は無い)
For 文で探してカウントしたら如何ですか?
又は下記でやってみるとか。
Dim moji As String
Dim dat() As String
Dim kazu As Integer
moji = "qqqqqkqqkkqqqkqqqq"
dat = Split(moji, "k")
kazu = UBound(dat)
Dim moji As String
moji = "qqqqqkqqkkqqqkqqqq"
Debug.Print Len(moji) - Len(Replace(moji, "k", ""))
nanashiさんのを改良
Dim moji As String
moji = "qqqqqkqqkkqqqkqqqq" '文字列
smoji = "kk" '検索文字
Debug.Print (Len(moji) - Len(Replace(moji, smoji, ""))) / Len(smoji)
私はこんな方法でやっちゃいます。(むちゃくちゃでごめんなさい)
Dim moji As String
Dim splitdata() As String
moji = "qqqqqkqqkkqqqkqqqq"
splitdata = Split(moji, "k")
Debug.Print CStr(UBound(splitdata))