• ベストアンサー

SUMPRODUCT関数の検索範囲について

 私は公共施設に勤めているPC超初心者で、今、エクセル2000を使って日々提出される施設利用申請書の内容を集計するシステムを作ろうとしています。  申請日が○○年△△月◇◇日の場合、表の日付欄に○○△△◇◇、利用室名や時間帯などを数値化して入力・蓄積し、別シートに集計したいことがらの集計表を作成しておいて、集計の際に任意の期間を設定すれば、その表に自動的に集計されるようにしたいのです。  そこで、SUMPRODUCT関数の出番なのですが、検索範囲になる最初のデータ行は超初心者の私でもわかるのですが、最後のデータ行を指定するにあたって入力済の最後のデータ行が指定されるようにする方法はないでしょうか。  ご教示の程、よろしくお願いします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

SUMPRODUCT関数で列全体を指定することはできなかったはずですので、仮に1行目が項目名だとすれば、その1行目を除いて たとえば =SUMPRODUCT((A2:A65536="A")*(B2:B65536=1)) のようにすれば、最終データまで自動的に反映します。

kenkouundo
質問者

お礼

 早々のご教示有り難うございました。  私のような超初心者でもわかるドンピシャのご回答でした。ファイルの大きさや計算時間の関係で、この先困ることがあるかもしれませんが、この方法でシステムを完成させてみます。また、宜しくお願いします。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

念のために言いますとSUMPRODUCT関数は本来検索に使うものではありません。 ただし2003以前では、SUMIF関数の複数条件版の関数として利用されることがあります。2007ではSUMIFSが出来ました ので使わなくて済みます。 だからSUMPRODUCTの特殊な使い方です。 ーーー だから条件的なものを含めて、実例を挙げて質問すべきです。 ある1条件についてA列全体とかを対象に考えたいのなら、余分目に行を指定しておいても、それが害になることはないでしょう。 だからこの質問はつまらないこものになる。 だから65536行目を指定してもよいが、下方行に別表が有るとか 計算時間に神経質になるなら別ですが、あまり無いケースでしょう。 ーーー データ最終行を求めるなら Googleで「エクセル関数 データ最下行」で照会すれば http://www.kotaete-net.net/Default.aspx?pgid=14&qid=120491492468 など、ここに聞かなくてもすぐ出てくるのでは。 ーー A列以外の式でA2以下のデータの最終行は =COUNTA(A:A)+1 で判るし、それがわかれば、それを使ってINDEX関数で範囲指定 出来る。 途中で空白行もある場合の最終行を求める式もそこに載っています。 ーー VBAでユーザー関数を作る方法もある。 標準モジュールに Function saikag(A) Application.Volatile saikag = Range(A & "65536").End(xlUp).Row End Function これは有名な常套手段です。 これで =saikag("a")と入れる。この場合は途中の空白行も含めて最終行です。

kenkouundo
質問者

お礼

 ご指導有り難うございました。質問の仕方さえわからないのに不相応なシステム作りをしているみたいで申し訳ありませんでした。  具体的にご指導いただいた方法を理解するには大変な時間が必要でしょうがじっくり勉強してみます。また、宜しくお願いします。