TrueとFalseを数値へ変換して計算する
VBAではTrueが-1、Falseが0になることを確認し、条件に合う個数を加算します。
実行前に確認
- VBAのTrueをそのまま加算すると合計が減ります。Excelワークシート上での論理値の数値化と混同しないでください。
- 読みやすさを優先する場合は「If value >= 60 Then count = count + 1」と書いても構いません。
- この例は数値だけの配列です。文字列やエラー値などを含む入力では、比較前に型の確認が必要です。
- Excel実機での動作は未確認です。コピーした練習用ブックで試してください。
1サンプルコード
Option Explicit
Sub Example7070()
Dim values As Variant
Dim value As Variant
Dim count As Long
values = Array(80, 55, 92)
For Each value In values
count = count - CLng(value >= 60)
Next value
MsgBox "Trueの数値: " & CLng(True) & vbCrLf & _
"Falseの数値: " & CLng(False) & vbCrLf & _
"60以上の個数: " & count
End Sub図で見るTrueを引いて条件に合う2件を数える
イメージ図VBAのTrueが-1になる性質を使い、60以上の値を数えます。
3つの点数
values = Array(80, 55, 92)、countの初期値は0
比較結果をLongへ変換して引く
80と92はTrue → -1、55はFalse → 0。countから順に引く
True=-1・False=0・件数2
MsgBoxに論理値の変換結果と「60以上の個数: 2」を表示
VBAのTrueをそのまま足すと合計は減ります。例は数値だけの配列で、読みやすさを優先するならIfで加算できます。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版デスクトップExcelの練習用ブックを.xlsm形式で保存します。Alt+F11でVBEを開き、[挿入]→[標準モジュール]で作った空のモジュールに、Option Explicitから末尾まで、この例だけを貼り付けます。
- 2
セルは使いません。80・55・92のうち60以上の値を数えます。
- 3
Example7070のSub内にカーソルを置き、F5キーで実行します。
- 4
Trueは-1、Falseは0、60以上の個数は2と表示されます。Trueを引くと、-1を引くので1増えます。