• ベストアンサー

エクセルで住所の半角数字を漢数字に一括変換するには?

 エクセル87で住所録を作って「1-2-34」等と入力していますが、それをワード98のはがき宛名印刷で印字すると「1-2-34」が横になります。  エクセルで住所の列だけ「1-2-34」を「一-二-三四」などのように一括で漢数字に変換したいのですが、簡単な方法はあるでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

表示形式=TEXT(C1,"[DBNum1]G/標準")などはC1セルが半角数字で無いと上手く行かないようです。住所を数字部分と漢字部分に部分に別セルに分けられれば使えるかもしれない。 住所漢字部分と丁目番地が1セルに混在しているときのために、数字を漢数字に変える、ユーザー定義の関数を作ってみました。 ツール-マクロ-BVEでVBEの画面になる。 そこで挿入-標準モジュールで出てくる画面に下記を コピペする。 Function kansuj(a) tb = Array("〇", "一", "ニ", "三", _ "四", "五", "六", "七", "八", "九") For i = 1 To Len(a) s = Mid(a, i, 1) '---ハイフン If s = "-" Then st = st & "-" GoTo p01 End If '----数字 全角、半角 If IsNumeric(s) Then If s >= "0" And s <= "9" Then p = Application.WorksheetFunction.Asc(s) st = st & tb(p) GoTo p01 Else st = st & tb(Val(s)) GoTo p01 End If End If '----その他全角文字 st = st & s p01: Next i kansuj = st End Function 使い方はA列に住所があるとして、B1に =kansuj(A1)といれてB2以下に式を複写する。 (結果) 大田区目黒123-1 大田区目黒一ニ三-一 関東1-23 関東一-ニ三 三七,六五三 三七六五三 一 一 三八,〇四八 三八〇四八 あ1-2-3 あ一-ニ-三 三七,六五三 三七六五三 2no3 ニno三 三 三 1-2-3 一-ニ-三 二三四 ニ三四 1-2 一-ニ 大阪市中央区道修町2-34 大阪市中央区道修町ニ-三四 ASC234 ASCニ三四 0 〇

kankororin
質問者

お礼

ありがとうございます。ちょっと風邪をひいて頭痛がしているので、収まってから実験させていただきます。

kankororin
質問者

補足

体調が悪く遅くなりましたがお礼です。 これで所期の結果がえられました。ありがとうございました。

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

よこから失礼します。 ご希望の結果は得る方法は#2の方が示されています。 補足というか、、出すぎたお節介なのですが、住所の場合は、アパート名などに全角半角のカタカナが混在する場合も考えられますので、それを考慮したマクロをご参考までに示します。 セル選択範囲内の数字のみを漢数字化し、カタカナや記号等は全角半角を保持したままになります。 '選択したセル範囲の、数字だけを漢数字に置きかえ Sub 数字の漢数字化()   On Error Resume Next   Application.ScreenUpdating = False   Dim num1, num2, num3   Dim i As Integer   Dim Rng As Range   num1 = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0")   num2 = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0")   num3 = Array("一", "二", "三", "四", "五", "六", "七", "八", "九", "〇")   For Each Rng In Selection     '数字のみ半角に統一     For i = 0 To 9       Rng.Value = Replace(Rng.Value, num1(i), num2(i))     Next i     '漢数字化     For i = 0 To 9       Rng.Value = Replace(Rng.Value, num2(i), num3(i))     Next i   Next Rng   Application.ScreenUpdating = True End Sub

kankororin
質問者

お礼

体調が悪く、遅くなりましたが、ご教示たいへんありがとうございました。

  • e30653
  • ベストアンサー率28% (32/114)
回答No.1

こんにちは。 住所の列を選択して、 「1」→「一」 「2」→「二」 ... 「9」→「九」 「0」→「〇」 と十回置換するのが一番簡単で早いと思います。 いかがでしょうか。

kankororin
質問者

お礼

ありがとうございます。ただ、2回目以降も同じことをやるのがすこしつらくて…

関連するQ&A

専門家に質問してみよう