- 締切済み
エクセル 英数字を表示したい
エクセルで、数字を入力し、英語を表示させることは できるのでしょうか? (例えば、”1”と入力し、”ONE”と表示させる) ご存知の方、宜しくお願い申し上げます。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
#4です。#4より少しマシな(ロジックをすっきりと桁数も12桁以上)のものを作りました。ご参考に。テストが十分でないのですが締めきりを気にしつつ取り急ぎ。 Sub test01() n = Cells(1, 1) l = Len(n) s = "" e1 = Array("", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", _ "elevn", "twelve", "therteen", "fourteen", "fifteen", "sixteen", "eighteen", "nineteen") e2 = Array("", "twenty", "therty", "fourty", "fifty", "sixty", "seventy", "eighty", "ninety") t = Array("", "", " thouthand ", " million ", " bilion ", " trilionn ") '----- n = InputBox("n=") s = "" l = Len(n) a = Int(l / 3) j = a b = l Mod 3 '------ If a = 0 Then GoTo p02 For i = a To 1 Step -1 bl = Mid(n, b + (i - 1) * 3 + 1, 3) GoSub xxx s = t(j) + s j = j - 1 Next i '------ p02: If b = 0 Then GoTo p01 '---残り最上位1桁か2桁 j = a + 1 s = t(j) + s bl = Mid(n, 1, b) GoSub xxx p01: Cells(1, 3) = s Exit Sub '----3桁処理サブルーチン xxx: lb = Len(bl) Select Case lb Case 1 n1 = Val(bl) '1の桁 s = e1(n1) + s Case 2 n12 = Val(bl) '10の桁と1の桁 If n12 < 20 Then '19以下 s = e1(n12) + s Else '20以上 n1 = Val(Mid(bl, 2, 1)) '1の桁 s = e1(n1) + s n2 = Val(Mid(bl, 1, 1)) '10の桁 s = e2(n2 - 1) + " " + s End If Case 3 n12 = Val(Right(bl, 2)) '10の桁と1の桁 If n12 < 20 Then '19以下 s = e1(n12) + s Else '20以上 n1 = Val(Mid(bl, 3, 1)) '1の桁 s = e1(n1) + s n2 = Val(Mid(bl, 2, 1)) '10の桁 s = e2(n2 - 1) + " " + s End If n3 = Val(Left(bl, 1)) '100の桁 s = e1(n3) + " hundred " + s End Select Return End Sub 入力はINPUTBOXで結果はC1に出していますが、ボタンクリックで数の入ったアクチブセルの右隣セルに英語語句を出すなど出来ます。
- imogasi
- ベストアンサー率27% (4737/17069)
下記のようなことを本格的にやれば出来るかも知れない。 エクセルのワークシートのA1に4桁以内の数字があるとして Sub test02() n = Cells(1, 1) l = Len(n) s = "" e1 = Array("", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", _ "elevn", "twelve", "therteen", "fourteen", "fifteen", "sixteen", "eighteen", "nineteen") e2 = Array("", "twenty", "therty", "fourty", "fifty", "sixty", "seventy", "eighty", "ninety") n2 = Val(Mid(n, l - 2 + 1, 2)) ' MsgBox n1 If n2 < 19 Then s = e1(n2) + s Else n1 = n2 Mod 10 s = e1(n1) + s n2 = Val(Mid(n, l - 2 + 1, 1)) s = e2(n2 - 1) + " " + s End If n3 = Val(Mid(n, l - 3 + 1, 1)) s = e1(n3) + " hundred " + s n4 = Val(Mid(n, l - 4 + 1, 1)) s = e1(n4) + " thoudand " + s Cells(1, 3) = s End Sub 取り急ぎのため、スペルミスやロジックミスがあったり、4桁で止めているのはお許し下さい。 お遊び的にご笑納下さい。 西洋式は3桁ごとに単位呼称が変わるのを頼りに もっと長い桁の数字も表せるプログラムコードが作れるかも知れない、が5桁以上の表現が難しい。 2335 two thoudand three hundred therty five 1446 one thoudand four hundred fourty six 9999 nine thoudand nine hundred ninety nine
お礼
ご回答ありがとうございます。 なかなか難しいものですね・・。 頂いたものを参考に5桁、6桁の場合も考えてみます。 ありがとうございました。
- HageoyaZ
- ベストアンサー率38% (60/154)
ううむ。 http://www2s.biglobe.ne.jp/~iryo/vba/VBA14c.html#no1452 のマクロでは単語と訳を一意に結び付けていますので、多くの桁にわたる数値を訳す機能はありません。 専用の翻訳エンジンをVBAと結びつけることができるのかどうかはちょっとわかりません。 私のレベルではこれ以上はちょっと無理です。ごめんなさい。
お礼
ご回答ありがとうございます。 さすがに難しいんでしょうか・・。 とりあえず教えて頂いたマクロを使って、ちょっと 考えてみます。 ありがとうございました。
- S-Fuji
- ベストアンサー率36% (592/1624)
何桁の数字を変換表示させるのでしょうか?。 取り敢えず、数字と英語の対応表を作っておき、VLOOKUP関数で英語を取り出し事は可能です。
補足
失礼しました。 具体的には、US$123,456.78と入力したものを US Dollar one hundred twenty three thousand four hundred fifty six and cent seventy eight というような形で表示したいのですが・・そのような ことはできるものでしょうか? 宜しくお願い致します。
- HageoyaZ
- ベストアンサー率38% (60/154)
入力セルと出力セルが別々でよろしければ http://www2s.biglobe.ne.jp/~iryo/vba/VBA14c.html#no1452 のようなマクロを組めば可能かと思われます。 入力セルと出力セルが同一な場合はちょっと思いつきません。
補足
早速のご回答ありがとうございます。 入力セルと出力セルは別々で構いません。 具体的には、US$123,456.78と入力したものを US Dollar one hundred twenty three thousand four hundred fifty six and cent seventy eight というような形で表示したいのです。 そのようなマクロを組むことも可能でしょうか? 宜しくお願い致します。
お礼
ご回答ありがとうございます。 なかなか大変そうですが、早速試してみたいと 思います。 ありがとうございました。