- 締切済み
エクセルについて質問です。
エクセルについて質問です。 アラビア数字を漢数字に変換する関数でnumberstringがありますが、小数点以下も漢数字に変換する方法はありませんか?
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- tsubu-yuki
- ベストアンサー率46% (179/386)
初めに、NUMBERSTRINGという関数についての解説ページの例 http://www.excel-list.com/numberstring.html DATESTRING(和暦で日付を返す)なんていう関数も実はあります。 DATEDIF関数と同様、エクセルのヘルプには存在しない、 便利なのか不便なのかも解りづらい関数の一つですね。 さて。 > アラビア数字を漢数字に変換 漢数字。はぃ。 既にいくつか回答が出てきていますが、念のため。 例えば「123.456」という数値。 1) 一二三.四五六 2) 百二十三.四五六 3) 壱百弐拾参.四五六 4) その他(面倒くさいので略) どれがお好みですか。 ソレによって微妙にやり方が変わります。 この辺り、補足いただけると(誰かが)考える目安に出来そうです。 ワークシート関数でも出来るかもしれませんが、 私なら多分、ユーザー定義関数を作ります。 十とか百とか要らないよ、という、(1)方式で良ければ Function NumStr(myNum As Double) As String Dim KanjiArr As Variant Dim myStrA As String Dim myStrB As String KanjiArr = Array("〇", "一", "二", "三", "四", "五", "六", "七", "八", "九") myStrB = "" For i = 1 To Len(myNum) myStrA = Mid(myNum, i, 1) If myStrA Like "[0-9]" Then myStrA = KanjiArr(myStrA) ElseIf myStrA = "." Then myStrA = StrConv(myStrA, vbWide) Else myStrA = " " End If myStrB = myStrB & myStrA Next NumStr = myStrB End Function この程度でもできますね。 ただし、返り値が文字列扱いです。 あとあとの計算には使えないので注意です。 で、マメ知識。 「日本語による数え方」には、 いわゆる「小数点」という考え方が無いんです。 1より小さい数に関しては、分厘毛糸忽微・・・と表現します。 123.456⇒壱百弐十三(と)四分五厘六毛 なので、件のNUMBERSTRING関数については整数部分しか扱わない、 ということです。 DATESTRING関数も和暦だけど数字はアラビア数字だけ、 しかもどちらも返り値は文字列型なので、あとの計算に使えない。 という半端さですので、しょうがないところなのかもしれませんね。 なので、数値の書式形式⇒その他⇒漢数字(又は大字)で 画面上の表示だけ変えてやるのが吉なのかもしれませんね。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【訂正】 123.45⇒壱百弐拾参.壱四伍 と変換するには =XferNumber(NUMBERSTRING(CutStr(A1,".",1),2) & "." & NUMBERSTRING(CutStr(A1,".",2),2)) ともう一工夫する必要がありました。 Public 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 XferNumber(ByVal NumberText As String) As String Dim strText1 As String Dim strText2 As String strText1 = CutStr(NumberText, ".", 1) strText2 = CutStr(NumberText, ".", 2) strText2 = Replace(strText2, "拾", "") strText2 = Replace(strText2, "百", "") strText2 = Replace(strText2, "千", "") strText2 = Replace(strText2, "万", "") strText2 = Replace(strText2, "億", "") XferNumber = strText1 & "." & strText2 End Function
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Q、小数点以下も漢数字に変換する方法はありませんか? A、私は出来ませんがあると思いますよ。 要は、コンマの左と右とを分割して結合するなど。添付図では、以下のCutStr()を用いています。が、これは、私がExcelは一度も利用したことがない門外漢ゆえの苦肉の策。Excel利用者であれば、CutStr()など利用しないでチョチョンがチョンだと思いますよ。 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
- msMike
- ベストアンサー率20% (364/1804)
》 関数でnumberstringがありますが… ホントですか!? Excel 2013 のヘルプで「numberstring」を検索してみましたが、該当する情報が出てきません。 どういう使い方をするのか、参考になる記事の URL を是非教えてください。
- watabe007
- ベストアンサー率62% (476/760)
>小数点以下も漢数字に変換する方法はありませんか? セルの書式設定からユーザー定義で [DBNum1]G/標準 で漢数字に表示されませんか
- lovelykajiyan
- ベストアンサー率34% (65/190)
比べて見てください。 =SUBSTITUTE(TEXT(A1&"","[DBNum1]標準"),".","点") =TEXT(A2&"","[DBNum1]標準") 〔.〕と〔点〕です。
- mt2015
- ベストアンサー率49% (258/524)
セルの書式を「その他・漢数字」にする。 関数でやるならこんな感じ =TEXT(A1,"[DBNum1][$-ja-JP]G/標準")