• ベストアンサー

エクセル2000で、アラビア数字を漢数字に変えれますか?

1→ 一 2→ 二 など。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.8

こんにちは。 オプションをつけました。引数[Stopper]の文字以降は、数字を漢字に変換しません。ユーザー定義関数と一般プロシージャ両方に、オプションを入れてありますので、試してみてください。 前回のものを、そっくり置き換えてください。 '<標準モジュール> '一括で変換する場合 Sub SujiHenkan() Dim c As Range '設定:右となりにいくつ?(例:1つ右となりへ出力) Const Migi As Long = 1 '範囲をマウスで選んでください  For Each c In Selection   If Not IsEmpty(c) Then    If IsNumeric(c.Value) Or c.Value Like "*[0-9|0-9]*" Then     'オプションをつけました。     c.Offset(, Migi).Value = Suji2Kan(c.Value, , "丁目")    Else     c.Offset(, Migi).Value = c.Value    End If   End If  Next End Sub Function Suji2Kan(ByVal myString As String, _         Optional opt As Long = 1, Optional Stopper As String)  'Suji2Kan(文字列, [1 =一万二千三百四十五,2=壱萬弐阡参百四拾伍, _   一二三四五] ただし、非数字が入ると、2と3のみになる, [Stopper]それ以降は変換しない  Dim strItem As String  Dim buf As String, i As Long  If Not myString Like "[0-9|0-9]*" Then   For i = 1 To Len(myString)    strItem = Mid$(myString, i, 1)    If InStr(myString, Stopper) = i Then _      buf = buf & Mid$(myString, i): Exit For    If strItem Like "[0-9|0-9]" Then     buf = buf & Evaluate("NumberString(" & strItem & "," & opt & ")")     Else     buf = buf & strItem    End If   Next i   Else   buf = Evaluate("NumberString(" & myString & "," & opt & ")")  End If  Suji2Kan = buf End Function 単独で使用する場合、 =suji2kan(A1,1,"丁目") このようにすると、 南町一丁目23番4号 なります。

usubeni
質問者

お礼

どうもありがとうございました。 完璧でした。このまま使わせていただきます。m(__)m

その他の回答 (8)

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

>丁目の最初の数字だけを漢字に、他はそのまま 丁目までとそれ以後を2列に分離します。そして左列(前の部分)だけを 私の関数で漢字にしてください。 2列に分離するやり方(関数は) 田町1丁目2-3 田町1丁目 田町1-2-4 田町1 上行のタイプは=LEFT(A1,FIND("丁目",A1)+1) 下の行のタイプでは=LEFT(A2,FIND("-",A2)-1)&"丁目" です。後者で、住所原データによって、式の中の""の中の文字のハイフンの半角、全角を合わせて変えてください。

usubeni
質問者

お礼

なるほど。 どうもありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

ためしに私も作ってみました。 マウスで範囲を選択して、変換させます。 単独の関数ですと、 A1:          B1: 東京都港区赤坂6丁目  =suji2kan(A1)             (東京都港区赤坂六丁目) 12,345          =suji2kan(A10,2)              (壱萬弐阡参百四拾伍) のようになります。仕様はほとんどNumberstring関数と変わりはありません。 '<標準モジュール> Sub Arabic2KanHenkan() Dim c As Range '設定:右となりにいくつ?(例:1つ右となりへ出力) Const Migi As Long = 1 '範囲をマウスで選んでください  For Each c In Selection   If Not IsEmpty(c) Then    If IsNumeric(c.Value) Or c.Value Like "*[0-9|0-9]*" Then     c.Offset(, Migi).Value = Suji2Kan(c.Value)    Else     c.Offset(, Migi).Value = c.Value    End If   End If  Next End Sub ' Function Suji2Kan(ByVal myString As String, _         Optional opt As Long = 1)  'Suji2Kan(文字列, [1 =一万二千三百四十五,2=壱萬弐阡参百四拾伍, _   一二三四五] ただし、非数字が入ると、2と3のみになる  Dim strItem As String  Dim buf As String, i As Long  If Not myString Like "[0-9|0-9]*" Then   For i = 1 To Len(myString)    strItem = Mid$(myString, i, 1)    If strItem Like "[0-9|0-9]" Then     buf = buf & Evaluate("NumberString(" & strItem & "," & opt & ")")     Else     buf = buf & strItem    End If   Next i   Else   buf = Evaluate("NumberString(" & myString & "," & opt & ")")  End If  Suji2Kan = buf End Function

usubeni
質問者

お礼

ありがとうございました。 コピペで、使わせていただきました。

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

#3です。 >文章的な中での話なら、VBAで簡単にできます と書いたものの ユーザー関数です。 Function tokanj(a) x = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9) y = Array("〇", "一", "二", "三", "四", "五", "六", "七", "八", "九") z = StrConv(a, 8) For i = 0 To 9 z = Replace(z, x(i), y(i)) Next i tokanj = z End Function VBEの画面で、標準モジュールを挿入し、上記を貼り付ける。 A1に南町1丁目23番4号があるとして(半角数字でもよい) B1に式=tokanj(A1)と入れます。 結果は南町一丁目二三番四号 となります。関数感覚で使えます。 上記三->参、一->壱などにもなります。 Array()の中を変えれば、ほかにも語句->語句にも変えられます。 エクセル2000以上のVERであること。 役に立つでしょうか。

usubeni
質問者

補足

どうもありがとうございました。 できました。 ちなみに、 南町1丁目23番4号とあった場合 南町一丁目23番4号にできますか? 丁目の最初の数字だけを漢字に、他はそのまま。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

#3>文章中なんです そういうのって、過去にも似たような事例がありました。 http://okweb.jp/kotaeru.php3?qid=1138479 http://okweb.jp/kotaeru.php3?qid=1133703

参考URL:
http://okweb.jp/kotaeru.php3?qid=1138479,http://okweb.jp/kotaeru.php3?qid=1133703
usubeni
質問者

お礼

参考させていただきます。 どうもありがとうございました。

  • n_and_n
  • ベストアンサー率16% (2/12)
回答No.4

隠しワークシート関数「NUMBERSTRING」を使って、変換できます。 =NUMBERSTRING(123,1)  ⇒ 百二十三 =NUMBERSTRING(123,2)  ⇒ 壱百弐拾参 =NUMBERSTRING(123,3)  ⇒ 一二三

参考URL:
http://pc21.nikkeibp.co.jp/tech/excel36/29/,http://support.microsoft.com/default.aspx?scid=kb;ja;418360
usubeni
質問者

お礼

どうもありがとうございました。

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

有名な例なので http://www.comrade.co.jp/ftp/pg1/manual/FormIO/FormIO12.htm をご覧ください。 文章的な中での話なら、VBAで簡単にできます。

usubeni
質問者

補足

>文章的な中での話なら、VBAで簡単にできます。 文章中なんです。 たとえば、住所などです。 東京都港区赤坂6丁目→東京都港区赤坂六丁目にしたいんです。

  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.2

こんにちは セルの書式設定で 分類 = ユーザー定義 種類 = [DBNum1] (直接入力してください)

usubeni
質問者

お礼

どうもありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

セルの書式設定で 分類(その他)~種類(漢数字)を選ぶとできます。

usubeni
質問者

補足

回答ありがとうございます。 >セルの書式設定で 分類(その他)~種類(漢数字)を選ぶとできます。 ないんです。 郵便番号と電話番号と正負記号の3つしかないんです。 追加できるのでしょうか?

関連するQ&A