• ベストアンサー

Excelで、数字・英数字・-のみを全角→半角にする & 3000番地2を3000-2表示にしたい

マクロ初心者です。 どなたか教えてください。 宜しくお願い致します。 Excelで入力されている住所を整理したいと思いましたが、書いた人によって全角でかいてあったり、~番地2などと書いてあったりとまちまちだったため、マクロを使って整えようと思いました。 http://okwave.jp/qa355804.html を参考に、数字・英数字を半角にするマクロを作りました。 ですが、「-」を半角にするマクロをどう組み込めばいいのかわかりません。 また、~番地を「-」に変換するには、Excelのアドイン機能を使ってできるようなリンク(http://sml.jp/html/program01.html)があったので、ダウンロードして使っていたのですが、上記マクロに一緒に組み込めればと思っています。 どなたか教えてください。 宜しくお願い致します。

質問者が選んだベストアンサー

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

ANo.1です。 >カタカナは全角のままで、数字とーだけ小文字にしたいんです…。 Function newname(c As String) As String  Dim st As String  Dim Match As Variant  Dim Matches As Variant  With CreateObject("VBScript.Regexp")     .Pattern = "[0-9a-zA-Z-]*"     .Global = True     If .Test(c) Then       Set Matches = .Execute(c)       For Each Match In Matches         st = StrConv(Match.Value, vbNarrow)         c = Replace(c, Match.Value, st)       Next     End If  End With  If InStr(c, "番地") Then    c = Replace(c, "番地", "-")    If Right(c, 1) = "-" Then c = Left(c, Len(c) - 1)  End If  newname = c End Function こちらではどうでしょうか? :"[0-9a-zA-Z-]*"、この中の英数字が半角文字であれば 全角文字に直して下さい。

poyo17
質問者

お礼

ありがとうございます! カンペキです!! 番地もーも半角 - になりました。 ただ、語尾が番地の時も番地が - になってしまいます…。 重ね重ね申し訳ないのですが、これもなんとかできませんか?? 上の方の助言に従い、やってみたのですが、うまくいかずエラーが出てしまいました…。 宜しくお願い致します。

すると、全ての回答が全文表示されます。

その他の回答 (4)

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

ANo.4です。 >ただ、語尾が番地の時も番地が - になってしまいます…。 たぶん"番地"の後ろにスペースを打ち込んでいるのでしょう。 >c = Replace(c, "番地", "-") を c = Replace(Trim(c), "番地", "-") として下さい。

poyo17
質問者

お礼

そうです、番地の後ろに 「~番地 アイウエオハイツ」となってました! そこは個別対応するとして、これで語尾に番地がきても大丈夫そうです! 本当にありがとうございました!!

すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

失礼します。 >番地が語尾にある時(4000番地)は「-」が表示されないようにしたいのですが、 >どうしたらいいでしょうか? Len関数とInStr関数を使えばどうでしょうか。 Len(c) で、文字数を取得する InStr(c, "番地") で、”番地”の文字列内の位置を調べる 得られた値を比較すれば、文字列の最後にあるかどうか判定できます。 判定結果をIf文で分岐処理すれば良いと思います。

poyo17
質問者

お礼

ありがとうございます!! 番地が語尾の場合はこれで解決できそうです! でも考えたんですが… 400番地 アイウエオハイツ102 という場合はどうすればいいんでしょうか? 空白("")って検索できますか?

すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

ユーザー定義関数なら Function newname(c As String) As String newname = StrConv(Replace(c, "番地", "-"), vbNarrow) End Function  = newname(セル番地) こうゆう事?

poyo17
質問者

お礼

ありがとうございます!! これすごいですね!! 試してみたら番地→ーになりました。 番地が語尾にある時(4000番地)は「-」が表示されないようにしたいのですが、どうしたらいいでしょうか?

poyo17
質問者

補足

上記試してみました。 英数字の大文字が小文字になるのはいいんですが、カタカナは全角のままで、数字とーだけ小文字にしたいんです…。 どう調整すればいいでしょうか?

すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>ダウンロードして使っていたのですが、上記マクロに一緒に組み込めればと思っています。 この場合は作成された方に聞いた方が早いというか、正しいように 思いますが。

poyo17
質問者

補足

ご回答ありがとうございます。 >この場合は作成された方に聞いた方が早いというか、正しいように 思いますが。 これを変更するんではなくて、こういう感じでやるにはどうしたらいいのかなぁと思ったので質問してみました。

すると、全ての回答が全文表示されます。

関連するQ&A