- 締切済み
エクセルVBA
セル上のデータ 「○○市△△区□□町5丁目39-6 ××ハイム506」 からVBAを使用し「5-39-6-506」のみ抽出する 方法を教えて下さい。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- n-jun
- ベストアンサー率33% (959/2873)
#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) ・・・全て半角英数字で入力。 です。
- n-jun
- ベストアンサー率33% (959/2873)
#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
お礼
ありがとうございます。 早速 A1に ○○市△△区□□町5丁目39-6 ××ハイム506 B1 =henkan(A1) と入力しましたがB1=#NAME?となってしまいます?? あまりエクセルに詳しくないため解説をお願いできないでしょうか。
- n-jun
- ベストアンサー率33% (959/2873)
正規表現の事かな? 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 ご参考まで。
お礼
ありがとうございます
- chiezo2005
- ベストアンサー率41% (634/1537)
http://hinekure.vba-soft.com/?eid=361698 に近いものがありますね。 全角用にすこしかえればよいでしょう。 また http://www.accessclub.jp/bbs5/0026/vba7877.html にもいろいろあります。 コメントとして完璧はできないです。 というのは 市名や町名XXハイムのところに数字があるとアウトです。 パターンが決まっているのであれば, 丁目とか番地を探してから明らかに番地になってから変換を始めるという すこし細かな動作をするコードを書く必要がありますね。
お礼
ありがとうございます
お礼
ありがとうございます。