VBA如果一个单元格中的前6个字符不等于01/01 /那么

我希望你能帮上忙。 我在下面有一段代码,它似乎没有正常工作

我想要的代码是这样的

如果列L的整个长度中的任何单元格的前6个字符不包含01/01 /,则使用内部颜色27突出显示该单元格

正如您在Screen Shot 1中看到的那样,列L中的每个单元格都用内部颜色27突出显示,只有单元格L2和L5应该着色。

我的代码如下,可以修改为只突出显示不包含01/01 /的单元格作为列L中的前6个字符

> PS条件格式化方法不是一个选项

与往常一样,所有的帮助,不胜感激。

屏幕截图1 在这里输入图像描述

我的代码

Sub Colour_If() RowCount = Cells(Cells.Rows.Count, "L").End(xlUp).Row For Each n In Range("L2:L" & RowCount) n = Left(n, 6) If n <> "01/01/" Then Range("L2:L" & RowCount).Interior.ColorIndex = 24 End If Next n End Sub 

当处理date时,它可能会有点棘手,我已经使用通配符的Like运算符,并读取单元格的Text属性。

 Option Explicit Sub Colour_If() Dim RowCount As Long Dim n As Range ' always define your worksheet, don't rely on ActiveSheet With Worksheets("YourSheetName") '<-- modify to your sheet's name RowCount = .Cells(.Rows.Count, "L").End(xlUp).Row For Each n In .Range("L2:L" & RowCount) If Not n.Text Like "01/01/*" Then ' check that the first 6 characters do not start with "01/01/" n.Interior.ColorIndex = 24 End If Next n End With End Sub 
 Sub Colour_If() Dim sht As Worksheet Dim RowCount as Long Set sht = Worksheets("Sheet1") RowCount = Cells(Cells.Rows.Count, "L").End(xlUp).Row For i = 2 To RowCount With sht n = Left(.Cells(i, 12).Value, 6) If n <> "01/01/" Then .Cells(i, 12).Interior.ColorIndex = 24 Else .Cells(i, 12).Interior.ColorIndex = 0 End If End With Next i End Sub 

用这个代替:

 Sub Colour_If() lRow = Cells(Rows.Count, 12).End(xlUp).Row For i = 2 To lRow If Left(Cells(i, 12), 6) <> "01/01/" Then Cells(i, 12).Interior.ColorIndex = 24 Else End If Next i End Sub