- 締切済み
exdelで3つの条件から抽出
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- kuwa_98
- ベストアンサー率66% (79/119)
関数ではありませんが、「並べ替えとフィルター」を使ってみてはどうでしょうか。 (1)データの範囲(例では、A2~D13)をマウスで選択する。 (2)「並べ替えとフィルター」をクリックする。 (3)「ユーザー設定の並べ替え」をクリックする。 (4)画面の指定に合わせて、検索条件を指定する。 (5)検索条件を増やしたい場合は、「レベルの追加」をクリックする。 なお、データの並びを元に戻す為には、1列目にデータ番号を入力しておけば良いでしょう。
- tom04
- ベストアンサー率49% (2537/5117)
No.2です! たびたびすみません。 大きく外していました! 投稿した後にもう一度質問を読み返していると >遊園地であるアトラクションに新規で乗った人数だけを日付ごとに抽出したいといったような場合です。 とありましたので、前回の回答は無視してください。 お詫びにと言っては失礼ですが、 今一度画像をアップさせていただきました。 No.1さんの方法と同様になるかと思いますが・・・ 上側の表がSheet1で下側がSheet2になります。 Sheet1の作業列E2セルに =IF(B2="新",CONCATENATE(A2,B2,D2),"") F2セルに =IF(E2="","",IF(COUNTIF($E$2:E2,E2)=1,ROW(A1),"")) として、E2・F2セルを範囲指定し、F2セルのフィルハンドルで下へずぃ~~!っとコピーします。 そして、Sheet2のA2セルに =IF(COUNT(Sheet1!$F$2:$F$1000)<ROW(A1),"",INDEX(Sheet1!$D$2:$D$1000,SMALL(Sheet1!$F$2:$F$1000,ROW(A1)))) B2セルに =IF(A2="","",INDEX(Sheet1!$A$2:$A$1000,SMALL(Sheet1!$F$2:$F$1000,ROW(A1)))) C2セルに =IF(A2="","",SUMPRODUCT((Sheet1!$D$2:$D$1000=Sheet2!A2)*(Sheet1!$A$2:$A$1000=Sheet2!B2)*(Sheet1!$B$2:$B$1000="新"),Sheet1!$C$2:$C$1000)) とし、A2~C2セルを範囲指定の後、C2セルのフィルハンドルで 下へコピーすると画像のような感じになります。 今度はちゃんと回答になっているでしょうか? もし的外れなら読み流してくださいね。 どうも何度も失礼しました。m(__)m
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! すでに回答は出ていて、重複するかと思いますが、 ↓の画像で説明させていただくと、 I2セルに =IF(COUNTBLANK(F2:H2)>0,"",SUMPRODUCT((A2:A1000=F2)*(B2:B1000=G2)*(D2:D1000=H2),C2:C1000)) という数式が入っています。 とりあえず1000行まで対応できる数式にしています。 これでF2~H2セルに必要条件を入力すると その条件に合ったものの集計ができます。 仮に日付が ○日~△日まで というように範囲が必要な場合は 同じSUMPRODUCT関数で条件を増やすこともできます。 尚、余計なお世話かもしれませんが、 同様の使い方ができる関数としてDSUM関数があります。 I3セルに =IF(COUNTBLANK(F2:H2)>0,"",DSUM(A1:D1000,3,F1:H2)) という数式を入れています。 結果は同じ結果になるはずです。 (この場合同じタイトル行が必要で、タイトル行まで範囲指定する必要があります。) 以上、参考になれば幸いです。m(__)m
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えばE2セルから下方にアトラクション名を、F2セルから下方に日付を、そしてG2セルから下方にに新規に搭乗した人数を表示させるとしたら、G2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTA(E2:G2)<>3,"",SUMPRODUCT((A$2:A$1000=E2)*(D$2:D$1000=F2)*(B$2:B$1000="新")*C$2:C$1000))