【问题标题】:VBA Excel Code to delete entire row if date equals如果日期等于 VBA Excel 代码以删除整行
【发布时间】:2015-07-23 13:05:18
【问题描述】:

我需要一些 VBA Excel 代码的帮助来格式化电子表格。

我必须运行一个报告,给我一个 Excel 电子表格,其中 P 列中有发票日期。如果 P 列中单元格中的发票日期小于或等于 60 天,我需要删除整行今天的日期,并删除 P 列中发票日期距今天日期 4 年或更长时间的任何行。

我通常必须在每次运行报表时手动执行此操作,因此我想使用一些 VBA 代码自动执行此过程。谁能帮我解决这个问题。

Dim x As Long
For x = [a1].SpecialCells(xlCellTypeLastCell).row To 1 Step -1
    Debug.Print Cells(x, "P").Value
    If CDate(Cells(x, "P")) > Date - 60 Then
        Cells(x, "P").EntireRow.Delete
         Else
         Exit Sub
    End If
Next x

我得到了上面的代码

【问题讨论】:

标签: excel vba


【解决方案1】:
Dim LastRow as Integer
Dim row as Integer

LastRow = ActiveSheet.UsedRange.Rows.Count    

For row = 2 To LastRow
    If Cells(row, 16).Value < Date - 59 OR Cells(row, 16).Value > Year(Cells(row, 16)) + 4 Then
        Rows(row).Select
        Application.CutCopyMode = False
        Selection.Delete Shift:=xlUp
    End If
Next row

我或多或少地把它放在了周围,并对其进行了一些调整。让我知道这是否适合您。

【讨论】:

  • 哦,我忘了你问题的第二部分。很快就会解决这个问题。
  • 谢谢 我尝试了上述方法,但无法正常工作。语句存在问题 If (Cells(row, 16)).Value Year(Cells(row, 16)) + 4 Then
  • 我自己运行了代码,发现我把一些括号放错了地方。更新了我的答案。对我来说,它现在有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多