SUMIFSをARRAYFORMULAしたい[Googleスプレッドシート]
GoogleスプレッドシートのARRAYFORMULA関数はとても便利な関数です。
ただARRAYFORMULAと組み合わせられない関数もいくつかあります。
SUMIFS関数もそのひとつです。
2022年8月に発表されたGoogleスプレッドシート新関数のうち、MAP関数とLAMBDA関数を組み合わせることでARRAYFORMULAっぽいことが実現できたので備忘録メモします。
以下のスプレッドシートを例にします。
列A-Eに売上データベースがあり、列G「担当者」と列H「都道府県」を検索キーとして、該当する売上の合計金額を列Iに返したいとします。
通常の場合、セルI2に以下の数式を用います。
セルI3以降に同様の数式を入れたいのですが、ARRAYFORMULAが使用できないのでI2の数式をコピペすることになります。
今回の例ではSUMIFSを用いたい範囲が限られているのでコピペでもよさそうですが、出来るならセルI2にARRAYFORMULA的な数式を入れて済ませたいものです。
そこでMAP関数・LAMBDA関数の出番です。
セルI2に以下の数式を用います。
検索キーとする列G「担当者」と列H「都道府県」をMAP関数で指定し、LAMBDA関数でそれぞれ「person」「area」と名前を付けます。
その後、SUMIFS関数で「person」「area」を検索キーとして指定します。
結果はこちら。
セルI2の数式ひとつだけで、セルI3以降にも期待された値が返されました。
※このままだとSUMIFSの範囲外(この例ではセルI8以降)にゼロが返ってきてしまうので、IF関数などを併用するのが現実的かもしれません。
セルI8以降が空白になりスッキリしました。
※MAP関数やLAMBDA関数、私もまだまだ理解が至らない点も多いのですが、今回は私が所属しているコミュニティにてメンバーが発表されたLTに大きなヒントを頂き実現することができました。ありがとうございます!