【目指せエクセルマスター】SUMIFの合計範囲を可変にしたい!ならばLAMBDA関数を駆使せよ!

Excel関してこんなYahoo知恵袋を発見!

Yahoo知恵袋

勘の良い人なら

つとむー

ピボットテーブルでしょ!

つとむー

SUMIF関数でしょ!

と思い浮かべるかもしれません!

でもデータ増えたとき

かじむー

ピボットテーブルは
いちいち更新しないといけない!

かじむー

SUMIFはデータ範囲を広げる必要があるぞ!

でもこんな手間一切なくります!

今回はSUMIF関数データ範囲
可変にするような感覚で解決させます!

動画で見たい方はコチラ

SUMIF関数の合計範囲を可変にする方法

かじむー

まずは必要な知識を整理しよう!

スピルについて理解しよう

スピルという言葉をご存知ですか?

これは配列です!
複数データ保持している状態です!

例えばC1セルに「=A1:A3」と入力すると
結果はC1セルを飛び出して
C2セル・C3セルにも出力される。

何故なら1つのセルに
セル3つ分の情報は出せないからです。

つまりC1セル
3つの情報(A1~A3セル)を保持している状態。
スピルと言えます!

LAMBDA関数とそのヘルパー関数について

LAMBDA関数をご存知でしょうか?

LAMBDA関数を使う事で
自作関数を作る事ができます!

詳しくは公式リファレンス
皆さんも一度はお世話になったことのある
「エクセルの神髄」さん!
かなり詳しく解説されてるので是非参考にしましょう!

このLAMBDA関数を使うと
スピル内のデータ一つずつに対して
何か処理を行う事ができます。
今回はこの性質を利用します!

またLAMBDA関数と組み合わせて使う為だけにある
ヘルパー関数がいくつか存在します!

その中にあるMAP関数を今回使います!
これはLAMBDA関数と組み合わせ
新しいスピルを生成する関数です!

MAP関数について詳しく知りたい方は
またまたこちらを参考にしてみてください!

LAMBDA関数を駆使して範囲を可変に!

Step1. データをテーブル化

テーブル名を「t」と付けておきます。

Step2. 日付が重複しない様に出力

ここではUNIQUE関数を使い、日付の重複削除を行い
TEXT関数で日付を “mm/dd” 形式で表示させてます。
これで日付のスピル生成されました。

日付
=TEXT(UNIQUE(t[日付]), "mm/dd")

Step3. MAP関数とLAMBDA関数を使って合計を出力

金額
=MAP(E3#,LAMBDA(row,SUMIF(t[日付],row,t[金額])))

まずMAP関数第1引数には日付スピルを指定します!
スピルの指定は、セル値の後ろに#を付けます!(E3#)

次にMAP関数第2引数にはLAMBDA関数を使います!

LAMBDA関数第1引数にはrowという名前を与えました!
このrowに日付スピルのデータが1つずつ渡されます!
LAMBDA関数第2引数にはrowを使ってSUMIF関数を与えれば完成!

例えば初め、rowに「02/01」が渡されます!
そのrowを使ってSUMIFが実行されるので「15,000」が返ってきます!

かじむー

最大のメリットデータを増やしても自動で反映するところ!

例えば「03/02」「10,000」というデータを増やしても
自動で集計に反映されます!!!

データを追加した瞬間にですよ!!!

範囲を広げたり
数式を伸ばしたり
更新をしたり

そんな手間一切なくなりました☆

皆さんも是非関数を駆使して
作業の効率化をしていきましょう!

かじむー

業務効率化のご相談受け付けております♪