なぜ「漢数字への変換」が必要なのか?
実務において、公的な書類や請求書、契約書関連の資料を作成する際、半角数字(1, 2, 3…)を「一、二、三」や「壱、弐、参」といった漢数字で表記しなければならないケースは多々あります。手作業で打ち替えるのはミスのもとですし、何より時間の無駄です。今回は、Excelの一般機能を使って、半角数字を自動的に漢数字へ変換するスマートな方法を解説します。
基礎知識:Excelの「表示形式」と「NUMBERSTRING関数」
Excelには、数値そのものを変更するのではなく、見た目だけを漢数字に変える仕組みが備わっています。
1. 表示形式(ユーザー定義):セルの値を保持したまま、見た目だけを漢数字に変える方法です。計算が必要な数値セルに向いています。
2. NUMBERSTRING関数:数式を使って、別のセルに漢数字の結果を出力する方法です。こちらは「関数」ですが、Excelの公式ヘルプには載っていない「隠し関数」的な存在です。非常に強力で、実務でよく使われます。
実装・解決策
1. 表示形式で変換する(ユーザー定義)
セルの値を変えずに見た目を変えたい場合に使います。
[セルの書式設定]を開き、[ユーザー定義]を選択し、[種類]に以下を入力します。
・「[DBNum1]G/標準」→ 百二十三
・「[DBNum2]G/標準」→ 壱百弐拾参
・「[DBNum1]#,
0」→ 一二三
・「[DBNum2]#,
0」→ 壱弐参
2. NUMBERSTRING関数で変換する
数式として結果を出力したい場合に便利です。
「=NUMBERSTRING(対象セル, 種類)」の形式で記述します。
第2引数の「種類」は以下の通りです。
・1:百二十三(標準的な漢数字)
・2:壱百弐拾参(大字・銀行等の帳票用)
・3:一二三(数字を一つずつ変換)
サンプルプログラム:VBAで一括変換する
実務では、大量のデータに対してこの変換を適用したいこともあるでしょう。VBAを使って、選択した範囲の数値を「漢数字」の文字列に変換するマクロを紹介します。
Sub ConvertToKanji()
‘ 選択範囲内の数値を漢数字(大字)に変換するマクロ
Dim cell As Range
‘ 選択範囲の各セルに対して処理を行う
For Each cell In Selection
‘ セルが数値であるか確認
If IsNumeric(cell.Value) And cell.Value <> “” Then
‘ NUMBERSTRING関数を利用して変換(種類2:壱百弐拾参)
‘ WorksheetFunctionはNUMBERSTRINGに対応していないため
‘ Evaluateメソッドを使用して実行します
cell.Value = Application.Evaluate(“NUMBERSTRING(” & cell.Value & “, 2)”)
End If
Next cell
MsgBox “変換が完了しました。”
End Sub
応用・注意点
・計算機能の喪失:上記VBAの例のように、値を直接書き換えてしまうと、元の「数値」データは消滅します。計算に使用するセルには、表示形式の設定を利用し、計算結果を表示用として別のセルに作成する場合は関数を使うのがベストです。
・NUMBERSTRING関数の制限:この関数は非常に便利ですが、負の数や小数には対応していません。負の数がある場合は、あらかじめ「ABS関数」で絶対値にするなどの前処理が必要です。
・大字の使い分け:ビジネスでは「壱、弐、参」といった大字が好まれます。相手先や書類のルールに合わせて、表示形式の「DBNum1」と「DBNum2」を使い分けてください。
これらを使いこなすことで、書類作成の手間を大幅に削減できます。ぜひ明日からの業務で活用してみてください。
