MAKEARRAY関数をご存知ですか?この関数を使うと、行数と列数を変数で指定して動的に配列を生成できます。例えば、フィルタやQUERYで抽出したデータをもとに、自由なサイズの表を作りたいときに便利です。この記事では、MAKEARRAY関数の基本的な使い方から、行数や列数を他のセル参照で変数化する方法、さらに応用例まで詳しく解説します。
【要点】MAKEARRAY関数の基本と動的生成テクニック
- MAKEARRAY(行数, 列数, LAMBDA): 指定した行数・列数の配列を生成します。第3引数のLAMBDAで各セルの値を自由に計算できます。
- 行数・列数をセル参照で指定: 例えばMAKEARRAY(A1, B1, LAMBDA(r,c, r*c))のように、他のセルの値でサイズを動的に変更できます。
- LAMBDA内での行列インデックス活用: LAMBDA(r,c)のr,cは1から始まる行番号・列番号です。これを使って規則的な数列や九九表などを作成できます。
ADVERTISEMENT
目次
MAKEARRAY関数の仕組みと動的生成のメリット
MAKEARRAY関数は、行数と列数を引数で指定し、各セルの値をLAMBDA関数で定義する配列生成関数です。2023年に追加された比較的新しい関数で、従来のSEQUENCEやARRAYFORMULAと組み合わせるよりも直感的に表を作れます。特に、行数や列数を他のセルの値や関数の結果で指定できるため、データの増減に柔軟に対応した動的なテーブルが作成できます。例えば、COUNTA関数でデータ件数を取得し、その値を行数として使えば、リストの長さに応じて自動的にサイズが変わる表が作れます。この仕組みを理解することで、スプレッドシートの自動化の幅が広がります。
MAKEARRAY関数を使った動的表作成の手順
ここでは、基本的な使い方から応用までを手順に沿って解説します。
基本: 九九表を作成する
- MAKEARRAY関数を入力する
表の左上のセルに =MAKEARRAY(5, 5, LAMBDA(r,c, r*c)) と入力します。これで5行5列の九九表が生成されます。 - 構文の意味を確認する
第1引数の5は行数、第2引数の5は列数です。LAMBDA内のrは行番号(1〜5)、cは列番号(1〜5)を表し、掛け算の結果が各セルに出力されます。 - 行数と列数をセル参照に変更する
A1セルに行数、B1セルに列数を入力し、数式を =MAKEARRAY(A1, B1, LAMBDA(r,c, r*c)) に置き換えます。A1やB1の値を変えれば、表のサイズが自動的に更新されます。
応用: データ件数に応じて自動拡張する表
- 行数をCOUNTAで取得する
商品名のリストがA列にある場合、行数を =COUNTA(A:A) で動的に取得します。ただし、LAMBDA内で直接A列を参照できないため、INDIRECT関数と組み合わせます。 - 連番を振るためのLAMBDAを書く
=MAKEARRAY(COUNTA(A:A), 1, LAMBDA(r,c, r)) と入力すると、データ件数分の連番が縦に生成されます。ただし、実際のデータを隣に表示したい場合は、ARRAYFORMULAと組み合わせるか、MAKEARRAYでインデックスを生成してからINDEXで参照します。 - INDEX関数で値を取得する
例えば、A列の値を取得するには、=MAKEARRAY(COUNTA(A:A), 1, LAMBDA(r,c, INDEX(A:A, r))) とします。これで、データの増減に追随する動的なリストができます。
応用: 行列インデックスを使ったパターン生成
- 市松模様(チェッカーパターン)を作る
=MAKEARRAY(10, 10, LAMBDA(r,c, IF(MOD(r+c,2)=0, “■”, “□”))) と入力します。行番号と列番号の和が偶数か奇数かでセルの色や文字を切り替えられます。 - 三角数列を生成する
=MAKEARRAY(10, 10, LAMBDA(r,c, IF(c<=r, r*c, “”))) と入力すると、下三角部分だけに値が入った表が作れます。 - ランダムな数値の表を作る
=MAKEARRAY(10, 5, LAMBDA(r,c, RANDBETWEEN(1,100))) と入力すると、10行5列の乱数表が生成されます。ただし、RANDBETWEENは再計算ごとに値が変わります。
MAKEARRAY関数使用時の注意点とよくあるエラー
LAMBDA内で他のセル範囲を直接参照できない
MAKEARRAY関数のLAMBDA内では、引数で渡された行番号・列番号しか使えません。そのため、他のセル範囲を直接参照しようとするとエラーになります。回避するには、LAMBDA内でINDIRECT関数を使うか、あらかじめARRAYFORMULAなどで計算した結果を参照します。また、MAP関数と組み合わせる方法もあります。
行数や列数に0や負数を指定するとエラーになる
MAKEARRAYの行数と列数には1以上の整数を指定する必要があります。0や負の数、小数を指定すると#VALUE!エラーが発生します。エラーを防ぐには、IF関数で条件をチェックしてからMAKEARRAYを使うようにします。例えば、=IF(A1>0, MAKEARRAY(A1, B1, …), “”) のようにします。
大量の行列を生成するとパフォーマンスが低下する
MAKEARRAYは指定された行数×列数の全てのセルを計算するため、数万セルを超えるような大きな配列を作ると、計算に時間がかかったり、スプレッドシートが重くなったりします。必要なサイズに抑えるか、FILTER関数などで事前にデータを絞り込んでから使うことをおすすめします。
LAMBDA内で再計算が頻繁に行われる
MAKEARRAYはLAMBDAを各セルに対して繰り返し実行するため、LAMBDA内に重い処理を含めると計算負荷が高くなります。特にRANDBETWEENやNOWなどの揮発性関数を多用すると、スプレッドシート全体の再計算が遅くなります。揮発性関数の使用は最小限にしましょう。
ADVERTISEMENT
MAKEARRAYと他の配列生成関数の比較
| 関数名 | 用途 | 動的サイズ指定 | 構文の簡潔さ |
|---|---|---|---|
| MAKEARRAY | 行数・列数を指定して配列を生成 | セル参照で可能 | LAMBDAが必要でやや複雑 |
| SEQUENCE | 連番の配列を生成 | 行数・列数指定可 | 簡潔だが単純な連番のみ |
| ARRAYFORMULA | 既存の範囲を拡張して計算 | 間接的(行数は参照範囲に依存) | 柔軟だが複雑になりがち |
まとめ
MAKEARRAY関数を使えば、行数と列数を変数化した動的な表を簡単に作成できます。特にLAMBDA関数と組み合わせることで、規則的な数列や九九表だけでなく、他の関数と連携した柔軟なデータ生成が可能です。まずは単純な表から試し、慣れてきたらCOUNTAやQUERYと組み合わせて、データ量に応じて自動拡張するレポート作成に挑戦してみてください。MAKEARRAYはスプレッドシートの新しい可能性を広げる強力な関数です。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
