如何让VBA取代05/04/2016之后的date与05/04/2016

这是我的第一个问题,所以我会尽可能的清楚。

我在Excel中有一个很大的数据集,而且我特别感兴趣的一列有一些注释,例如“你好,这个产品发布的date是08/04/2017”。 我正在寻找创build一个代码,将允许我改变这些单元格中的每个date到05/04/2016。

编辑:要清楚,每个单元格可能包含或不能包含多个date!

该守则将理想地识别在该单元格之后的2016年4月5日之后的任何date,并且可能在2016年4月5日之前,在该单元格之前不触及任何不在date之前的date或date。

这是我一直在使用的代码,如果它有帮助的话,

Sub ReplaceDate()

Dim x As Date

对于x = 6/4/2016至05/04/2020

 Range("C2:C31").Select Selection.NumberFormat = "dd/MM/yyyy" Selection.Replace "x", Replacement:="05/04/2016", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False 

下一个x

结束小组

正如你可能猜到的,现在代码实际上取代了单元格中的任何“X”,但我已经尝试了诸如Selection.Replace DataValue > 05/04/2016等。

任何帮助将不胜感激!

亲切的问候。

你可以尝试:

 Sub ChangeDate() Dim cell As Range Dim words As Variant Dim iWord As Long For Each cell In Range("C2", Cells(Rows.count, "C").End(xlUp)) '<--| loop through column C cells from row 2 down to last not empty one words = Split(cell, " ") For iWord = 0 To UBound(words) If IsDate(words(iWord)) Then If CDate(words(iWord)) > CDate("05/04/2016") Then words(iWord) = "05/04/2016" Next cell.Value = Join(words, " ") Next End Sub