- ベストアンサー
エクセルでのデータ抽出について
いつもお世話になっております。 以下の操作についてご教示をお願いいたします。 使用しているエクセルは2007です。 Sheet1 A列:2010年~の日付(昇順に記載し、発生日はランダム)が記載され、 B列以降は日付に対応したデータが記載された表が有ります。 Sheet2に同じ表の形式で2013年以降のデータを抽出したいのですが。 どのような方法がありますでしょうか? INDIRECT関数なんかを使って試行錯誤したのですが・・・わかりません。 どなたかご教示をお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- kagakusuki
- ベストアンサー率51% (2610/5101)
日付が必ず昇順で記載されているという事でしたら、作業列も使わずに、関数のみで抽出する事が出来ます。 今仮に、Sheet2の1行目は「日付」等の項目名を記述しておくために使用し、実際の抽出結果は2行目以下に表示させるものとします。 まず、Sheet2のA2セルに次の関数を入力して下さい。 =IF(COUNTIF(Sheet1!$A:$A,">=2013/1/1"),LARGE(Sheet1!$A:$A,COUNTIF(Sheet1!$A:$A,">=2013/1/1")),"") 次に、Sheet2のB2セルに次の関数を入力して下さい。 =IF(ROWS($A$2:$A2)>COUNTIF(Sheet1!$A:$A,">=2013/1/1"),"",IF(INDEX(Sheet1!$A:$C,MATCH($A$2,Sheet1!$A:$A)+ROWS($A$2:$A2)-1,COLUMNS($A:B))="","",INDEX(Sheet1!$A:$C,MATCH($A$2,Sheet1!$A:$A)+ROWS($A$2:$A2)-1,COLUMNS($A:B)))) 次に、Sheet2のB2セルをコピーして、Sheet2の表内における「Sheet2のA2セルを除いた全てのセル」に貼り付けて下さい。 次に、Sheet2の表内におけるSheet2のA列のセルの書式を[日付]として下さい。 以上です。
お礼
ありがとうございました
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! Sheet1のA列はシリアル値とします。 オートフィルタでも対応できると思いますが、敢えて関数でやる場合 作業用の列を使用するのが一番簡単だと思います。 データは2行目以降にあるとします。 Sheet1のC2セルに =IF(YEAR(A2)>2012,ROW(),"") という数式を入れフィルハンドルでダブルクリック、またはオートフィルでデータ以上に下へコピー! Sheet2のA2セルに =IFERROR(INDEX(Sheet1!A:A,SMALL(Sheet1!$C:$C,ROW(A1))),"") という数式を入れB2セルまでコピー! → そのまま下へコピー! (Sheet2のA列の表示形式は「日付」にしておきます) こんな感じではどうでしょうか?m(_ _)m
お礼
ありがとうございました
- aokii
- ベストアンサー率23% (5210/22062)
全自動でやるならマクロを使うことになりますので、簡単にやるには、 Sheet1のA1セルをクリックし、データタブでフィルタをクリックし、フィルタで2010と2011と2012年のデータのチェックを外し、Sheet1の全データを選んでコピーして、Sheet2に貼り付けてはいかがでしょう。
お礼
ありがとうございました
お礼
ありがとうございました