エクセル関数で複数の期間を参照して計算する方法は?

このQ&Aのポイント
  • エクセルでの期間計算について質問です。A列とB列にそれぞれ数字が入力されており、別シートでA列の二つの数字を入力すると、その期間のB列の値の合計や個数を計算したいです。VLOOKUP関数では期間計算ができず、他に良い方法があるか教えてください。
  • 特定の期間のデータを参照して計算する方法について質問です。エクセルのA列とB列に数字が入っており、別シートでA列の二つの数字を入力すると、その期間のB列の値の合計や個数を求めたいです。ただし、VLOOKUP関数では期間計算ができないため、他の方法を探しています。
  • エクセルで期間計算を行いたいのですが、VLOOKUP関数では期間の値を計算することができません。A列とB列に数字が入っており、別のシートでA列の二つの数字を入力すると、その期間のB列の値の合計や個数を計算したいのですが、他に良い方法はありますか?
回答を見る
  • ベストアンサー

エクセル関数の質問

よろしくおねがいします。 以下のようなA列B列に数字が何行もあるのですが、 A列の数字(時間なのですが)を二つを別シートに記入すると A列の二つ分の期間を参照してB列の数字の合計や個数を計算したいのですが、 VLOOKでは期間分の値を計算できないので 何かいい方法はないでしょうか? A        B 1000      1 2000     -5 3000      8 4000      1 5000      3 6000      5 7000     -3 8000      2 9000      3 別シートにA列の数字を下記の例のよう二つに入力すると A列の期間を参照してB列の値を計算して B列に全合計 C列に+の合計 D列に-の合計 E列に+の個数 F列に-の個数 を表示させる。 <例1> A   B(全合計) C(+の合計) D(-の合計) E(+の個数) F(-の個数) 1000 5000  8        13        -5         4        1 <例2> A   B(全合計) C(+の合計) D(-の合計) E(+の個数) F(-の個数) 6000 9000  7        10        -3         3        1 のような感じで計算したいのですが わかりづらくてすいませんが、分かる方がいたらご教示お願います。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

ん?既に回答済みの方策と同じですが。丸ごと全部答えを書いてもらわないと出来ませんか? あぁ、2007向けと言われたんで見もしなかったって事でしょうか。ゴメンナサイ、余計な事を書きました。 プラスの合計 =SUMPRODUCT((Sheet1!A1:A100>=A1)*(Sheet1!A1:A100<=A2)*(Sheet1!B1:B100>0), Sheet1!B1:B100) マイナスの合計 =SUMPRODUCT((Sheet1!A1:A100>=A1)*(Sheet1!A1:A100<=A2)*(Sheet1!B1:B100<0), Sheet1!B1:B100) マイナスの個数(ゼロは含めない): =SUMPRODUCT((Sheet1!A1:A100>=A1)*(Sheet1!A1:A100<=A2)*(Sheet1!B1:B100<0))

tackty
質問者

お礼

再度回答ありがとうございます。 プラス、マイナスの合計を自分でやってみたのですが、 自分の今の能力ではできなかったので補足させていただきました。 完璧+スマートな式です。 ありがとうございました。

その他の回答 (3)

noname#204879
noname#204879
回答No.4

添付図参照 Sheet2 における各式は次のとおり H1: =MATCH(A1,Sheet1!A:A,0) H2: =MATCH(A2,Sheet1!A:A,0) B2: =SUM(OFFSET(Sheet1!B1,H1-1,,H2-H1+1)) C2: =SUMIF(OFFSET(Sheet1!B1,H1-1,,H2-H1+1),">0") D2: =SUMIF(OFFSET(Sheet1!B1,H1-1,,H2-H1+1),"<0") E2: =COUNTIF(OFFSET(Sheet1!B1,H1-1,,H2-H1+1),">0") F2: =COUNTIF(OFFSET(Sheet1!B1,H1-1,,H2-H1+1),"<0")

tackty
質問者

お礼

ご回答ありがとうございました。 参考にさせていただきます。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

ご利用のエクセルのバージョンがご質問に書かれていませんが、Excel2007以降を使っているならSUMIFS関数やCOUNTIFS関数で計算します。 全合計: =SUMIFS(Sheet1!B:B,Sheet1!A:A,">="&A1,Sheet1!A:A,"<="&A2) プラスの合計: =SUMIFS(Sheet1!B:B,Sheet1!A:A,">="&A1,Sheet1!A:A,"<="&A2,Sheet1!B:B,">=0") マイナスの個数: =COUNTIFS(Sheet1!A:A,">="&A1,Sheet1!A:A,"<="&A2,Sheet1!B:B,"<0") Excel2003以前しか使えない場合は、SUMPRODUCT関数で工夫します。 全合計: =SUMPRODUCT((Sheet1!A1:A100>=A1)*(Sheet1!A1:A100<=A2), Sheet1!B1:B100) プラスの個数(ゼロは含めない): =SUMPRODUCT((Sheet1!A1:A100>=A1)*(Sheet1!A1:A100<=A2)*(Sheet1!B1:B100>0)) ご相談投稿では、ご利用のソフト名は元より、普段あなたが使うソフトのバージョンまでキチンと明記することを憶えて下さい。

tackty
質問者

補足

すいませんでした。エクセル2003を使用してます。 全合計、プラスの個数ともにできました。 プラスの合計はできないのでしょうか?

回答No.1

データの入力シートのシート名が"Sheet1"とし、 集計シートのA1に1000、A2に5000が入力されているとして、 B2 : =SUM(OFFSET(Sheet1!B$1,MATCH(A1,Sheet1!A$2:A$10,),,MATCH(A2,Sheet1!A$2:A$10,)-MATCH(A1,Sheet1!A$2:A$10,)+1)) C2 : =SUMIF(OFFSET(Sheet1!B$1,MATCH(A1,Sheet1!A$2:A$10,),,MATCH(A2,Sheet1!A$2:A$10,)-MATCH(A1,Sheet1!A$2:A$10,)+1),">=0") D2 : =SUMIF(OFFSET(Sheet1!B$1,MATCH(A1,Sheet1!A$2:A$10,),,MATCH(A2,Sheet1!A$2:A$10,)-MATCH(A1,Sheet1!A$2:A$10,)+1),"<0") E2 : =COUNTIF(OFFSET(Sheet1!B$1,MATCH(A1,Sheet1!A$2:A$10,),,MATCH(A2,Sheet1!A$2:A$10,)-MATCH(A1,Sheet1!A$2:A$10,)+1),">=0") F2 : =COUNTIF(OFFSET(Sheet1!B$1,MATCH(A1,Sheet1!A$2:A$10,),,MATCH(A2,Sheet1!A$2:A$10,)-MATCH(A1,Sheet1!A$2:A$10,)+1),"<0")

tackty
質問者

お礼

できました。 自分の能力では関数の意味が理解できませんが こういうやり方もあるんですね! ご回答ありがとうございました。

関連するQ&A

  • エクセル(excel)の計算式(関数)について

    エクセル(excel)の計算式(関数)でよいアイディアがありましたら教えてください。 1行目は項目行です。 セルA1から右に15列=セルO1まで、 a | b | c | d | e | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 と入っています。 2行目からデータとして、 セルA2から右に5列=セルE2まで、 4 | 2 | 2 | 1 | 1 と入力したとします。(データ例(1)) あるいは、 セルA3から右にセルE3まで、 6 | 3 | 0 | 0 | 0 と入力したとします。(データ例(2)) 1つのデータの5個の数字のルールは2つで、 「合計で10以下である。」 「左から順に小さくなるか、同じ数字となる。」 です。 (目的は、) このとき、F列からO列にかけて、 データ例(1)のケースでは、 a | a | a | a | b | b | c | c | d | e データ例(2)のケースでは、 a | a | a | a | a | a | b | b | b | と表示されるように、 つまり、項目行の下にある数だけ、その列の1行目の記号を 1(F列)から右に向かって順に埋めていくような、 F列からO列までの2行目以下に入れる適当な計算式(関数)は ないでしょうか。 拙い説明で申し訳ありません。どなたかよい考えをお持ちの方がいらっしゃいましたらと存じます。 どうぞよろしくお願い致します。

  • エクセル関数の質問

    エクセル2003を使用してます A B C D 1 0 0 0 1 2 3 -1 0 8 5 1 7 -3 2 0 0 0 0 0 1 3 8 2 3 1 6 0 0 0 0 2 5 1 0 0 上記のような数字が何行もあるのですが A列の次はB列を B列の次はA列を計算して C列に、A列とB列をプラスした合計 D列に、A列とB列をマイナスした合計 を算出したいのですが、分かる方がいましたらご教示お願いします。

  • ■エクセル■ PRODUCT関数で「~ではない」。

    早速ですが、例えば、 ・A1~A10の範囲に1~5が入っている。 ・B1~B10の範囲に文字列「あ」~「お」までが入っている。 ・C1~C10の範囲に個数が入っている(1~99の数字)。 この場合で、D1のセルに「A1~A10の数字が5で、「お」以外の個数の合計」を求めるときはどういった関数を使えばいいのでしょうか?? =SUMPRODUCT((A1:A10=5)*(B1:B10<>"お")*(C1:C10)) と、入力してもエラーが出てしまうので、困ってます。どうしたらできますか?? よろしくおねがいします。

  • Excelのsumifで

    型番  個数  販売  1  1  3  3  2  5  1  1  5  2  7  2  6   8  1    3 というような状態の表を使って、 型番 個数  1  ☆ ☆のところに =SUMIF("A1:C10","E1","B1:B10") とすると、合計が出ます。 ですが、表の右横(D列)に単価などとして、新たな値を入れると、 結果が変わってきます。 そのD列を範囲指定していても、していなくてもです。 さらに、E1のところに入れる数字を変えると、結果が変な数字になるものと、ちゃんとするものがあります。 Excel2000でも2002でも起こります。 これは何かバグなのでしょうか? それとも計算式入力ミス? お分かりの方、教えてください。

  • エクセル関数の質問

    いつも回答して頂きありがとうございます。 設定用シートの A列 動作内容が入力されている 例)a b c d e... B列 A列の動作内容に対応した動作時間が入力されている 例)0:250:00 0:60:00 ... ※セルの書式設定で分で表示 C列 A列の動作内容に対応した動作時間が入力されている 例)0:250:00 0:60:00 ※セルの書式設定で分で表示 入力用シートのA列に動作内容を入力するとB6に動作内容に応じた動作時間の合計(設定用シートのB列を参照)が表示されるようにしたいと前回質問させて頂きましたが、この時、入力用シートのA列にaが含まれていた場合、設定用シートのC列を参照し合計をだす方法はあるのでしょうか?御教授お願い致します。

  • 私はオフィス2010Excelを使用しております

    私はオフィス2010 Excelを使用しております。 以下の例で、個数:OO個とある C列の合計の数字を出したいのです。 1000~3000行が数ページあるので電卓で計算すると結構な 作業になるのでホトホト困り果てております。 御分かりの方がいらっしゃいましたら宜しくお願い致します。  A  B  C      D 1 - - 個数:22個 - 2 - - 個数:40個 - 3 - - 個数:87個 - 4 - - 個数:44個 - 5 - - 個数:52個 - 6 - - 個数:112個 - 7 - - 個数:224個 -

  • エクセル:複数セルからの参照

    お世話になります。 A,B,C列にデータが入っています。 D,E,F列に参照のためのデータがあります。 A,B,C列はそれぞれD,E,F列に対応しています。 A,B,C列と同じ並びのデータが入っている行をD,E,F列から探し、その隣のG列の値をH列に返す。 D,E,F列の並びが重複する行はありません。 A,D列は場所の名前、B,C,E,F列には数字が入っている。 例) A1に事務室 B1に20 C1に3 が入っているとする。 D/E/F列が 事務室/20/3 の並びになっているのが10行目の場合、H1にG10のセルの値を返す。 この場合、H列にはどんな計算式を入れておけばよいのでしょうか? A,B,C列と同じ並びのデータがD,E,F列で見つからない場合は空白をH列に返す。 ちなみにD/E/F列が 事務室/20/3 の並びになっている行は10行目しかないです。 よろしくお願いします。

  • エクセル関数の質問です。

    エクセルでセルA1=4の場合セルB2=セルD1、セルA1=5の場合セルB2=セルE1、セルA1=6の場合セルB2=セルF1というように、セルA1に数字を入力するとセルB2に反映するようなセルB2に入力する関数を教えて下さい。  セルA1には月(4月から3月)の数字(4~12、1~3)が入り、4月のときにはD列(D1)、5月のときにはE列(E1)、6月~3月にはF列(F1)~O列(O1)の数字が入ります。よろしくお願い致します。

  • エクセル2007関数

         A   B    C     D E 1   15  20  300 2   21  22  400 3   34  31  452 D1に、A列の数字のいずれかを入力すると、 E1に、A列のいずれかの数字を入力した行のC列の数字を表示させたい。 たとえば、 D1に、21と入れると、E1に400と D1に、34と入れると、E1に452と 表示させたいのですが、 関数は、ありますでしょうか?

  • エクセル2003の関数について教えて教えて下さい

    どなたかご教授下さい。 現在 ・・・・・・・・・・・・・・・・・・ A列 B列 C列 1 A  100  2 B  100 3 C  100  4 D  100 ・・・・・・・・・・・・・・・・・・ の、条件として A列に入る値が Aの時:B列×0.8 A列に入る値が Bの時:B列×0.5 A列に入る値が Cの時:B列×0.2 A列に入る値が Dの時:B列×1.0 を設定しています。 ですので、現在のシートは ・・・・・・・・・・・・・・・・・・・ A列 B列 C列 1 A  100  80 2 B  100 50 3 C  100  20 4 D  100 100  という状態です。 ・・・・・・・・・・・・・・・・・・・ 今後このシートを参照して 現在AであるC列の値の合計値 現在BであるC列の値の合計値 現在CであるC列の値の合計値 現在DであるC列の値の合計値 をそれぞれを算出し以下のように表示したいと考えています。 現在A→計350 現在B→計200 現在C→計120 現在C→計500 このような計算を行う場合の数式はどのようになるのでしょうか。 良い案がありましたら、どなたかご教授下さい。 宜しくお願いします。

専門家に質問してみよう