電子書籍の厳選無料作品が豊富!

題名ではわかりにくいかもしれませんが、

A1セルに
「東京都世田谷区新町1235」とあるとします

それを、関数を使ってB1セルに
「東京都世田谷区新町一二三五」と表示できないでしょうか?

出来れば、マクロなどの、一過性のものではなく、英数字を変更すると、漢数字も自動的に変更されるものがいいんです。

また、英数字と漢数字両方のセルが必要なので、セルの書式設定を使ってA1セルを漢数字に変換するのは使えません

A 回答 (2件)

=JapanNumber(A1)



Public Function JapanNumber(ByVal Text As String) As String
  Text = Replace(Text, "0", "0")
  Text = Replace(Text, "1", "一")
  Text = Replace(Text, "2", "二")
  Text = Replace(Text, "3", "三")
  Text = Replace(Text, "4", "四")
  Text = Replace(Text, "5", "五")
  Text = Replace(Text, "6", "六")
  Text = Replace(Text, "7", "七")
  Text = Replace(Text, "8", "八")
  JapanNumber = Replace(Text, "9", "九")
End Function

と、シコシコと置換。
    • good
    • 0
この回答へのお礼

すばやい回答ありがとうございました。
なるほど、そういうやり方もあるんですね。

お礼日時:2007/04/05 11:02

マクロ以外では、数式がとても長くなるか、作業列を多く使用すると思われるので、


一過性ではないマクロを作成しました。

A列に入力した場合のみ、B列仁変換します。
'=======================================================
Private Sub Worksheet_Change(ByVal Target As Range)
Dim サンプル文字列 As String
Dim i As Integer
Dim buf As String
Dim 変換後文字列 As String

If Not Target.Column = 1 Then Exit Sub

サンプル文字列 = Target.Value
変換後文字列 = ""

i = 1
Do While (1)
buf = Mid(サンプル文字列, i, 1) '1文字ずつ抜き出す
If (buf = "") Then 'サンプル文字列の終端の場合ループを抜ける
Exit Do
ElseIf ("0" <= buf And buf <= "9") Then '0~9の場合
Select Case buf 'ここで変換する
Case "0"
buf = "0"
Case "1"
buf = "一"
Case "2"
buf = "二"
Case "3"
buf = "三"
Case "4"
buf = "四"
Case "5"
buf = "五"
Case "6"
buf = "六"
Case "7"
buf = "七"
Case "8"
buf = "八"
Case "9"
buf = "九"
End Select
End If

変換後文字列 = 変換後文字列 & buf '抜き出した1文字(変換後)をつなげ直す

i = i + 1
Loop

Cells(Target.Row, 2).Value = 変換後文字列

End Sub
    • good
    • 0
この回答へのお礼

すばやい回答ありがとうございます。
イベントプロシージャを使えばいいんですね。
ありがとうございました

お礼日時:2007/04/05 11:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!