- 締切済み
条件付データの行削除について
はじめまして。 不要データの削除方法で困っています。 下記のような感じでデータが並んでいるのですが、 このうちTIMEが07:00以前のものと17:00以降のデータが 必要ないので行ごと削除したいのです。 条件式でいろいろとやっているのですがうまく行かないので 教えていただければと思います。 マクロでも構いませんのでよろしくお願い致します。 EVENT DATE TIME 1 2010/6/6 15:22 2 2010/6/6 15:25 3 2010/6/6 15:36 4 2010/6/6 15:38 5 2010/6/6 15:38 6 2010/6/6 15:39 7 2010/6/6 15:39 8 2010/6/6 16:05 9 2010/6/6 16:05 10 2010/6/7 12:02 11 2010/6/7 13:43 12 2010/6/7 13:59 13 2010/6/7 13:59 14 2010/6/7 13:59 ・・・・・・ 1467 2010/10/13 12:42 1468 2010/10/13 12:43 1469 2010/10/13 12:44 1470 2010/10/14 16:05 1471 2010/10/14 16:05 1472 2010/10/15 11:09 1473 2010/10/15 12:33 1474 2010/10/15 12:48 1475 2010/10/15 12:48
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- merlionXX
- ベストアンサー率48% (1930/4007)
さきほど「条件付データの行削除について(追加)」qa6347747 にお答えしたものです。 これも同じようにできますね。 データは2行目からあり、時刻はC列だとします。 07:00ちょうどと17:00ちょうどを含むかどうかは>=、<= を>、<に変えることで変更できます。 以下は「ちょうど」は残します。 Sub test() Dim V, W Dim i As Long, j As Long, n As Long V = Range("A1", Cells(Rows.Count, "A").End(xlUp)).Resize(, ActiveSheet.UsedRange.Columns.Count) ReDim W(1 To UBound(V, 1), 1 To UBound(V, 2)) For i = 1 To UBound(V, 1) If i > 1 Then If V(i, 3) >= TimeValue("07:00:00") And V(i, 3) <= TimeValue("17:00:00") Then n = n + 1 For j = 1 To UBound(V, 2) W(n, j) = V(i, j) Next j End If End If Next i Cells(2, 1).Resize(UBound(W, 1), UBound(W, 2)).Value = W End Sub
- tom04
- ベストアンサー率49% (2537/5117)
No.2です! たびたびごめんなさい。 回答文に誤りがあり、前回のコードでは7時台も削除されてしまいますので、 少し訂正させてください。 操作したいSheet見出し上で右クリック → コードの表示 → VBE・・・ (「コードの表示」部分が抜けていました。) そしてコードを↓のようにしてみてください。 Sub test() Dim i As Long For i = Cells(Rows.Count, 3).End(xlUp).Row To 2 Step -1 If Hour(Cells(i, 3)) < 7 Or Hour(Cells(i, 3)) >= 17 Then Rows(i).Delete (xlUp) End If Next i End Sub こんな感じではどうでしょうか? 何度も失礼しました。m(__)m
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 外していたらごめんなさい。 データは2行めからあり、時刻データはC列に入っているものとします。 ↓のコードを操作したいSheet見出し上で右クリック → VBE画面が出ますので コピー&ペーストしてマクロを実行してみてください。 Sub test() Dim i As Long For i = Cells(Rows.Count, 3).End(xlUp).Row To 2 Step -1 If Hour(Cells(i, 3)) <= 7 Or Hour(Cells(i, 3)) >= 17 Then Rows(i).Delete (xlUp) End If Next i End Sub 7時以前・17時以降のデータを削除するようにしていますので、7時・17時を含まないのであれば コード内の等号を消してください。 尚、一旦マクロを実行すると元に戻せませんので別Sheetでマクロを試してみてください。 以上、参考になれば良いのですが・・・m(__)m
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 オートフィルタを設定して、その時間範囲で抽出した行を削除したら如何でしょうか。