• ベストアンサー

エクセル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を使って上記の条件でデータを抽出する事は可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

件数が出れば良いのですか? さらに、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)
回答No.3

Or _stCnt  ↓ Or stCnt の間違い

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

あんまりスマートじゃないけど。 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

関連するQ&A