[[20090415232249]] 『VBAで任意の桁数の数字を抽出』(まじっく) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAで任意の桁数の数字を抽出』(まじっく)

 ・あいうえお12345かきく
 ・あ1234567かきくけこ
 ・あいう1234かきくけこ

 等の、特に規則性のないデータが入力してあるシートがあります。 

 このシートから連続する数字部分が5桁のデータが入力してあるセルを特定し、
 またその5桁の数字部分を抽出するにはどうしたら良いでしょうか?
 よろしくお願いいたします。 

 WindowsXp Excel2003です。

 一例

 Sub sample()
 Dim a, i As Long, ii As Long, msg As String
 a = Range("a1", Cells.SpecialCells(11)).Value
 With CreateObject("VBScript.RegExp")
     .Pattern = "[0-90-9]{5}"
     For i = 1 To UBound(a, 1)
         For ii = 1 To UBound(a, 2)
             If .test(a(i, ii)) Then
                 msg = msg & vbLf & Cells(i, ii).Address & _
                 vbTab & .execute(a(i, ii))(0)
             End If
     Next ii, i
 End With
 MsgBox IIf(Len(msg), msg, "No such data")
 End Sub
 (seiya)
 修正

 seiya様、提示ありがとうございます。
 しかしながら、最後の行でエラーになってしまいました。
 あと、最初に書き忘れてしまったのですが、この数字部分は
 全角で入力してあるセルと、半角のセルが混在しておりまして、
 これらも区別なく検出できれば良いと思っております。

 ExcelVBAは一通り勉強したつもりだったのですが、
 CreateObject関数というものは初めて見ました。
 勉強不足です(まじっく)

 1)
      .Pattern = "\d{5}"
 を
      .Pattern = "[0-90-9]{5}"
 に変更

 2) 
 MsgBox IIf(Len(msg), msg, "No such data")
                                         ↑ 追加
 (seiya)


 seiya様、ありがとうございます。
 コードの理解はまだ終わってないのですが、
 動作は完璧でした。これで仕事がはかどります。
 本当に助かりました!
 (まじっく)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.