- ベストアンサー
エクセル2000で、アラビア数字を漢数字に変えれますか?
1→ 一 2→ 二 など。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 オプションをつけました。引数[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号 なります。
その他の回答 (8)
- imogasi
- ベストアンサー率27% (4737/17069)
>丁目の最初の数字だけを漢字に、他はそのまま 丁目までとそれ以後を2列に分離します。そして左列(前の部分)だけを 私の関数で漢字にしてください。 2列に分離するやり方(関数は) 田町1丁目2-3 田町1丁目 田町1-2-4 田町1 上行のタイプは=LEFT(A1,FIND("丁目",A1)+1) 下の行のタイプでは=LEFT(A2,FIND("-",A2)-1)&"丁目" です。後者で、住所原データによって、式の中の""の中の文字のハイフンの半角、全角を合わせて変えてください。
お礼
なるほど。 どうもありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
ためしに私も作ってみました。 マウスで範囲を選択して、変換させます。 単独の関数ですと、 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
お礼
ありがとうございました。 コピペで、使わせていただきました。
- imogasi
- ベストアンサー率27% (4737/17069)
#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であること。 役に立つでしょうか。
補足
どうもありがとうございました。 できました。 ちなみに、 南町1丁目23番4号とあった場合 南町一丁目23番4号にできますか? 丁目の最初の数字だけを漢字に、他はそのまま。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#3>文章中なんです そういうのって、過去にも似たような事例がありました。 http://okweb.jp/kotaeru.php3?qid=1138479 http://okweb.jp/kotaeru.php3?qid=1133703
お礼
参考させていただきます。 どうもありがとうございました。
- n_and_n
- ベストアンサー率16% (2/12)
隠しワークシート関数「NUMBERSTRING」を使って、変換できます。 =NUMBERSTRING(123,1) ⇒ 百二十三 =NUMBERSTRING(123,2) ⇒ 壱百弐拾参 =NUMBERSTRING(123,3) ⇒ 一二三
お礼
どうもありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
有名な例なので http://www.comrade.co.jp/ftp/pg1/manual/FormIO/FormIO12.htm をご覧ください。 文章的な中での話なら、VBAで簡単にできます。
補足
>文章的な中での話なら、VBAで簡単にできます。 文章中なんです。 たとえば、住所などです。 東京都港区赤坂6丁目→東京都港区赤坂六丁目にしたいんです。
- moon_piyo
- ベストアンサー率60% (88/146)
こんにちは セルの書式設定で 分類 = ユーザー定義 種類 = [DBNum1] (直接入力してください)
お礼
どうもありがとうございました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
セルの書式設定で 分類(その他)~種類(漢数字)を選ぶとできます。
補足
回答ありがとうございます。 >セルの書式設定で 分類(その他)~種類(漢数字)を選ぶとできます。 ないんです。 郵便番号と電話番号と正負記号の3つしかないんです。 追加できるのでしょうか?
お礼
どうもありがとうございました。 完璧でした。このまま使わせていただきます。m(__)m