• 締切済み

エクセルVBA 過去分のデータの抽出

A列のA2から2010/2/1/月~2010/3/2/火の日付が入っているとします。本日を2010/3/3/水とした時に、前日3日分(2010/3/2/火,2010/3/1/月,2010/2/28/日)のデータを抽出したいのですがどのようにしたらいいでしょうか。又同様に前日4日分,前日5日分,前日一週間分を抽出するにはどうたしたらいいでしょうか。

みんなの回答

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

A列にはただの日付ではなく「2010/2/1/月」のような文字列が入っているのですか? これでは式も難しくなりますよ。 日付だけなら、サンプルとして貼り付けた画像で D2セルの式は  =OFFSET($A$1,MATCH(TODAY(),$A:$A,0)-5+ROW(Z1),1) E2セルの式は  =OFFSET($A$1,MATCH(TODAY(),$A:$A,0)-6+ROW(Z1),1) になります。それぞれ下方向に抽出する日数分だけコピーしてください。 なお、A列に「2010/2/1」のように日付だけを入力し、セルの書式を「yyyy/m/d/aaa」にすると表示が「2010/2/1/月」となります。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

フィルタのオプション機能を使い、特定の日付範囲のデータを抽出し、この操作を新しいマクロの記録で記録し、そのコードを集計するのが簡単です。 マクロの記録は、以下のような手順で行います。 該当シートのA1セルを選択し、「データ」「フィルタ」「オートフィルタ」で日付の列で「オプション」ボタンをクリックし、適当な日付「以下」、AND適当な日付「以上」として、該当データを抽出し、このシート範囲を大きめに選択し、別シートにコピーし、元のシートに戻って、フィルタモードを解除します。 これで特定の範囲の日付が抽出できるマクロが完成したましたので、VBEでCriteriaの部分を以下のように変更して下さい(数字は適宜変数にしてください)。 Criteria1:=">=" & Date - 4, Operator:=xlAnd, Criteria2:="<=" & Date - 1"

関連するQ&A

専門家に質問してみよう