• ベストアンサー

エクセル2007でマクロを使わずに集計する方法

添付図のように全品調査表の判定結果から品名別に良・不良の件数を集計したいです。 まずは、使用する関数名または参考URLを教えてください。 それを勉強して、具体的に操作してわからないことは別件で質問したいと思います。 実際の集計条件は 全品個数=   約 1,000個 品名数=    約 300個 品名毎の個数= 不特定1~10 集計表の表示位置は、計算過程の作業領域が必要なら、別の位置またはシートでOK

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

F3セルには次の式を入力しF3セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF($E3="","",SUMPRODUCT(($B$3:$B$1500=$E3)*($C$3:$C$1500=F$2)))

shorun
質問者

お礼

早い回答ありがとうございました 教えていただいた式で完璧でした SUMPRODUCT関数は奥が深そうなので、これを機に一層勉強させていただきます。

その他の回答 (3)

回答No.4

countifs関数を使えばいけます。 例を参考にすると以下の様になります。 集計表Aの良を集計するF3セルは =COUNTIFS(B3:B9,E3,C3:C9,F2) B3:B9は品名の範囲、カンマの後のC3は品名の範囲で指定する名前、 同じくC3:C9は評価の範囲、カンマの後のF2は評価の範囲で指定する名前となります。 集計表のAの不良を集計するG3セルについては =COUNTIFS(B3:B9,E3,C3:C9,G2) となります。 ただこれだと全品調査表と集計表が同じ位置にあるため、コピー&ペーストで式を移すと 範囲にズレが出るので、その辺の調整は必要になるかと思います。

shorun
質問者

お礼

具体的な解説をしていただきありがとうございます。 お礼が間に合わないほど多数かいとういただき、感謝いっぱいです。 参考にさせていただきます。 全部をベストアンサーにしたいですが、できませんので 先着順とします、ご了承ください。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

回答1,2です。 品名数も多いので品名も自動で表示させるとすればお示しの表がシート1に有るとして作業列をD及びE列に設けます。 D3セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(B$3:B3,B3)=1,MAX(D$2:D2)+1,"") E3セルには次の式を入力して下方にオートフィルドラッグします。 =B3&C3 お求めの表をシート2に表示させるとしてA1セルに品名などと入力してから、A2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$D:$D,ROW(A1))=0,"",INDEX(Sheet1!$B:$B,MATCH(ROW(A1),Sheet1!$D:$D,0))) B1セルには良、C1セルには不良と入力します。 B2セルには次の式を入力してC2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF($A2="","",COUNTIF(Sheet1!$E:$E,$A2&B$1)) これでどんなに品名などを含めたデータが多くなっても速やかに計算表示されます。

shorun
質問者

お礼

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

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

回答No1です。 先の式ではデータ多くなると計算に負担がかかります。負担もかからずに分かり易い方法は作業列を作って対応することです。 例えばD3セルには次の式を入力して下方にオートフィルドラッグします。 =B3&C3 その後にF3セルには次の式を入力しG3セルにオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF($E3="","",COUNTIF($D:$D,$E3&F$2))

shorun
質問者

お礼

更に簡潔な式でのご回答ありがとうございます。 とりあえずは、No1回答をマスターしてから、この式を勉強することにいたします。

関連するQ&A