- ベストアンサー
エクセル複数条件検索方法:データの抜き出しと教科の表示
- win7、エクセル2007で作成中のデータベースで、複数の条件に合ったデータを抜き出す方法について教えてください。
- 現在、時間帯、名前、教科、所属などのフィールド名を使用して複数の条件でデータを抜き出す式を作成しています。
- 条件に合ったデータがある場合には「〇」が表示されるようにまではできたのですが、さらに、条件に合ったデータの教科を表示する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ちょっと数式に間違いがあったので手直します。ゴメンナサイ。 それと教科がD列にあるなら、そのように修正しないといけません。 =IF(A1<>"○","",INDEX(INDIRECT("'[時間割.xlsx]"&C$2&"'!D:D"),SUMPRODUCT((INDIRECT("'[時間割.xlsx]"&C$2&"'!b5:b150")=$B5)*(INDIRECT("'[時間割.xlsx]"&C$2&"'!G5:u150")=$M$28)*ROW($D$5:$D$150)))) また○になる、つまり該当する答えが「必ず1つしか無く」て「絶対に間違いなく1つはある」事がどんな時でも必ず保証できるなら、「IF(○なら」の部分は省略しても構いません。 具体的な例として、例えば一つ挙げるとB5やM28とかにまだデータが未記入では、「答えが1つある」とはならないといった状況です。 「A1に」を用意するのがイヤなら、あなたがご質問で書いた○の式を回答の式のA1の部分に直接放り込んでも、勿論計算できます。数式が倍の長さになるので、ただでさえごちゃごちゃしてるのがもっと見通しが悪く判りにくくなるだけですが。 INDEX関数は =INDEX(範囲、位置) のように2つの引数を使います。(今回のように範囲が1列あるいは1行の場合。範囲が面に広がってる場合は、範囲、縦、横の3つの引数になります) 最初のINDIRECT関数が範囲、続きのSUMPRODUCTの一式が位置です。
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
今作ってる式(○になったりならなかったり)がA1に,教科がA列に入ってるとして =IF(A1<>"○","",INDEX(INDIRECT("'[時間割.xlsx]"&C$2&"'!$A$5:$A$150"),SUMPRODUCT((INDIRECT("'[時間割.xlsx]"&C$2&"'!$b$5:$b$150")=$B5)*(INDIRECT("'[時間割.xlsx]"&C$2&"'!$G$5:$u$150")=$M$28)*ROW($A$5:$A$150)))) などのように,もう一工夫するだけです。
お礼
ありがとうございます!今日はちょっと時間が取れないので、明日試してみます。ありがとうございました!!
補足
説明と理解が悪く申し訳ありません。。。 まず、「時間割」というファイルにB列「時間帯」C列「学年」D列「教科」F列「ID」G列「氏名」という項目があり、これは日付ごとのシートで20日間程あります。 次に「配布用」というファイルに、B列「時間帯」c列「7/20」D列「7/22」・・・・のように日付が入っています。これは3行目です。B列5行目から時間帯が入っていて、c列からの日付の下に、M28の氏名、C列からの日付、時間帯を検索条件として、〇ではなく、実際の教科に入っている教科名が導き出される形で、関数を入れたいと思っています。 入れて頂いた式なのですが、作業用のセルを使って、〇で無い時には空欄という形で、式を分けたほうがわかりやすいのでしょうか??それとも私の説明不足で、〇欄も作りたいと捉えさせてしまったのでしょうか?? そして、INDEX関数の引数が2つになっているみたいだけどなぜなんだろう、、、ROW($A$5:$A$150)で行の何を決められているのか、、、理解できず(><)、、、何となく試してみたけど、答えも導き出せずの状態で、、、 分かりにくい説明で申し訳ありませんが、もしよろしければもう少しお付き合いいただけると大変助かります。。。 よろしくお願いいたします!!
お礼
できたぁ~~~~!!! お付き合いありがとうございました!! うろ覚えで使っているのでわけわからなくなってきてました。 大変助かりました!!