Excel vba比较、条件、删除
我有一个Excel文件,其中包含针对不同同事的活动,如下所示:Excel vba比较、条件、删除,vba,excel,Vba,Excel,我有一个Excel文件,其中包含针对不同同事的活动,如下所示: 2016年1月1日| | 2016年12月1日| | 100%| |同事A 2014年2月1日| | 2014年12月31日| | 100%| |同事B 2016年1月1日| | 2016年12月1日| | 100%| |同事B 1 okt 2016 | | 2016年12月31日| | 80%| |同事B 2016年11月1日| | 2016年12月10日| | 100%|同事B 2016年12月1日| 2017年1月1日| 5
- 2016年1月1日| | 2016年12月1日| | 100%| |同事A
- 2014年2月1日| | 2014年12月31日| | 100%| |同事B
- 2016年1月1日| | 2016年12月1日| | 100%| |同事B
- 1 okt 2016 | | 2016年12月31日| | 80%| |同事B
- 2016年11月1日| | 2016年12月10日| | 100%|同事B
- 2016年12月1日| 2017年1月1日| 50%|同事B
在伪代码中,可能看起来像:
For i = [num_rows]
If end_date < today Then
If [COUNTIF(colleague_column, colleague)] > 1 Then
rows(i).delete
End If
End If
Next
对于i=[num\u行]
如果结束日期<今天,则
如果[COUNTIF(同事列,同事)]>1,则
第(i)行。删除
如果结束
如果结束
下一个
或
对于i=[num\u行]
如果结束日期<今天且[计数(同事列,同事)]>1然后
第(i)行。删除
如果结束
下一个
或者在实际的VBA中(在删除行的情况下,我们将向后循环),假设您的数据在A:D列中,没有标题:
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If CDate(Cells(i, 2)) < Date And WorksheetFunction.CountIf(Range("D:D"), Cells(i, 4).Value) > 1 Then
Rows(i).EntireRow.Delete Shift:=xlUp
End If
Next
对于i=单元格(Rows.Count,1)。结束(xlUp)。行到1步骤-1
如果CDate(单元格(i,2))<日期和工作表function.CountIf(范围(“D:D”),单元格(i,4.Value)>1,则
行(i).EntireRow.Delete Shift:=xlUp
如果结束
下一个
Ok将进行编辑,很明显,我只是从头顶输入了样本行。谢谢你的注意。抱歉让你久等了。你的回答恰到好处。我的代码如下:由于字符限制,我无法将代码粘贴到此注释中。。。顺便说一句,上移似乎是不必要的,因为它已经做到了——上移单元格。几乎忘了说谢谢!所以,谢谢!将您的答复标记为正确答案。没问题。:)
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If CDate(Cells(i, 2)) < Date And WorksheetFunction.CountIf(Range("D:D"), Cells(i, 4).Value) > 1 Then
Rows(i).EntireRow.Delete Shift:=xlUp
End If
Next