- 締切済み
Excel住所に4桁以上の数字が含まれるセルを抽出
お世話になります。 住所が入ったセルが並んでおり、番地などに4桁以上の数字が含まれている箇所を抜き出したいんですが、よい解決方法はないでしょうか? 数字だけが入ったセルならできるんですが、文字列が含まれるとスキル不足で叶いません・・・。 恐れ入りますが、ご教示いただけますとありがたいです。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Chiquilin
- ベストアンサー率30% (94/306)
とりあえず 10個くらい例を提示してみてはいかがでしょう。 全角半角などどんなデータなのかよく分かりません。 具体的に説明しないと 具体的な回答は付けづらいです。
- imogasi
- ベストアンサー率27% (4737/17069)
質問文を、もう少し丁寧に((予想される)場合などに例示して言及)書かないと答えが正確に出せないと思う。 例えば数字が、全角か半角か、など。 ーー 質問者は、エクセルの関数や操作で答えの出るやり方を希望しているの だろうが、関数ではむつかしいと思う。 操作の方法でも「検索」操作で、条件を、表現できる・指定できるかどうか。 ーー 下記はVBAの処理だが、質問者に回答しても、役立たないかもしれないが、 「スモールなフリーソフトをWEBで探した」と思って、やってみたらどうか。 そいう意図で書いています。 ーー 「正規表現」は、文字列を対象にした検索や置換を考える場合の、世界標準の考えであるようです。 VBScriptの中で使えてRegExpという機能の中で使えます。 多分下記のコピぺーー>実行で使えると思う。 ==>うまく行かない場合は、無視してあきらめてください。 パターンの作り方は、勉強・経験を積まないと、つくりにくいですが。 本質問の件は、易しい方かなと思って、やってみました。 === 回答のVBAの使い方は シートの画面を出しておいて ALTキー+F11キー(2つを同時押しする)と、標準モジュールの画面になるので 下記コードのtest04の行からEnd Subの行までコピーして、標準モジュールの画面に 貼り付けて、F5キーを押す(実行する意味)。 ただし条件があり (1)関係シートは2つあり、データはSheet1、結果はSheet2としているが 用意する必要がある。Sheet1には住所データが、毎行入っていること。 質問者の場合に合わせて、コピー貼り付けしたコード内の、シート名に当たる 箇所をを下記コードコピー後の上で修正してください。 ーーー '参考 パターンについて http://www.megasoft.co.jp/mifes/seiki/ など Sub test04() Set sh1 = Worksheets("Sheet1") '原データのシート Set sh2 = Worksheets("Sheet2") '白紙のシートを用意 k = 2 'Sheet2への書き出し開始行番号 '--正規表現を使う Dim RegEXP As Object Dim mc As Object Dim m As Object Set RegEXP = CreateObject("VBScript.RegExp") '---探すパターンを定義 'RegEXP.Pattern = "(\d+)" '4桁連続半角数字の場合のパターン RegEXP.Pattern = "[0-9]+" '4桁連続全角数字の場合のパターン -は半角のこと RegEXP.Global = True '--- lr = sh1.Range("A100000").End(xlUp).Row 'A列最下行の行番号を探索 MsgBox "確認:A列データ最終行=" & lr '---該当をSheet2のA,B列に吐き出し For i = 1 To lr s = Cells(i, "A") 'A列のi 行目の文字列を対象にして Set mc = RegEXP.Execute(s) ' MsgBox mc.Count For Each m In mc sh2.Cells(k, "A") = i '存在したSheet1の行番号 sh2.Cells(k, "B") = "'" & m.Value 'submatches(0) k = k + 1 Next Next i End Sub 例データ Sheet1のA1:A15 大阪市北区123 大阪市北区1243 大阪市北区柴田町125-3456-77 大阪市北区126 東京都千代田区4番町 銚子市神社町11-2345 町田市緑町45789-1 大阪市北123 大阪市北区1243 大阪市北区柴田町125-3456-77 大阪市北区126 東京都千代田区4番町 銚子市神社町11-2345 町田市緑町45789-7 町田市緑町45789-2 -- 実行結果 Sheet2 A1:B12 該当行 内容 6 11 8 123 9 1243 10 3456 11 126 12 4 13 11 13 2345 14 45789 14 7 15 45789
- HohoPapa
- ベストアンサー率65% (455/693)
>番地などに4桁以上の数字が含まれている箇所を抜き出したい 4桁以上の数字が含まれているかどうかを調べ、 その結果(含む/含まない)を適当なセルに表示するのではなく、 4桁以上の数字の羅列部分を適当なセルに取り出すんですね? 数字とは、半角の0~9ですね? 例えば 山川村1234番地森ビル5F67890号 といった場合、 どのような結果を期待していますか? VBAは扱えますか?
- msMike
- ベストアンサー率20% (364/1804)
》 住所が入ったセルが並んでおり、 》 番地などに4桁以上の数字が含まれている… どういう「住所」か、 その「セル」がどういう風に「並んでお」るのか、 どんな姿で「4桁以上の数字が含まれている」のか、 「番地など」ということは「番地以外にも」あり得るのか、 等々が一目で判るように、具体例を幾つかを行列番号入りで示してくださいナ!