9/24/2016

Excel。BOOK。別ブックのデータをSUMIF関数で算出。しかし、別のブックを閉じちゃうと!


Excel。別ブックのデータをSUMIF関数で算出。しかし、別のブックを閉じちゃうと!

<SUMIF関数とSUMPRODUCT関数>


何気なく、出来ることでも、急に出来なくなるということも、Excelでは結構あるようでして、
今回ご紹介するのは、ブック間での集計に関してなんですね。

別のブックにあるデータを、SUMIF関数を使って、算出することは出来るのですが、
元の別のブックを閉じてしまうと…ということで、実際に確認してみましょう。

別ブックには、このようなデータがあります。

また、このブック名は、「元データ.xlsx」です。

そして、集計する別のブックには、

B3に、SUMIF関数を使って、ブック間の集計をしてみましょう。

B3をクリックして、SUMIF関数ダイアログボックスを表示しましょう。

範囲には、[元データ.xlsx]SUMIF!$B$3:$B$21

この[元データ.xlsx]は、ブック名を表しています。
なお、範囲選択をすると自動的に、絶対参照で設定されます。
ここが、ブック間での違いの一つでもあります。

検索条件は、A3。支店名を東京ということですね。

合計範囲には、[元データ.xlsx]SUMIF!$F$3:$F$21

あとは、OKボタンをクリックしましょう。

問題なく算出することが出来ました。

ちなみに、B3の数式は、

=SUMIF([元データ.xlsx]SUMIF!$B$3:$B$21,A3,[元データ.xlsx]SUMIF!$F$3:$F$21)

さて、ここからが、問題なのです。


実務では、元データをいちいち開いておく必要はないわけですね。

つまり、この集計してあるブックのみを開いてみると、どうなるのでしょうか?

Excelをすべて閉じて、このSUMIF関数のブックのみを開いてみましょう。

なんと、エラーになってしまいました!

このSUMIF関数を使ったブック間の算出。
実は、元のデータがあるブックを先に開いておく必要があるのです。
でないと、エラーになってしまうのです。

これをどうにかなりませんか?というご質問があるのです。

確かに、実務では、困りますよね。いちいち、元データを開くのは面倒。

そこで、登場するのが、SUMPRODUCT関数なのです。


とりあえず、作成してみましょう。元データ.xlsxも開いておきます。

B7をクリックして、SUMPRODUCT関数ダイアログボックスを表示しましょう。

配列1には、[元データ.xlsx]SUMIF!$B$3:$B$21
配列2には、[元データ.xlsx]SUMIF!$F$3:$F$21
数式を修正しないといけませんので、まずは、ここでOKボタンをクリックしましょう。

数式は、
=SUMPRODUCT([元データ.xlsx]SUMIF!$B$3:$B$21,[元データ.xlsx]SUMIF!$F$3:$F$21)



=SUMPRODUCT(([元データ.xlsx]SUMIF!$B$3:$B$21=A7)*[元データ.xlsx]SUMIF!$F$3:$F$21)
というように修正します。

配列1をカッコで囲み、$B$21のあとに=A7をいれて、カンマ(,)とアスタリスク(*)を置換します。

すると、このように算出されました。

先程のSUMIF関数と同じ数値になっています。
では、Excelをすべて閉じて、この算出用のブックのみを改めて開いて確認してみましょう。

ブックを開くと、次のようなメッセージが表示されますが、"更新する"をクリックします。

ちゃんと、SUMPRODUCT関数は算出してくれていることが確認できました。

このように、ケースバイケースですが、SUMIF関数よりも、
SUMPRODUCT関数を使った方が効率がいいということもありますので、
知っておくと、いざという時、いいかもしれませんね