【VBAリファレンス|実務向け】数値を漢数字に変換する!実務で差がつくNUMBERSTRING関数とTEXT関数の使い分け

スポンサーリンク

導入

請求書や領収書、あるいは公的書類を作成する際、数字を「漢数字」で表記しなければならない場面は意外と多いものです。手入力で「一、二、三…」と打ち込んでいては、入力ミスが発生しやすく、効率も非常に悪いです。この記事では、Excelの関数を使って数値を一瞬で漢数字に変換する方法を解説します。このスキルを身につければ、入力の手間を省き、かつ正確な帳票作成が可能になります。

基礎知識

Excelで数値を漢数字に変換するには、主に「NUMBERSTRING関数」と「TEXT関数」の2つを使用します。
NUMBERSTRING関数はExcelの隠し関数(ヘルプには記載されていない関数)として有名で、特定の数値形式に変換するために非常に強力です。一方、TEXT関数は標準的な関数であり、表示形式を細かく指定できる汎用性の高さが特徴です。どちらも実務では頻繁に使用されます。

実装/解決策

数値を漢数字に変換する際のポイントは、変換後の「形式」をどうしたいかです。
NUMBERSTRING関数は、第2引数に1〜3の数値を指定することで形式を変えられます。
・1:十二万三千四百五十六(通常の漢数字)
・2:壱拾弐萬参阡四百伍拾六(大字)
・3:一二三四五六(数字の羅列)

TEXT関数では、「[DBNum1]」「[DBNum2]」「[DBNum3]」という表示形式コードを使用します。これらを組み合わせることで、桁区切りのカンマを入れたり、特定の数値だけを変換したりと柔軟な制御が可能です。

サンプルプログラム

VBAでこれらの処理を自動化したい場合、WorksheetFunctionオブジェクトを使用して関数を呼び出すことができます。以下に、セルA1の数値を漢数字に変換してB列に出力するサンプルコードを記述します。

Sub ConvertToKanji()
‘ セルA1の数値を漢数字に変換してセルB1に書き出す例
Dim rngTarget As Range
Set rngTarget = Range(“A1”)

‘ NUMBERSTRING関数はVBAのWorksheetFunctionでは呼び出せないため
‘ Evaluate関数を使って実行します
‘ 第2引数の「1」は通常の漢数字形式を指定
Range(“B1”).Value = Evaluate(“NUMBERSTRING(” & rngTarget.Value & “, 1)”)

‘ TEXT関数を使用して大字に変換する場合
‘ 「[DBNum2]」を指定することで壱拾弐萬…という形式になります
Range(“B2”).Value = Application.WorksheetFunction.Text(rngTarget.Value, “[DBNum2]G/標準”)

MsgBox “変換が完了しました。”
End Sub

応用・注意点

実務での注意点として、NUMBERSTRING関数は「負の数」や「小数点を含む数値」に対応していません。エラー値(#VALUE!)が返されてしまいます。もし、これらの数値を扱う必要がある場合は、VBAで自作関数を作成し、桁ごとに分割して漢数字に置換するロジックを組む必要があります。
また、TEXT関数の「[DBNum3]」は半角数字と漢数字を組み合わせたような形式になりますが、これを使う場面は限定的です。基本的には「[DBNum1](漢数字)」と「[DBNum2](大字)」を使い分けるのが一般的です。帳票のルールに合わせて、適切な変換方法を選択してください。

タイトルとURLをコピーしました