- ベストアンサー
Excelのマクロについて教えて下さい-初心者です
毎回、入手して検査するデータの行数は異なります(数千行)。 ある列(K列とする)は、日付がセットされているか、空白になっています。日付はこの形式です 2012/3/19。 この日付が、特定の日付より前(古い)場合、この行を削除したいのです。空白の行は残します。但し、特定の日付は、半年に1回更新されるので、定数(?)としてセットして使用出来る形が希望です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
NO3です。 >A1に日付をいれるのでなく、変数に日付をセットすることにすると、どういう形になるのでしょうか? ⇒こんな感じです。 Sub sample() Dim i As Long, 日付 As Date 日付 = "2012/3/19" For i = Cells(Rows.Count, "K").End(xlUp).Row To 2 Step -1 If IsDate(Cells(i, "K")) Then If Cells(i, "K") < 日付 Then Rows(i).Delete End If Next End Sub >実は、第1行にはヘッダーが格納されていますので、一時的に置き換えても良いのですが、 >出来れば。メンテナンス性も向上しますし。 ⇒個人的には、変数はマクロ内よりデータにある方が保守性があると思います。
その他の回答 (3)
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 仮に特定日はA1、検査範囲はK列の2行目以降としています。 対象シートタブ上で右クリック→コードの表示→サンプルコード貼り付け→シート上でAlt+F8キー押下→sample実行 Sub sample() Dim i As Long For i = Cells(Rows.Count, "K").End(xlUp).Row To 2 Step -1 If IsDate(Cells(i, "K")) Then If Cells(i, "K") < Cells(1, "A") Then Rows(i).Delete End If Next End Sub
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
マクロじゃないけど、 基準日は別シート:「KDATE」の「$A$1」に入力しておく。 いずれかの列に、チェック結果をマークする。たとへは、L列を使って、 L2に、 =IF($K2="","",IF($K2<KDATE!$A$1,"XXX","")) 以下、コピー 後は、オートフィルタで、J列が"XXX"なものを、ばさっと削除。
- bin-chan
- ベストアンサー率33% (1403/4213)
切り分けする日付列でソート(データの並び替え)してしまうのが簡単では? 1)元データに、行識別できる列を設け値を設定する。(何かあるならそれを利用) 2)切り分けする日付列の降順(上が大きく下に行くほど小さくなる)でソート 3)切り分けする日付以降の行で、"空白行以外"を削除 4)1)の昇順(上が小さく下に行くほど大きくなる)でソート
お礼
回答ありがとうございました。所望のマクロになっています。 追加で質問させて下さい。 A1に日付をいれるのでなく、変数に日付をセットすることにすると、どういう形になるのでしょうか? 実は、第1行にはヘッダーが格納されていますので、一時的に置き換えても良いのですが、出来れば。メンテナンス性も向上しますし。