• 締切済み

条件付データの行削除について

はじめまして。 不要データの削除方法で困っています。 下記のような感じでデータが並んでいるのですが、 このうち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

みんなの回答

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

さきほど「条件付データの行削除について(追加)」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.3

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)
回答No.2

こんばんは! 外していたらごめんなさい。 データは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)
回答No.1

一例です。 オートフィルタを設定して、その時間範囲で抽出した行を削除したら如何でしょうか。

関連するQ&A