- 締切済み
エクセルについて繰り返しの質問です。
エクセルについて繰り返しの質問です。 アラビア数字を漢数字に変換する関数でnumberstringがありますが、小数点以下も漢数字に変換する方法はありませんか? 具体的には例えば、 12345.67と入力したら、壹万贰阡叁佰肆拾伍元陆角柒分 と自動で変換させたいと考えています。 ちなみに中国で精算伝票作成時に試用したいと考えています。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
=ChinaNumber(TEXT(A1,"[$-804][DBNum2]G/標準元")) 式を示していませんでした。
- tsubu-yuki
- ベストアンサー率46% (179/386)
同じ内容を投稿する前に、先の質問をクローズした方が良いですよ。 で。 素直に「中国語対応」にしちゃえば良いのではないですか? https://support.office.com/ja-jp/article/Office-%E8%A8%80%E8%AA%9E%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B5%E3%83%AA-%E3%83%91%E3%83%83%E3%82%AF-82ee1236-0f9a-45ee-9c72-05b026ee809f?ui=ja-JP&rs=ja-JP&ad=JP
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
ウーン。ネット上の散見される変換式は汎用性に欠けていると思います。たとえば、添付図(下)のように小数点以下の桁数を変更すると不具合が発生します。これを避けるには、やっぱしVBAでチョイ補正するしかないのでは・・・。添付図(上)は、ChinaNumber()という変換補正関数を用いています。 Private Function CutStr(ByVal Text As String, _ ByVal Separator As String, _ ByVal N As Integer) As String Dim strDatas() As String strDatas = Split("" & Separator & Text, Separator, , 0) CutStr = strDatas(N * Abs(N <= UBound(strDatas))) End Function Public Function ChinaNumber(ByVal strNumber As String) As String Dim I As Integer Dim L As Integer Dim strChar As String Dim strNumber1 As String Dim strNumber2 As String Dim strNumber3 As String strNumber1 = CutStr(strNumber, ".", 1) strNumber2 = CutStr(strNumber, ".", 2) L = Len(strNumber2) If L > 0 Then strNumber1 = strNumber1 & "元" L = L - 1 For I = 1 To L strChar = Mid(strNumber2, I, 1) strNumber3 = strNumber3 & strChar & Mid("角分", I, 1) Next I End If ChinaNumber = strNumber1 & strNumber3 End Function 【注意】70の爺が急いで書いた関数。当然に改善の余地ありです。
- f272
- ベストアンサー率46% (8469/18132)
A1に12345.67と入力して A2に=IF(ISNUMBER(A1), TEXT(INT(A1),"[$-804][DBNum2]G/標準元")&IF(MOD(A1,1), TEXT(INT(MOD(A1*10,10)),"[$-804][DBNum2]0") &IF(INT(MOD(A1*10,10)),"角","") &TEXT(INT(MOD(A1*100,10)),"[$-804][DBNum2]0分。;;整"), "整"), "") と入力したら 壹万贰阡叁佰肆拾伍元陆角柒分 になりましたよ。
お礼
繰り返しの場合の件、不慣れで申し訳ございませんでした。