- ベストアンサー
Excel関数で基準日からの日付範囲でデータを抽出する方法
- Excelの関数を使って、基準日から指定した日数前のデータを抽出する方法について教えてください。
- 具体的な例として、表の中から基準日から5日前のデータを抽出し、リストとして表示する方法が知りたいです。
- 関数の組み合わせを使用して、条件に合致するデータのみを抽出する方法をご教授ください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
わかりやすい方法として次のようにシート1には作業列を作って対応することでしょう。 シート1ではA1セルに氏名の文字があり、データは2行目から下方にあるとします。また、日にちはB1セルからAF1セルにわたって1から31の数値が入っているとします。 また、シート2ではA1セルに基準日の文字がありB1セルには5日を検索するのでしたら5と入力します。 A2セルには氏名と入力します。 次にシート1に戻ってAG2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(OR(A2="",Sheet2!B$1=""),"",IF(INDEX(A2:AF2,MATCH(Sheet2!B$1,$1:$1,0))="○",MAX(AG$1:AG1)+1,"")) 次にシート2のA3セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>MAX(Sheet1!AG:AG),"",INDEX(Sheet1!A:A,MATCH(ROW(A1),Sheet1!AG:AG,0)))
その他の回答 (2)
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、○印を付ける表の中で、「Aさん」と入力されているセルがSheet1のA2セルであり、氏名はSheet1のA2~A99の範囲に入力されていて、Sheet2のB1セルに基準日を入力すると、Sheet2のA3以下に該当する氏名が表示されるものとします。 又、Sheet氏名が まず、Sheet2のA3セルに次の数式を入力して下さい。 =IF(OR(COUNTIF(Sheet1!$1:$1,$B$1)=0,ROWS(A$3:A3)>COUNTIF(OFFSET(Sheet1!$A:$A,,MATCH($B$1,Sheet1!$1:$1,0)-1),"○")),"",INDEX(Sheet1!$A:$A,SUMPRODUCT(ROW(Sheet1!$A$2:$A$99)*(OFFSET(Sheet1!$A$2:$A$99,,MATCH($B$1,Sheet1!$1:$1,0)-1))="○")*(COUNTIF(OFFSET(Sheet1!$A$1,,MATCH($B$1,Sheet1!$1:$1,0)-1,ROW(Sheet1!$A$2:$A$99)),"○")=ROWS(A$3:A3))))) 次に、Sheet2のA3セルをコピーして、Sheet2のA4以下に貼り付けて下さい。 これで、Sheet2のB1セルに基準日を入力するだけで、Sheet2のA3以下に該当する氏名が表示される様になると思います。
お礼
早速の回答ありがとうございます。 当方での行が少しずれていたため、 修正して試してみたのですが、 理解力不足でできませんでした。 ただ、すごく勉強になるので 時間をかけて、理解していきたいと思います。 ありがとうございました。
- nattocurry
- ベストアンサー率31% (587/1853)
オートフィルタで、5日の○だけを抽出すれば良いと思いますけど、どうでしょうか?
お礼
早速回答いただきありがとうございます。 別の表(別のシート)に表示させたいので、 申し訳ありませんが、 オートフィルは使用できません。
お礼
早速の回答ありがとうございます。 教えていただいた内容で見事に できました!!! やっぱり関数って奥が深いですね・・。 感謝!!感謝!!です。