[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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.