2016-09-26 3 views
0

私の列には、書式設定された日付と一般的な書式で構成されるセルがあります。私は日付ではない行を削除したい、私はこのコードを作ったが、私はそれが日付ではないすべての行を削除するためにそれを得るためにそれを複数回実行する必要があります。日付として書式設定されていない行を削除します

My column is like the one showed in the picture

コード:事前に

Sub del_row_not_date() 

Dim rng_A_last As Long 
Dim i As Integer 

rng_A_last = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row 
Debug.Print rng_A_last 

For i = 1 To rng_A_last Step 1 
    If IsDate(Sheet1.Cells(i, 1)) = False Then 
     Sheet1.Cells(i, 1).EntireRow.Delete 
    End If 
Next 
End Sub 

ありがとう!

答えて

0

行は

となりますので、これに基づいてLINKが見つかりましたこれは:

ヒント条件に基づいて行を削除するヒント行を削除するたびに、行がすぐに行が削除された行の2行下のセルに効果的に移動します削除された行の下に移動します(つまり、それは全くテストされていません)。

これは動作します:)

Sub del_row_not_date() 

Dim rng_A_last As Long 
Dim i As Integer 

rng_A_last = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row 
Debug.Print rng_A_last 

For i = rng_A_last To 1 Step -1 
    'Debug.Print Cells(i, 1).Value 
    If IsDate(Sheet1.Cells(i, 1)) = False Then 
     Sheet1.Cells(i, 1).EntireRow.Delete 
    End If 
Next 
End Sub 
+0

それは私の答えコード#2で私が指摘したものです。しかし、あなたの日付が列 "A"の唯一の数字であれば、私の回答コード#1ははるかに良い(より速くて短く) – user3598756

0

あなたが使用した後の日付ではありません数字で細胞を持っている場合は、上記のすべての列「」ではない、数字のセル、行全体

を削除するもの

Sub del_row_not_date() 
    With Sheet1 
     .Range("A1", .Cells(.Rows.Count, "A").End(xlUp)).SpecialCells(xlCellTypeConstants, xlTextValues).EntireRow.Delete 
    End With 
End Sub 

を試みることができる:

Option Explicit 

Sub del_row_not_date() 
    Dim i As Integer 

    With Sheet1 
     For i = .Cells(.Rows.Count, "A").End(xlUp).Row To 1 Step -1 '<--| loop backwards not to loose next row index after deleting the current one 
      If Not IsDate(.Cells(i, 1)) Then .Cells(i, 1).EntireRow.Delete 
     Next i 
    End With 
End Sub 
+0

おかげで、私は後でそれを試してみて、それにコメントします! – Grohl

+0

ようこそ。あなたのコメントを待って、おそらくもっと答えを増強してください。コード2は実際にあなたの質問を解決していますが、回答を受け入れたものとしてマークしてください。ありがとうございます – user3598756

関連する問題