• ベストアンサー

Excelで次の関数の意味を教えて下さい。

こんにちは。エクセルはよくわかっているつもりですが、取引先から送られてきたシートにこんな計算式があっていろいろ調べてみましたが、どうもしっくり来ないので、質問します。 =SUM((D11:D309="001")*(G11:G309<>"")*(AJ11:AJ309)) 数字を追いかけると、 AJ列のデータのうち、D列が「001」という文字列で、G列が「空白」でない行を合計する という意味のようなのですが、初めて見る文法なので、確信が持てません。 どなたか引数の中に比較演算子が入るときの文法を解説して頂けませんでしょうか? ご教授頂ければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • shkwta
  • ベストアンサー率52% (966/1825)
回答No.3

(1)これは配列数式の一種です。配列数式を入力するときは、式を打ったあとCtrl+Shift+Enterを押さなければ関数が動作しません。 (2)この式は、11行から309行までの間で、D列が"001"で、かつG列が未入力(あるいは長さ0の文字列)でない行におけるAJ列のデータの合計を求めるものです。 (3)この式は、 (D11="001")*(G11<>"")*(AJ11) (D12="001")*(G12<>"")*(AJ12) (D13="001")*(G13<>"")*(AJ13) … (D309="001")*(G309<>"")*(AJ309) をそれぞれ求め、その合計を算出します。 (4)D11="001" は、D11が"001"に等しいときTRUE, 等しくないときFALSEという値(論理値)を持ちますが、これを算術演算に使用するとTRUEは1、FALSEは0として処理されます。  G11<>"" はG11が""に等しくないということで、具体的にはG11が未入力または長さ0の文字列でないときTRUE、未入力または長さ0の文字列のときFALSEになります。

その他の回答 (2)

回答No.2

これは、配列数式になっていませんか。 数式バーで見ると、式が{=SUM..}で囲われていると思います。 囲われていないと機能しません。 D11:D309="001"は、D11が001なら、TUREを返し、そうでなければFALSEを返します。 これを順次D309まで計算し、作業用の格納箱(コンピュータ内部なので見る事はできない)に収納されます。 G11:G309<>""も同様で、G11がNULL値でなければ、TUREを返しそれでなければ、FALSEを返し同様の処理を実行します。 TUREは1、FALSEは0と同じ意味で、D11が001でG11がNULLでなければ、TRUE×TUREで1となり(ほかの組み合わせはすべて0)、TURE×TURE×AJ11、すなわち、1×1×AJ11でAJ11の値をを格納していきます。 これが、配列数式になっているので、11から309行まで条件にあう値のみ格納していき、集計します。 ちなみに配列数式は、=SUM((...を編集状態にしてCtrl+Shiftを押しながら、Enterキーを押すことにより成立します。

回答No.1

こんばんは。 数式の前後に { }がついていませんか? ついていればそれは 「配列数式」 というものです。 11行目から309行目までの各行で、 D列が文字列の "001" で かつG列が空白ではない ↑の条件を満たす行の AJ列の数字を合計する、という意味です。 「配列数式」については参考URLをご覧ください。

参考URL:
http://pc21.nikkeibp.co.jp/special/hr/