Excel VBAの「FormatNumber 関数」について解説します。
FormatNumber 関数とは
Excel VBA の FormatNumber 関数は、数値を指定した書式で文字列として整形する関数です。
「小数点の桁数を揃えたい」「カンマ区切りで表示したい」「負の数の表示形式を指定したい」といったケースは多くあります。そんなときに便利なのが FormatNumber 関数です。
FormatNumber 関数の構文や実際の使い方について、サンプルコードを使ってわかりやすく解説していきます。
FormatNumber 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
FormatNumber(Expression, [NumDigitsAfterDecimal], [IncludeLeadingDigit], [UseParensForNegativeNumbers], [GroupDigits])
引数
| 指定項目 | 説明 |
|---|---|
| Expression | 【必須】書式を変更したい数値 (式) |
| NumDigitsAfterDecimal | 【省略可】小数点以下の桁数 |
| IncludeLeadingDigit | 【省略可】1未満の値で小数点前の「0」を表示するか |
| UseParensForNegativeNumbers | 【省略可】負の数を ( ) で囲むか |
| GroupDigits | 【省略可】桁区切り(カンマ)を入れるか |
省略時の表示形式はコンピューターの地域設定(ロケール)に依存します。
引数 IncludeLeadingDigit、UseParensForNegativeNumbers、および GroupDigits の設定は次のとおりです。
| 定数 | 値 | 説明 |
|---|---|---|
| vbTrue | -1 | True |
| vbFalse | 0 | False |
| vbUseDefault | -2 | コンピューターの地域設定を使用 |
戻り値
戻り値の型は、文字列型 (String) です。
解説(使用例)
ここからは、使用例のサンプルを使って解説します。
FormatNumber 関数の基本的な使い方
FormatNumber 関数の省略可能な引数を省略した場合に表示される表示形式を確認してみましょう。
'■FormatNumber関数サンプル01(地域の設定を確認)
Sub FormatNumber_Sample_01()
'省略可の引数を省略して地域の設定を確認します
Debug.Print "桁区切りと小数以下の桁数を確認"
Debug.Print "FormatNumber(12345.6789) = " & _
FormatNumber(12345.6789)
Debug.Print
Debug.Print "1未満の値の表示確認"
Debug.Print "FormatNumber(0.123456789) = " & _
FormatNumber(0.123456789)
Debug.Print
Debug.Print "負の数値の表示確認"
Debug.Print "FormatNumber(-123456789) = " & _
FormatNumber(-123456789)
End Sub
コード実行結果のイミディエイト画像がこちらです。
引数を省略した規定の値は、システムの地域設定に従ったデフォルトの値表示形式が次のように返されていることを確認できました。
- 桁区切り(カンマ)あり
- 小数以下の桁数は2桁
- 1未満の小数点前の「0」表示あり
- 負の数値の表示はマイナス「-」表示
指定書式になるように引数を設定する例
次の例は、指定の書式になるように引数を設定して出力します。
'■FormatNumber関数サンプル02(各引数の使用例)
Sub FormatNumber_Sample_02()
'引数を設定して表示を確認します
Debug.Print "カンマを無くし小数以下1桁にする"
Debug.Print "FormatNumber(12345.6789, 1, , , vbFalse)=" & _
FormatNumber(12345.6789, 1, , , vbFalse)
Debug.Print
Debug.Print "小数点前の「0」を表示しない"
Debug.Print "FormatNumber(0.123456789, , vbFalse)=" & _
FormatNumber(0.123456789, , vbFalse)
Debug.Print
Debug.Print "負の数を括弧( )で表示する"
Debug.Print "FormatNumber(-123456789, , , vbTrue)=" & _
FormatNumber(-123456789, , , vbTrue)
End Subコードを実行した結果が次のイミディエイト画像のとおりです。

引数を指定しない指定項目の部分は、デフォルトのままとするため空欄(省略)となっています。(空欄とせず指定してもよいのですが)
vbFalse のように定数で指定していますが、値 (0) を指定しても同じです。
FormatNumber関数の注意点
FormatNumber関数には次のような注意点があります。
戻り値は文字列
FormatNumber関数の戻り値は文字列 (String型) です。次の例をご覧ください。
'■FormatNumber関数サンプル02(セルのデータ書式設定)
Sub Sample_FormatNumber_06()
Dim nv As Double
nv = Range("A2").Value
Range("B2").Value = FormatNumber(nv)
End Subこのコードの実行結果(セルの画像) が次のとおりです。

セル B2 が文字列になっていることがわかります。セルの書式設定を数値に変更しないと支障が出ることがあるので注意が必要です。
FormatNumber関数で整形した後は String型(文字列)になるため、そのまま計算に使用するとエラーの原因になる場合があります。そんな場合は、計算が終わった後の最終的な「表示する直前」に使うのがよいでしょう。
変換後にVBAで数値として再計算する必要がある場合は CDbl 関数などで数値に変換する必要があります。
表示は地域設定(ロケール)に依存する
表示形式はWindowsの地域設定に影響されます。
したがって、実行するPCによって表示形式が変わる可能性がある点に注意する必要があります。
書式の細かい指定はできない
FormatNumber関数は手軽に使える点は良いのですが、「桁区切り記号」にカンマ以外を指定したり「負の数の符号」に「▲」を表示させたい場合などの細かい特殊な表示形式には対応できません。
細かい書式指定や自由なカスタマイズが必要な場合は、Format関数を使いましょう。

FormatNumber関数 と Format関数の違いは次のとおりです。
| 関数名 | 特徴 |
| FormatNumber | 簡単・定型表示(PCの設定に依存) |
| Format | 自由に書式指定可能(▲表示など) |
まとめ
VBA の FormatNumber 関数は、数値を見やすく整形するための便利な関数です。各引数に定数(値)を指定するだけで簡単に表示形式を変更できます。
指定できる表示項目は次のとおりです。
- 小数点以下の桁数指定:第2引数に数値で指定
- 0未満の値で小数点前の0を表示するかどうか:第3引数に指定
- 負の数の場合括弧表示にするかどうか:第4引数に指定
- カンマ区切りで表示するかどうか:第5引数に指定
これらの引数は全て省略可能ですが、省略時はPCの地域設定(ロケール)に従った表示になります。
特殊なフォーマットが必要な場合には「Format関数」を使う必要があります。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;
VBAの関数一覧はこちらからご参照ください。

VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!

