VBA FormatPercent関数 数値を%型式の文字列に変換

VBA FormatPercent関数 数値を%型式の文字列に変換

Excel VBAの「FormatPercent 関数」について解説します。

目次

FormatPercent 関数とは

Excel VBA の FormatPercent 関数は、数値をパーセント (末尾に%記号付加) 型式の文字列に変換します。

VBAで計算結果を「50%」のように表示したいのに、単純な計算のままでは「0.5」という数値になってしまいます。そんな時に便利なのが FormatPercent 関数です。割合や達成率などを扱う場面では頻繁に登場するため、正しい使い方を理解しておきましょう。

この記事では、FormatPercent 関数の構文や実際の使い方について、サンプルコードを使ってわかりやすく解説していきます。

FormatPercent 関数(Visual Basic for Applications リファレンス)

構文(引数と戻り値)

Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。

構文

FormatPercent(Expression, [NumDigitsAfterDecimal], [IncludeLeadingDigit], [UseParensForNegativeNumbers], [GroupDigits])

引数

指定項目説明
Expression【必須】書式を設定する数値 (式)
NumDigitsAfterDecimal【省略可】小数点以下の桁数を指定
IncludeLeadingDigit【省略可】1未満の値で小数点前の「0」を表示するか
UseParensForNegativeNumbers【省略可】負の数を ( ) で囲むか
GroupDigits【省略可】桁区切り(カンマ)を入れるか

省略時の表示形式はコンピューターの地域の設定(ロケール)に依存します。
引数 IncludeLeadingDigitUseParensForNegativeNumbers、および GroupDigits の設定は次のとおりです。

定数説明
vbTrue-1True
vbFalse0False
vbUseDefault-2コンピューターの地域設定を使用

戻り値

戻り値の型は、文字列型 (String) です。

解説(使用例)

ここからは、使用例のサンプルを使って解説します。

FormatPercent 関数の基本的な使い方

FormatPercent 関数の省略可能な引数を省略した場合に表示される既定の表示形式を確認します。

'■FormatPercent関数サンプル01(デフォルトの表示)
Sub FormatPercent_Sample_01()
Dim exp As Double
    
'第1引数以外は省略した既定の%表示を確認
exp = 0.5
Debug.Print "桁区切りと小数以下の桁数を確認"
Debug.Print "FormatPercent(" & exp & ") = " & _
FormatPercent(exp)

exp = 0.0005
Debug.Print
Debug.Print "1未満の値の表示確認"
Debug.Print "FormatPercent(" & exp & ") = " & _
FormatPercent(exp)

exp = -0.5
Debug.Print
Debug.Print "負の数値の表示確認"
Debug.Print "FormatPercent(" & exp & ") = " & _
FormatPercent(exp)

End Sub
FormatPercent関数サンプル01(デフォルトの表示)実行結果画像

コード実行結果のイミディエイト画像がこちらです。

引数を省略した規定の値は、システムの地域設定に従ったデフォルトの値表示形式が次のように返されていることが確認できました。

  • 小数以下の桁数は2桁
  • 1未満の小数点前の「0」表示あり
  • 負の数値の表示はマイナス「-」表示

引数を指定して表示を制御する例

次の例は、引数を設定して指定の表示形式で出力させます。

'■FormatPercent関数サンプル02(引数で表示を制御する)
Sub FormatPercent_Sample_02()
Dim exp As Double
    
'引数設定で表示を制御します
exp = 0.5
Debug.Print "小数以下の桁数を制御(1桁にする)"
Debug.Print "FormatPercent(" & exp & ", 1, , , vbFalse) = " & _
FormatPercent(exp, 1, , , vbFalse)

exp = 0.0005
Debug.Print
Debug.Print "0未満で小数点前の「0」を表示しない"
Debug.Print "FormatPercent(" & exp & ", , vbFalse) = " & _
FormatPercent(exp, , vbFalse)

exp = -0.5
Debug.Print
Debug.Print "負の数を括弧( )で表示する"
Debug.Print "FormatPercent(" & exp & ", , , vbTrue) = " & _
FormatPercent(exp, , , vbTrue)

End Sub

コードを実行した結果が次のイミディエイト画像のとおりです。

FormatPercent関数サンプル02実行結果画像

引数を指定しない指定項目の部分は、デフォルトのままとするため空欄(省略)となっています。(空欄とせずすべて指定すれば地域が変更されても影響を受ることはありません)

vbFalse のように定数で指定していますが、値 (0) を指定しても同じです。

FormatPercent 関数の注意点

FormatPercent 関数には次のような注意点があります。

戻り値は文字列

FormatPercent 関数の戻り値は文字列 (String型) です。次の例をご覧ください。
セルの値を取得して、合計値に対する割合を計算してパーセンテージで指定セルに表示しています

'■FormatPercent関数サンプル03(セルのデータ操作)
Sub Sample_FormatPercent_03()
  Dim i As Long
  Dim exp As Double
    
  For i = 2 To 6
    exp = Cells(i, 2).Value / Cells(7, 2).Value
    Cells(i, 3).Value = FormatPercent(exp, 1)
  Next i
End Sub

このコードの実行結果(セルの画像) が次のとおりです。

FormatPercent関数サンプル04実行結果のセル範囲画像

セル C2:C6 が文字列になっていることがわかります。文字列のため C7 の合計が「100.0%」になっていません。
セルの書式設定を数値に変更しないと支障が出ることがよくわかる例です。NumberFormatLocal プロパティを変更するなどの注意が必要です。

表示は地域設定(ロケール)に依存する

表示形式はWindowsの地域設定に影響されます。したがって、実行するPCによって表示形式が変わる可能性がある点に注意する必要があります。

影響を受けないようにするためには、引数を省略しないようにしましょう。

書式の細かい指定はできない

FormatPercent関数は手軽に使える点は良いのですが、負の数を括弧 ( ) 表示にするのではなく「負の数の符号」に「▲」を表示させたい場合などの特殊な表示形式には対応できません。

そのような書式指定や自由なカスタマイズが必要な場合は、Format関数を使いましょう。

FormatPercent関数 と Format関数の違いは次のとおりです。

関数名特徴
FormatPercent簡単・定型表示(PCの設定に依存)
Format自由に書式指定可能(▲表示など)

まとめ

おわりに

VBA の FormatPercent 関数は、割合データを見やすいパーセンテージで書式設定 (末尾に%記号付加) された文字列を返します。

指定できる表示項目は次のとおりです。

  • 小数点以下の桁数を指定:第2引数に数値で指定
  • 0未満の値で小数点前の0を表示するかどうか:第3引数に指定
  • 負の数の場合括弧表示にするかどうか:第4引数に指定
  • カンマ区切りで表示するかどうか:第5引数に指定

これらの引数は全て省略可能ですが、省略時はPCの地域設定(ロケール)に従った表示になります。

特殊なフォーマットが必要な場合には「Format関数」を使う必要があります。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!

よかったらシェアしてね!
  • URLをコピーしました!
目次