IF

条件をチェックし、TRUE の場合は 1 つの値を返します。それ以外の場合は、2 つめの値を返します。

構文

IF(<logical_test>, <value_if_true>[, <value_if_false>])

パラメーター

用語 定義
logical_test TRUE または FALSE に評価できる値または式。
value_if_true 論理テストが TRUE の場合に返される値。
value_if_false (省略可能) 論理テストが FALSE の場合に返される値。 省略した場合は、空白が返されます。

戻り値

value_if_truevalue_if_false、または空白のいずれかです。

解説

  • value_if_truevalue_if_false が異なるデータ型の場合は、IF 関数からバリアント データ型が返される可能性がありますが、value_if_truevalue_if_false の両方が数値データ型の場合は、関数は 1 つのデータ型を返そうとします。 後者の場合、IF 関数によって、両方の値に対応するようにデータ型が暗黙的に変換されます。

    たとえば、式 IF(<condition>, TRUE(), 0) からは TRUE または 0 が返されますが、式 IF(<condition>, 1.0, 0) からは value_if_false が整数データ型であっても小数値のみが返されます。 暗黙的なデータ型変換の詳細については、「データ型」を参照してください。

  • 条件式に関係なく分岐式を実行するには、代わりに IF.EAGER を使用します。

次の Product テーブルの計算列の定義では、IF 関数がさまざまな方法で使用され、各製品がその表示価格に基づいて分類されています。

最初の例では、List Price 列の値が 500 未満かどうかをテストしています。 この条件が true の場合は、Low の値が返されます。 value_if_false の値がないため、空白が返されます。

この記事の例は、Adventure Works DW 2020 Power BI Desktop のサンプル モデルで使用できます。 モデルを取得するには、「DAX サンプル モデル」を参照してください。

Price Group =
IF(
    'Product'[List Price] < 500,
    "Low"
)

2 つめの例では、同じテストが使用されていますが、今回は value_if_false の値が含まれています。 この数式では、各製品が Low または High として分類されています。

Price Group =
IF(
    'Product'[List Price] < 500,
    "Low",
    "High"
)

3 つめの例では、同じテストが使用されていますが、今回は IF 関数が入れ子にされ、追加テストが行われます。 この数式では、各製品が LowMedium、または High として分類されています。

Price Group =
IF(
    'Product'[List Price] < 500,
    "Low",
    IF(
        'Product'[List Price] < 1500,
        "Medium",
        "High"
    )
)

ヒント

複数の IF 関数を入れ子にする必要がある場合は、SWITCH 関数を使用することをお勧めします。 この関数を使用すると、使用可能な値を 2 つ以上返す式を記述するための、より洗練された方法がもたらされます。

IF.EAGER 関数
SWITCH 関数 (DAX)
論理関数