- ベストアンサー
英数字を漢数字に変換したものを隣のセルに出力する関数は?
題名ではわかりにくいかもしれませんが、 A1セルに 「東京都世田谷区新町1235」とあるとします それを、関数を使ってB1セルに 「東京都世田谷区新町一二三五」と表示できないでしょうか? 出来れば、マクロなどの、一過性のものではなく、英数字を変更すると、漢数字も自動的に変更されるものがいいんです。 また、英数字と漢数字両方のセルが必要なので、セルの書式設定を使ってA1セルを漢数字に変換するのは使えません
- みんなの回答 (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 と、シコシコと置換。
その他の回答 (1)
- meron_
- ベストアンサー率40% (51/127)
マクロ以外では、数式がとても長くなるか、作業列を多く使用すると思われるので、 一過性ではないマクロを作成しました。 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
お礼
すばやい回答ありがとうございます。 イベントプロシージャを使えばいいんですね。 ありがとうございました
お礼
すばやい回答ありがとうございました。 なるほど、そういうやり方もあるんですね。