• 締切済み

エクセルVBA

セル上のデータ 「○○市△△区□□町5丁目39-6 ××ハイム506」 からVBAを使用し「5-39-6-506」のみ抽出する 方法を教えて下さい。

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

#3です。 >あまりエクセルに詳しくないため解説をお願いできないでしょうか。 VBAがわからないと言う事でしょうか? 取り敢えず、 自分で関数を作ってみる http://takashixxx.blog88.fc2.com/blog-entry-21.html Visual Basic Editor は、ツール>マクロ>Visual Basic Editor をクリック。 「標準モジュール」と言う所に#2の Function henkan(st As String) As String から End Function をコピー・貼付けをして下さい。 その後に B1 =henkan(A1) ・・・全て半角英数字で入力。 です。

collcoll
質問者

お礼

ありがとうございます。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

#2です。 ユーザー定義関数なら A1に ○○市△△区□□町5丁目39-6 ××ハイム506 B1 =henkan(A1) で 5-39-6-506 Function henkan(st As String) As String Dim RegExp As Object Dim match, matches Dim str As String Set RegExp = CreateObject("VBScript.RegExp") RegExp.Pattern = "[0-9]+" RegExp.Global = True Set matches = RegExp.Execute(st) For Each match In matches str = str & match.Value & "-" Next henkan = Left(str, Len(str) - 1) End Function

collcoll
質問者

お礼

ありがとうございます。 早速  A1に ○○市△△区□□町5丁目39-6 ××ハイム506 B1 =henkan(A1) と入力しましたがB1=#NAME?となってしまいます?? あまりエクセルに詳しくないため解説をお願いできないでしょうか。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

正規表現の事かな? Sub try() Dim RegExp As Object Dim match, matches Dim st As String Dim str As String Set RegExp = CreateObject("VBScript.RegExp") st = "○○市△△区□□町5丁目39-6 ××ハイム506" RegExp.Pattern = "[0-9]+" RegExp.Global = True Set matches = RegExp.Execute(st) For Each match In matches str = str & match.Value & "-" Next MsgBox Left(str, Len(str) - 1) End Sub ご参考まで。

collcoll
質問者

お礼

ありがとうございます

  • chiezo2005
  • ベストアンサー率41% (634/1537)
回答No.1

http://hinekure.vba-soft.com/?eid=361698 に近いものがありますね。 全角用にすこしかえればよいでしょう。 また http://www.accessclub.jp/bbs5/0026/vba7877.html にもいろいろあります。 コメントとして完璧はできないです。 というのは 市名や町名XXハイムのところに数字があるとアウトです。 パターンが決まっているのであれば, 丁目とか番地を探してから明らかに番地になってから変換を始めるという すこし細かな動作をするコードを書く必要がありますね。

collcoll
質問者

お礼

ありがとうございます

関連するQ&A

専門家に質問してみよう