• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルの関数について)

エクセルの関数を使って分類の累計を自動表示する方法

このQ&Aのポイント
  • エクセルの関数を使って分類の累計を自動的に表示する方法を教えてください。
  • 上記の表で、納品日が発注日よりも前の場合に関数を使って分類の累計を自動表示する方法を教えてください。
  • エクセルの関数を利用して、特定の条件を満たす場合に分類の累計を自動的に表示する方法を教えてください。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

>F4に表示させるのは、A列の分類のものの累計にしたいのです。  それでしたら、次の様な関数として下さい。 =IF(AND(INDEX($A:$A,ROW())<>"",ISNUMBER(1/DAY(INDEX($C:$C,ROW())))),SUMIFS($E:$E,$A:$A,INDEX($A:$A,ROW()),$D:$D,">=1",$D:$D,"<="&INDEX($C:$C,ROW())),"")  尚、「『4/4』以前」に「4/4」を含めない場合には、次の様な関数にして下さい。 =IF(AND(INDEX($A:$A,ROW())<>"",ISNUMBER(1/DAY(INDEX($C:$C,ROW())))),SUMIFS($E:$E,$A:$A,INDEX($A:$A,ROW()),$D:$D,">=1",$D:$D,"<"&INDEX($C:$C,ROW())),"")  但し、SUMIFS関数はExcelのバージョンがExcel2007以降でなければ使用出来ません。  ですから、もし、質問者様が御使いのExcelのバージョンがExcel2007よりも前のものである場合には、又回答させて頂きますので、その旨を御補足願います。

kyaravan1
質問者

お礼

有難うございました。 なんとか予定の表(20列100行程度)ができました。 大変参考になりました。  

kyaravan1
質問者

補足

今、教えていただいた方法で、さらに大きな表を作りかけていますが、他の部分の式の構成が悪いのか、表が大きすぎるのか(100列400行程度)、処理速度が極端に落ちてしまいます。色々な分析式やマクロ式を入れようとしているからですね・・・?  頑張ってみますが・・・。

その他の回答 (4)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

>他の部分の式の構成が悪いのか、表が大きすぎるのか(100列400行程度)、処理速度が極端に落ちてしまいます。  他のセルに入力されている式がどの様なものなのか情報が無いため、他のセルに入力されている式のせいもあるのかどうかは判りませんが、少なくとも表が大きすぎる事が大きな原因になっている様に思われます。  100列×400行の表ともなりますと、4万個のセルで構成されている事になり、もし、その大部分に関数が入力されているとしますと、どこかのセルの値を変更する度に、パソコンは4万回近くの計算を行わねばならない事になりますから、処理が重くなるのも致し方がない事だと思います。  それと、他のセルに入力されている関数の中に、もし、SUMPRODUCT関数が使用されている関数がある場合には、SUMPRODUCT関数は繰り返し計算を行う関数ですので、処理が重くなりがちになります。  尤も、SUMPRODUCT関数による処理の重さが顕著になるのは、パソコンの性能にもよって異なるものの、1000行を超えた辺りからですから、400行程度であれば、例えSUMPRODUCT関数を使用していたとしましても、処理が極端に重くなる事の主因にはならない様な気が致します。  同様に、配列数式を使用している場合にも、繰り返し計算が行われますので、処理が重くなる傾向があります。  この他にも、SUMPRODUCT関数程ではないものの、MAX関数、MIN関数、SMALL関数、等の一部の統計関数は、他の関数と比べますと、少し処理が重いようです。  とは言え、先に述べました様に、主な原因は表が大きすぎる事ではないかと思います。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 まず、F2セルに次の関数を入力してから、F2セルをコピーして、F3以下に貼り付けてみて下さい。 =IF(ISNUMBER(1/DAY(INDEX($C:$C,ROW()))),SUMIF($D:$D,">1",$E:$E)-SUMIF($D:$D,">="&INDEX($C:$C,ROW())+1,$E:$E),"")  尚、「『4/4』以前」に「4/4」を含めない場合には、次の様な関数にして下さい。 =IF(ISNUMBER(1/DAY(INDEX($C:$C,ROW()))),SUMIF($D:$D,">1",$E:$E)-SUMIF($D:$D,">="&INDEX($C:$C,ROW()),$E:$E),"")

kyaravan1
質問者

補足

皆さん教えていただいて、有難うございます。 一歩進んだ気がします。 あと一つ、私の説明が足りなかった部分がありました。 F4に表示させるのは、A列の分類のものの累計にしたい のです。したがって、この場合、A4は1ですので、過去 の分類「1」についての累計のみを表示させられないか ということになります。言葉足らずですみません。

  • hue2011
  • ベストアンサー率38% (2801/7249)
回答No.2

CとDが日付型と設定されている場合、F2に計算式で =IF(DAYS360(C2,D2,TRUE)>0,+E2,0) とすればいいでしょう。 あとは、F2をコピーして、F2,F3,F4・・・にペーストすればいいだけです。

kyaravan1
質問者

お礼

早速ありがとうございます。 チャレンジしてみます。

noname#195579
noname#195579
回答No.1

もし、なになにという設定での関数ならif関数を使えばいいのですが。 d2<c4   `e2` f4をアクティブにして。

kyaravan1
質問者

お礼

早速ありがとうございます。 使ってみます。

関連するQ&A