PowerApps│LookUp関数の正しい使い方

アイキャッチ

こんにちは、あんこ先生です。

PowerAppsで欠かせない関数のひとつ、LookUp関数を正しく使えていますか?

たとえば、単価に個数をかける際、2つのLookUp関数を使ってそれぞれの項目を抽出していませんか?

わたしがそうでした!

たとえば、複数条件で絞り込みたいとき、わざわざFilterしたテーブルを指定していませんか?

はい、わたしがそうでした!

そこで、今回は「うまく条件抽出できない」、「ラベルに表示できない」といった初心者の方を対象に、LookUp関数の正しい使い方を解説します。

この記事を読めば、LookUp関数は思いのままですよ。

LookUp関数の概要

LookUp関数は、指定したテーブルで条件式を満たすレコードの内、最初の1件を返します。

条件を満たすレコードが2件以上あっても、それらは無視されます。

LookUp(テーブル, 条件式 [, 内部計算式 ] )


テーブル│必須

検索対象となるテーブル型を指定します。

通常、SharePointリストやコレクションを指定します。

テーブル型であれば、ギャラリーのAllItemsSplit関数の戻り値、各種コネクタで使用されるassignmentsなども可能です。

さらに、Sort関数で並び替えたものやGroupBy関数・AddColumns関数で加工したテーブルも直接指定できます。


条件式│必須

指定したテーブルの各レコードを評価するための数式です。

結果が true となる最初のレコードを返します。

Filter関数と異なり、数式はカンマで区切ることができません。

詳細は後述しますが、複数条件で絞り込むにはAnd関数などを用いて括弧で囲みます。


内部計算式│省略可

返された単一レコードに対して評価し、その結果を返します。

レコードに含まれるすべての項目を参照できます。

例えば、単価と個数をかけて売上を算出できます。

もちろん、他テーブルと比較することも可能です。

このパラメーターを省略した場合、単一レコードを返します。


条件を満たさなかった場合

条件を満たすレコードがなかった場合は、空を返します。

戻り値が空か判定するには、IsBlank関数で調べます。

テーブルではないので、IsEmpty関数では判定できません。


注意事項

LookUp関数のみでは、条件を満たすレコードが何件あったかはわかりません。

それを知りたい場合は、Filter関数CountRows関数も使って調べましょう。


Filter関数との違い

LookUp関数は、条件を満たした最初の1レコードを参照します。

Filter関数は、条件を満たしたすべてのレコードをまとめたテーブルを返します。

LookUp関数の正しい使い方

LookUp関数は、記述内容によって戻り値が大きく異なります。

用途にあった記述をしないと、意図したデータを取得できないので注意が必要です。

LookUp関数の戻り値は大きく分けて次の3つがあります。

  1. 1行レコード
  2. フィールド値
  3. 抽出したレコードを基に算出した値

①以外はラベルやテキスト入力に表示させることができます。

それでは、それぞれの特長を見ていきましょう。


1行レコード

LookUp(テーブル, 条件式)

条件式のあとにカッコを閉じることでレコードを返します。

ギャラリーやフォームのアイテムとして使用する、レコードの有無を確認するといった用途で使います。

たとえば、次のような使い方ができます。

▪最新取引の内容をフォームに展開する。
▪5月1日にいちごの出荷はあったか調べる。


フィールド値

LookUp(テーブル, 条件式).項目名

カッコで閉じた後、項目名を指定すればそのフィールド値を返します。

テキストや数などを表示する、他テーブルと比較する値を取得するといった用途で使います。

たとえば、次のような使い方ができます。

▪5月1日のいちご出荷量はいくつか調べる。
▪商品マスターから商品名を抜き取るための商品コードを取得する。


抽出したレコードを基に算出した値

LookUp(テーブル, 条件式, 計算式)

条件式のあとに計算式を加えることでその結果を返します。

レコード内の複数項目の値を使って計算結果を表示する、値をつなげるといった用途で使います。

たとえば、次のような使い方ができます。

▪単価と出荷数をかけて売上を求める。
▪各項目の文字を連結する。 “5月1日にいちごを5個出荷した”

記述次第で戻り値が大きく変わります。

用途にあった正しい使い分けをしましょう。


ラベルに結果を表示させる際の注意事項

図のようにラベルはテーブルまたはレコードを表示できません。

LookUp関数の場合は、最後に項目名を加えるか、第3パラメータで内部計算した結果を指定します。

LookUp関数のスコープについて


括弧を閉じるまで自身を参照

LookUp関数は、カッコを閉じるまでThisRecordは条件を満たした最初のレコードを参照します。


入れ子の場合は注意

下図のようにFilter関数で入れ子とした場合は、扱いに注意が必要です。

特に同じ名前の項目があると混乱しますので、ThisRecordAs関数で曖昧性を解消しましょう。

演算子の不思議、<=は通るけど=>はダメ。

以上以下の演算子は<>を先に記述しましょう。

LookUp関数の活用事例


複数条件で絞り込む

第2パラメータに記述する条件式は、Filter関数と異なりカンマでつなげることができません。

そのため、AndやOr演算子を利用してカンマで区切らず記述します。

この方法なら、月初から月末までといった範囲指定や、商品と個数といった条件で抽出できます。

//Dateが5/1-5/31である最初のレコードを返す
LookUp(出荷テーブル,And(Date>=Date(2022.5.1),Date<=Date(2022.5.31))
//Nameがいちごで、Valueが5以上である最初のレコードを返す
LookUp(出荷テーブル,And(Name="いちご",Value>=5))
//Nameがいちごかみかんである最初のレコードを返す
LookUp(出荷テーブル,Or(Name="いちご",Name="みかん"))

LookUp関数は複数条件に対応していないと勘違いし、わざわざFilterしたテーブルを使ってLookUpしてました。

例外として、Today関数Now関数を含めた複数条件の場合、AndやOr演算子で囲むと委任警告が表示されます。

これを回避するためには、Andは&&、Orは||に代替します。


文字をつなげる

第3パラメータを使えば、抽出したレコードの文字を繋げることができます。

たとえば、図のテーブルから「●●の人口は▲▲万人で、男性比率■%です」といった文章を作るとします。

次のように項目名や文字を&で繋げていけば実現できます。

LookUp(統計テーブル,都道府県="岩手県"
	,都道府県&"の人口は"&総人口&"万人で、男性比率は"&総人口(男)/総人口&"%です")

Ifで条件分岐した場合、分岐後のデータ型が異なるとちょっとめんどいです。

具体的にはtrueが数値10を返し、falseがテキスト-を返すよう記述すると後者は表示されません。

この場合、true側の数式をText関数で囲めば回避できます。

LookUp関数の正しい使い方のまとめ

今回はLookUp関数の正しい使い方を解説しました。

戻り値が異なるので用途に合わせた使い分けが必要でしたね。

LookUp関数は最初の1レコードしか抽出しないため、あらかじめFilter関数Sort関数で調整しておくと狙いが定まりやすいです。

何かと利用することが多い関数なので、ぜひマスターしてください。

アイキャッチ

ご支援よろしくおねがいします

この記事を気に入ってくださった方、寄付してあげてもいいよという方がいらっしゃっいましたら、ご支援いただけると助かります。

下記リンクからAmazonギフト券で、金額は15円からお気持ちを入力してください。

受取人のメールアドレスは amazon@anko7793.com までお願いします。

メッセージもいただけるとたいへん喜びます。

よろしくお願いします。

Amazonギフト券(Eメールタイプ) 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
七草あんこ
非IT系中間管理職やってます。社命によりoffice365を主軸とした業務改善プロジェクトメンバーに任命されたことでPowerAppsと出会えました。いまではビジネス・プライベートを問わず、欠かせないツールになっています。導入初期やアプリ作成時に遭遇した諸問題の解決法とサンプルアプリの作り方を紹介していきます。主にTwitterで情報収集しているので不明点など呟いているとお邪魔するかもしれません。