Excelで金額表示の書式設定を行い数値を合計する:VBA/マクロ便利Tips
業務効率化に役立つVBA/マクロのさまざまなTipsをコード例を交えて紹介していきます。今回は、数値の表示形式を指定できるNumberFormatLocalプロパティ、数値かどうかを判断するVal関数、セル内文字列の水平方向表示位置を決めるHorizontalAlignmentプロパティの使い方について。
セルに金額の表示形式を設定
例えば、金額を入力する場合、「1250」「2230」という表示ではなく、「1,250円」「2,230円」と表示したい場合があると思う。そういった場合の表示形式を設定する方法を解説しよう。
図1のようなデータがあったとする。
数値の表示形式を指定できるNumberFormatLocalプロパティ
このデータの金額の部分を3桁区切りで「円」という単位を付けて表示するには、NumberFormatLocalプロパティを使う。
NumberFormatLocalプロパティの書式
オブジェクト.NumberFormatLocal={表示形式}
オブジェクトには対象となるRangeオブジェクトを指定する。NumberFormatLocalプロパティには、オブジェクトの{表示形式}の文字列を設定する。
VBEを起動してModule1内に「表示形式の設定」というプロシージャを作成し、リスト1のコードを記述する。
Option Explicit Sub 表示形式の設定() Range("C2:c5").NumberFormatLocal = "#,###円" End Sub
「Range("C2:C5")」は金額が表示されているセルだ。NumberFormatLocalプロパティに、「"#,###円"」という{表示形式}を指定する。これは、金額を3桁で区切って「円」を追加する{表示形式}だ。
実行結果
VBEメニューの[実行]→[Sub/ユーザーフォームの実行]と選択して実行すると図2のようにC2〜C5のセルの金額が3桁ごとに区切られ、「円」が付いて表示される。
単位の付いた数値の合計を求める
次に、図2のように3桁区切りで「円」という文字列が付いている金額の合計をC6に表示させてみよう。
通常計算は、数値の計算であり、「円」などのような文字列が付いた値は計算ができない。「円」という文字列を外して数値だけの計算にするといった方法を取らざるを得ない。
Val関数で数値かどうかを判断する
しかしVal関数を使うと、数値かどうかを判断してくれるので、数値部分のみを判別して計算できる。
書式
Val({数値文字列})
Val関数の引数には{数値文字列}を指定する。コードはリスト2のようになる。
Sub 数値文字列の合計() Dim 合計 As Long Dim i As Integer For i = 2 To 5 合計 = 合計 + Val(Cells(i, 3)) Next Range("C6").Value = Format(合計, "#,###円") Range("C6").HorizontalAlignment = xlHAlignRight End Sub
Long型の変数「合計」とInteger型の変数「i」を宣言する。セルの2行目から5行目にかけて繰り返し処理を行う。
リスト2の5行目のように記述して、セルの2行目から5行目で3列目(C列)に当たる値の合計を、Val関数を用いて数値の部分のみを取り出し加算していく。
セル内の文字列の水平方向の表示位置を決めるHorizontalAlignmentプロパティ
合計に表示される値をFormat関数で3桁区切りの「円」付きで表示させる。この場合、値は文字列になるため、左詰めで表示されてしまう。そこで右詰めで表示させるため、HorizontalAlignmentプロパティに「xlHAlignRight」を指定して右詰めとしている。
ちなみに、左詰めは「xlHAlignLeft」、中央揃えは「xlHAlignCenter」と指定する。
実行結果
実行すると、図3のように表示される。
著者プロフィール
薬師寺 国安(やくしじ くにやす) / 薬師寺国安事務所
薬師寺国安事務所代表。Visual Basicプログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。
1950年生まれ。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。
1997年に薬師寺聖とコラボレーション・ユニット「PROJECT KySS」を結成。
2003年よりフリーになり、PROJECT KySSの活動に本格的に参加。.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。
Windows Phoneアプリ開発を経て、現在はWindowsストアアプリを多数公開中。
Microsoft MVP for Development Platforms - Client App Dev(Oct 2003-Sep 2012)。
Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。
Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。
Copyright © ITmedia, Inc. All Rights Reserved.