こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセルについて繰り返しの質問です。

エクセルについて繰り返しの質問です。
アラビア数字を漢数字に変換する関数でnumberstringがありますが、小数点以下も漢数字に変換する方法はありませんか?
具体的には例えば、
12345.67と入力したら、壹万贰阡叁佰肆拾伍元陆角柒分 と自動で変換させたいと考えています。
ちなみに中国で精算伝票作成時に試用したいと考えています。

投稿日時 - 2017-12-08 16:42:30

QNo.9405700

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

=ChinaNumber(TEXT(A1,"[$-804][DBNum2]G/標準元"))

式を示していませんでした。

投稿日時 - 2017-12-08 18:58:00

ANo.3

同じ内容を投稿する前に、先の質問をクローズした方が良いですよ。


で。

素直に「中国語対応」にしちゃえば良いのではないですか?
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

投稿日時 - 2017-12-08 18:56:33

お礼

繰り返しの場合の件、不慣れで申し訳ございませんでした。

投稿日時 - 2017-12-10 14:03:56

ANo.2

 ウーン。ネット上の散見される変換式は汎用性に欠けていると思います。たとえば、添付図(下)のように小数点以下の桁数を変更すると不具合が発生します。これを避けるには、やっぱし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の爺が急いで書いた関数。当然に改善の余地ありです。

投稿日時 - 2017-12-08 18:52:40

ANo.1

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分。;;整"), "整"), "")
と入力したら
壹万贰阡叁佰肆拾伍元陆角柒分
になりましたよ。

投稿日時 - 2017-12-08 17:03:26

あなたにオススメの質問