【DAX】IF関数で複雑な条件指定

一つの表があったとして、フィルターであれやこれや絞りたくない時にDAX関数で解決する方法を練習したいと思います。ALL関数のことも書いたのですが長くなったので記事を分割しました。

風場 輝


適当に作ったダミーデータでPower BI練習中。バージョンによっては画面がかなり変わることもあるのであしからず。
この記事作成時のPower BI Desktopバージョンは「2.139.2054.0 64-bit (2025年1月)」

ぴ

この表を使おう。まずはAND条件とOR条件ができるようにしようか

IF関数でAND条件:AかつBのときCを表示する

ということで カテゴリ列が「野菜」かつ数量列が「150以上」ならば商品名列の値を返す というDAX関数を作ろうと思います。

文章で書くと長ったらしいのでまずは条件を分解してそれらをくっつける形でDAX関数を作りたいと思います。

DAX関数に盛り込む必要がある内容
①カテゴリ列が「野菜」である →CALCULATE関数で指定
②数量列が「150以上」である →CALCULATE関数で指定
③上記①②を両方満たすならば商品名列の値を返す →AND条件

AND条件はそれぞれの条件を「&&」でつなぎます。

IF_AND条件 = 
--カテゴリが野菜かつ数量が150以上ならば商品名を返す
VAR Category = CALCULATE(MAX('2025_売上'[カテゴリ]) = "野菜" )
VAR Quantity = CALCULATE(SUM('2025_売上'[数量]) >= 150 )

RETURN
IF(Category && Quantity , MAX('2025_売上'[商品名]))
ぴ

①から順に記載するとこんな感じだね。変数を使わなくてもできるよ

も

横棒2本を書いてから文字を書くとコメント扱いになるんだ!知らなかった

も

条件を満たさないときに×って返したいときは IF(Category && Quantity , MAX(‘2025_売上'[商品名]),”×”)ってすればいいよ

それでは、ちゃんとDAX関数が機能しているか確認してみましょう。

確認ポイント
・数量が150以上だろうとカテゴリが果物なら問答無用で除外されているか
・カテゴリが野菜でも数量が150未満のものは除外されているか
・条件に合う場合、商品名が表示されているか

ぷ

見た感じ大丈夫そう

IF関数でOR条件:AまたはBのときCを表示する

同じように カテゴリ列が「野菜」または数量列が「150以上」ならば商品名列の値を返す というDAX関数を作ろうと思います。

DAX関数に盛り込む必要がある内容
①カテゴリ列が「野菜」である →CALCULATE関数で指定
②数量列が「150以上」である →CALCULATE関数で指定
③上記①②をどちらか一方でも満たすならば商品名列の値を返す →OR条件

OR条件はそれぞれの条件を「||」でつなぎます。
私のキーボードだと右上にあって円マークと同じキーです。Shiftキーを押しながらクリックすればいけます。

IF_OR条件 = 
--カテゴリが野菜または数量が150以上ならば商品名を返す
VAR Category = CALCULATE(MAX('2025_売上'[カテゴリ]) = "野菜" )
VAR Quantity = CALCULATE(SUM('2025_売上'[数量]) >= 150 )

RETURN
IF(Category || Quantity , MAX('2025_売上'[商品名]))

こちらも確認してみましょう。果物も範囲に入ったので増えているはずです。

確認ポイント
・数量が150未満だろうとカテゴリが野菜なら問答無用で表示されているか
・カテゴリが果物でも数量が150以上なら表示されているか
・条件に合う場合、商品名が表示されているか

も

大丈夫そう。キャベツ、さくらんぼ、ほうれん草が仲間入りしたね

・・・

まって今ふと気が付いたんですけどスイカって野菜では?

ぴ

軽く調べてみたけど、なんかどっちでも大丈夫っぽい

なるほど。果実的野菜。。。いろいろあるんだ。
まぁ野菜派の方はPower Queryから置換で変えてください。

閑話休題。

完成
AND条件とOR条件のDAX関数を入れました。

もう少しシンプルな条件指定の記事ならこちら↓

タイトルとURLをコピーしました