findif 関数

説明

配列の中から指定条件に一致するものを探します。

1つ目の引数に配列を受け取って、2つ目以降の引数で指定した比較演算子で3つ目の引数と比較します。そして4つ目の引数である配列から条件に一致するインデックスの値を取り出します。

使用できる比較演算子は「=」「!=」「<>」「<」「<=」「>」「>=」です。

3つ目の引数は単一の値でも配列でもどちらでも構いません。配列の場合は1つ目の配列と同じインデックス間で比較します。

比較する配列間で要素数が異なる場合は、最も要素数が少ない配列に合わせられます。

元の配列は変更しません。

使用例

以下の例の表記で、「(結果)⇒XXX」はその式を実行した結果を表します。実際には「(結果)⇒XXX」は式に入力しないでください。

= findif(
  [1, 2, 3, 4, 5], ">=", 3,
  ["A", "B", "C", "D", "E"]
)
(結果)⇒ ["C", "D", "E"]
= findif(
  [1, 2, 3, 4, 5], 
  "=",
  [1, 0, 3, 0, 5],
  ["A", "B", "C", "D", "E"]
)
(結果)⇒ ["A", "C", "E"]

より具体的な例として、アクション1番の結果値として以下のレコードが入っているとします。

予算 支払
100 120
110 90
120 100
130 200

findif を使って、支払が予算内に収まっているレコードを抽出することができます。

= findif($1.予算, ">=", $1.支払, $1)
(結果)⇒
予算 | 支払
-----|------
110  | 90
120  | 100

更に sum 等の集計関数を組み合わせると、sumif のような計算が可能です。以下の例は予算内に収まっている支払の合計を計算します。

= sum(
  findif($1.予算, ">=", $1.支払, $1).支払
)
(結果)⇒ 190

関連記事