- ベストアンサー
Excelの抽出(関数)について
下記のAという表からBの表へ各自の4月度、5月度の結果を反映させたいのですが、 関数では複数条件になり、無理なのでしょうか? 【A】 A B C D 1 名前 日付 結果 月 2 田中 4/10 200 4月度 3 山田 4/12 210 4月度 4 小林 4/14 240 4月度 5 田中 5/10 180 5月度 6 小林 5/20 220 5月度 【B】 1 名前 4月度 5月度 2 小林 240 3 田中 200 4 山田 210 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 Excel2003以前のバージョンでSUMPRODUCT関数を使用しない!となれば 当然配列数式もダメ(SUMPRODUCT関数も配列数式になります)ですので PCの負担を軽減する方法としては↓の画像のようにSheet1の作業用の列を設けるのが一番良いと思います。 作業列E2セルに =IF(COUNTBLANK(A2:C2),"",A2&D2) という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 これ以上データはない!というくらいコピーしておいても構いません。 そしてSheet2のB2セルに =IF(OR($A2="",B$1=""),"",SUMIF(Sheet1!$E:$E,$A2&B$1,Sheet1!$C:$C)) という数式を入れ列・行方向にオートフィルで画像のような感じになります。m(_ _)m
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 ↓の画像で左側のSheet1のデータをSheet2に集計するようにしてみました。 尚、Sheet2のA列「名前」と1行目の「○月度」(文字列)は入力済みだとします。 まずSheet1のD2セルに =IF(B2="","",MONTH(B2)&"月度") という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 これでD列ば数値ではなく、○月度という文字列で表示されます。 最期にSheet2のB2セルに =IF(OR($A2="",B$1=""),"",SUMIFS(Sheet1!$C:$C,Sheet1!$A:$A,$A2,Sheet1!$D:$D,B$1)) という数式を入れ列・行方向にオートフィルでコピーすると 画像のような感じになります。 ※ 上記数式はExcel2007以降のバージョンでの数式になります。もしお使いのバージョンがExcel2003以前の場合 SUMIFS関数は使用できませんので =IF(OR($A2="",B$1=""),"",SUMPRODUCT((Sheet1!$A$1:$A$1000=$A2)*(Sheet1!$D$1:$D$1000=B$1),Sheet1!$C$1:$C$1000)) という数式にしてみてください。m(_ _)m
補足
素晴らしいご回答をくださり、感謝申し上げます。 Excelのバージョンを書き忘れましたが、2003です。 2003の場合、SUMPRODUCTを使う数式をお教えいただきましたが、 他の関数では求めることが出来ないでしょうか? SUMPRODUCTはExcelの計算がかなり重く感じられ、 以前もSUMPRODUCTを使ってみたことがありますが、 結局、シートを増やしたりして、 別の関数を使用しました。 お忙しいかと思いますが、 他の関数での数式もお教えくださると助かります。 よろしくお願いいたします。
お礼
素晴らしい!! 完璧です! こちらのわがままな要望にも丁寧にご回答くださり、 本当にありがとうございました。 お教えいただいた数式を大切に使わせていただきたいと思います。 本当にありがとうございました(^o^)