- ベストアンサー
エクセルVBAでこういう事は可能でしょうか?
エクセルで同一セル内に存在する特定の文字を検出する方法を教えて下さい。 (例) A1のセルに 変更(2004/10/21) 変更(2004/1/15) 変更(2004/5/10) B1のセルに 変更(2004/10/3) 変更(2004/10/1) 削除(2004/7/23) 上記のようなデータがあるとします。検索条件として、変更の文字が付いてて、日付が(2004/10)のみデータだけ検出したいのです。上記の例で言うと、3件。 VBAを使って上記の条件でデータを抽出する事は可能でしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
件数が出れば良いのですか? さらに、VBAでしなくてはいけないのでしょうか? 関数だけで出来ますが・・・ A2に、 =(LEN(A1)-LEN(SUBSTITUTE(A1,"変更(2004/10","")))/10 B2に、 =(LEN(B1)-LEN(SUBSTITUTE(B1,"変更(2004/10","")))/10 でそれぞれのセル内に"変更(2004/10"の文字列が何個あるか分かります。 最後の10で割っているのは、"変更(2004/10"は10文字だからです。 VBAでも同じ事ができます。
その他の回答 (2)
- papayuka
- ベストアンサー率45% (1388/3066)
Or _stCnt ↓ Or stCnt の間違い
- papayuka
- ベストアンサー率45% (1388/3066)
あんまりスマートじゃないけど。 Sub Test() Dim stCnt As Integer, r As Range Dim s1 As String, fs As String fs = "変更(2004/10/*" For Each r In Selection If r.Text Like "*" & fs Then stCnt = 1 Do While stCnt < Len(r.Text) s1 = "" Do s1 = s1 & Mid(r.Text, stCnt, 1) stCnt = stCnt + 1 Loop Until Mid(r.Text, stCnt, 1) = Chr(10) _ Or _stCnt > Len(r.Text) If s1 Like fs Then MsgBox r.Address & " : " & s1 End If stCnt = stCnt + 1 Loop End If Next r End Sub