Excel関してこんなYahoo知恵袋を発見!
Yahoo知恵袋
勘の良い人なら
つとむー
つとむー
と思い浮かべるかもしれません!
でもデータが増えたとき
かじむー
いちいち更新しないといけない!
かじむー
でもこんな手間が一切なくります!
今回はSUMIF関数のデータ範囲を
可変にするような感覚で解決させます!
SUMIF関数の合計範囲を可変にする方法
かじむー
スピルについて理解しよう
スピルという言葉をご存知ですか?
これは配列です!
複数のデータを保持している状態です!
例えばC1セルに「=A1:A3」と入力すると
結果はC1セルを飛び出して
C2セル・C3セルにも出力される。
何故なら1つのセルに
セル3つ分の情報は出せないからです。
つまりC1セルは
3つの情報(A1~A3セル)を保持している状態。
スピルと言えます!
LAMBDA関数とそのヘルパー関数について
LAMBDA関数をご存知でしょうか?
LAMBDA関数を使う事で
自作関数を作る事ができます!
詳しくは公式リファレンスや
皆さんも一度はお世話になったことのある
「エクセルの神髄」さん!
かなり詳しく解説されてるので是非参考にしましょう!
このLAMBDA関数を使うと
スピル内のデータ一つずつに対して
何か処理を行う事ができます。
今回はこの性質を利用します!
またLAMBDA関数と組み合わせて使う為だけにある
ヘルパー関数がいくつか存在します!
その中にあるMAP関数を今回使います!
これはLAMBDA関数と組み合わせて
新しいスピルを生成する関数です!
MAP関数について詳しく知りたい方は
またまたこちらを参考にしてみてください!
LAMBDA関数を駆使して範囲を可変に!
テーブル名を「t」と付けておきます。
ここではUNIQUE関数を使い、日付の重複削除を行い
TEXT関数で日付を “mm/dd” 形式で表示させてます。
これで日付のスピルが生成されました。
=TEXT(UNIQUE(t[日付]), "mm/dd")
=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」というデータを増やしても
自動で集計に反映されます!!!
データを追加した瞬間にですよ!!!
範囲を広げたり…
数式を伸ばしたり…
更新をしたり…
そんな手間が一切なくなりました☆
皆さんも是非関数を駆使して
作業の効率化をしていきましょう!
かじむー