SO社区。我有一个我显然无法独自解决的问题。这仅出于自学目的,仅涉及学校作业。因此,我有多个列,其中包含不同的值类型。在下面的示例中,共有3列:
我要执行的操作-基于“日期”和“字母”列,删除一行早于例如2015年6月29日的行,同时在该日期中分配了字母“ A”。因此,基本上,如果日期早于2015年6月29日,并且该行包含字母“ A”,则该行将被删除;否则,它将被删除。
Date ID Letter
12.01.2013 1 A
05.02.2014 2 A
29.06.2015 3 A
04.01.2016 4 A
17.12.2014 5 A
12.01.2013 6 B
05.02.2014 7 B
29.06.2015 8 A
04.01.2016 9 F
17.12.2014 10 F
所以最终结果应如下所示:
Date ID Letter
29.06.2015 3 A
04.01.2016 4 A
12.01.2013 6 B
05.02.2014 7 B
29.06.2015 8 A
04.01.2016 9 F
17.12.2014 10 F
我一直在寻找解决方案,找到了this和this之类的文章以及其他几篇文章,但它们专注于稍有不同的事情,因为我实在无法解决问题周围该怎么做。
答案 0 :(得分:1)
尝试此代码
Option Explicit
Sub DeleteOld(ByVal MinDate As Date)
Dim i As Integer
i = 2
Do While CStr(ActiveSheet.Cells(i, 1).Value) <> "" And CStr(ActiveSheet.Cells(i, 2).Value) <> "" And CStr(ActiveSheet.Cells(i, 3).Value) <> ""
If DateDiff("d", CDate(ActiveSheet.Cells(i, 1).Value), MinDate) > 0 And CStr(ActiveSheet.Cells(i, 3).Value) = "A" Then
ActiveSheet.Rows(i).EntireRow.Delete
Else
i = i + 1
End If
Loop
End Sub
Sub TestDeleteOld()
Call DeleteOld(DateSerial(2015, 5, 29))
End Sub