← コード一覧へ戻る
実務条件分岐

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以上の値を数えます。

  1. 3つの点数

    values = Array(80, 55, 92)、countの初期値は0

  2. 比較結果をLongへ変換して引く

    80と92はTrue → -1、55はFalse → 0。countから順に引く

  3. True=-1・False=0・件数2

    MsgBoxに論理値の変換結果と「60以上の個数: 2」を表示

VBAのTrueをそのまま足すと合計は減ります。例は数値だけの配列で、読みやすさを優先するならIfで加算できます。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版デスクトップExcelの練習用ブックを.xlsm形式で保存します。Alt+F11でVBEを開き、[挿入]→[標準モジュール]で作った空のモジュールに、Option Explicitから末尾まで、この例だけを貼り付けます。

  2. 2

    セルは使いません。80・55・92のうち60以上の値を数えます。

  3. 3

    Example7070のSub内にカーソルを置き、F5キーで実行します。

  4. 4

    Trueは-1、Falseは0、60以上の個数は2と表示されます。Trueを引くと、-1を引くので1増えます。

使っている機能の公式ドキュメント(Microsoft Learn)