Sheet基本
ARRAY_CONSTRAIN 完全ガイド
ARRAY_CONSTRAIN 完全ガイド
配列の出力サイズを切り詰めて使いやすくする
FILTERやQUERYの出力が多すぎるとき、表示する行数・列数を指定してトリミングする。上位N件の絞り込みや特定の列だけ取り出す用途に使う。
GASとの関係:array.slice() で同じことができる
GASの data.slice(0, 5) で最初の5件を取り出す操作は ARRAY_CONSTRAIN と同じです。GASなら行・列の両方を slice で制御できます。
目次
ARRAY_CONSTRAINとは
ARRAY_CONSTRAINは配列(範囲や他の関数の結果)の行数・列数を指定サイズに切り詰めて返す関数です。FILTERやQUERYの結果が多すぎるとき、上位N件だけ取り出したいときに使います。
基本構文
=ARRAY_CONSTRAIN(配列, 行数, 列数)
// A2:C100 の最初の5行・3列分だけ返す
=ARRAY_CONSTRAIN(A2:C100, 5, 3)
// FILTERの結果を上位10件に制限
=ARRAY_CONSTRAIN(FILTER(A2:C100, B2:B100="東京"), 10, 3)
実務でよく使うパターン
パターン1:ランキング上位N件を取り出す
// SORT で降順にしてから上位10件を取り出す
=ARRAY_CONSTRAIN(SORT(A2:C100, 3, FALSE), 10, 3)
// 売上TOP5の商品名と金額(2列)だけ
=ARRAY_CONSTRAIN(SORT(A2:B100, 2, FALSE), 5, 2)
パターン2:QUERYの代わりにLIMITなしでN件制限
// FILTER の結果を5件に制限(QUERYのLIMITと同じ効果)
=ARRAY_CONSTRAIN(FILTER(A2:A, B2:B="東京"), 5, 1)
パターン3:列数を制限して特定の列だけ取り出す
// A〜E列の5列あるデータからA〜C列の3列だけ使う
=ARRAY_CONSTRAIN(A2:E100, COUNTA(A2:A), 3)
ARRAY_CONSTRAIN vs QUERYのLIMIT
| 方法 | メリット | デメリット |
|---|---|---|
| ARRAY_CONSTRAIN | どんな関数の結果にも使える。FILTER・SORT・UNIQUE等と組み合わせ可能 | 行数を計算して正確に指定が必要 |
| QUERYのLIMIT | QUERY文の中でシンプルに書ける | QUERYの外の関数との組み合わせが面倒 |
| INDEX(FILTER(), row, col) | 1件だけ取り出すならシンプル | 複数行はARRAY_CONSTRAINの方が楽 |
行数を動的にする
// データ件数分だけ(全データ)だが列は3列に制限
=ARRAY_CONSTRAIN(FILTER(A2:F, B2:B="東京"), ROWS(FILTER(A2:F, B2:B="東京")), 3)
// COUNTIFと組み合わせて動的に上限設定
=ARRAY_CONSTRAIN(SORT(A2:B100, 2, FALSE), MIN(10, COUNTA(A2:A)), 2)
この知識をGASで活かす
GASでFILTER的な処理をした後に件数を制限するとき、ARRAY_CONSTRAINと同じくslice()でシンプルに実装できます。スプレッドシートで動作確認してからGASに移植する手順が実用的です。
Free Newsletter
AIを業務に活かしたいなら
SMR-Labメルマガ
毎週火曜10時、コピペで使えるChatGPTプロンプト・
GASテンプレートをお届け。登録は1分・完全無料。

