gpt4 book ai didi

excel - 需要代码根据值删除行(VBA)

转载 作者:行者123 更新时间:2023-12-04 21:49:43 26 4
gpt4 key购买 nike

我要做的是让此代码根据 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

关于excel - 需要代码根据值删除行(VBA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57043180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com