簡體   English   中英

需要代碼來刪除基於值的行(VBA)

[英]Need code to delete rows based on value (VBA)

我要做的是獲取此代碼以根據B列中的日期刪除行。如果B列中的日期屬於最近3天,則應刪除它。 代碼似乎刪除1或2行,但不是所有具有“錯誤”日期的行。

我已嘗試將所有列的格式設置為常規。 格式化很好,所以這不是問題。 我將日期轉換為數字,以便我可以獲得最后3天而不會遇到錯誤。 應該知道此數據以.csv文件開頭,並在代碼中保存為excel文件。

Dim myrow As Long
Dim mydate As Long

mydate = Int(CDbl(Now()))
mydate = mydate - 3

Columns("B:B").NumberFormat = "0"

Application.CutCopyMode = False

MsgBox "Last row with data:" & Cells(Rows.Count, "B").End(xlUp).row

For myrow = 1 To Cells(Rows.Count, "B").End(xlUp).row Step 1

        If Range("B" & myrow).value = mydate + 1 Or Range("B" & myrow).value = mydate + 2 Or Range("B" & myrow).value = mydate + 3 Then
        Range("B" & myrow).EntireRow.Delete
        End If

Next myrow

我希望此代碼刪除包含B列中最后3天中任何一行的所有行.B列是一組格式為“43588”“43599”等的日期。但是,它只刪除1或2行代碼運行。 我有一個消息框告訴最后一行有數據,它顯示正確的值,意思是“Cells(Rows.Count,”B“)。End(xlUp).row”工作正常。

我感謝任何幫助。

刪除循環中的行時,必須以相反的順序(從下到上)遍歷行。 否則,當您刪除行時,它下面的行將重新編號,可能會被跳過。

For myrow = Cells(Rows.Count, "B").End(xlUp).row to 1 Step -1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM