如何搜索和删除包含“的单元格”;一月零日“;在VBA中

如何搜索和删除包含“的单元格”;一月零日“;在VBA中,vba,excel,Vba,Excel,我有一个任务,如果一列的标题是“Jan-00”,那么整个列都应该被删除。工作表中有很多类似的列。Jan-00出现的原因是插入列时自动填写的公式无效(我无法更改公式,只能删除列)。该表的屏幕截图附在下面 这是正确的代码: For i = LastColumn to i+1 step -1 If ActiveSheet.Cells(1, i) = 0 And IsDate(ActiveSheet.Cells(1, i).Value) Then Columns(i).EntireC

我有一个任务,如果一列的标题是“Jan-00”,那么整个列都应该被删除。工作表中有很多类似的列。Jan-00出现的原因是插入列时自动填写的公式无效(我无法更改公式,只能删除列)。该表的屏幕截图附在下面

这是正确的代码:

For i = LastColumn to i+1  step -1
    If ActiveSheet.Cells(1, i) = 0 And IsDate(ActiveSheet.Cells(1, i).Value) Then
    Columns(i).EntireColumn.Delete
    Else
    End If
 Next i

我认为这里的问题是指出正确格式的Jan-00?如有任何建议,将不胜感激。谢谢

Jan-00
很可能是值0的一些模糊格式

所以(整理一些语法)

他应该工作

还考虑向后循环运行,否则会遗漏连续的零点。

Option Explicit

Public Sub TestMe()

    Dim i           As Long
    dim k           as long: k = 1
    Dim LastColumn  As Long: LastColumn = 6

    For i = LastColumn To k Step -1

        If ActiveSheet.Cells(1, i) = 0 And IsDate(ActiveSheet.Cells(1, i).Value) Then
            Columns(i).EntireColumn.Delete
        Else
        End If

     Next i

End Sub
引用单元格的方式有错误。它不应该是
单元格。值(1,i)
,而是如图所示。此外,我还为格式添加了一个检查,无论它是否为日期。

您可以使用此选项

For i = 1 To LastColoumn
    If ws.Cells(1, i).Value Like "Jan-00" Then Columns(i).EntireColumn.Delete
Next i

您的代码中有一个输入错误,
ws.Cells.Value(1,i)
应该改为
ws.Cells(1,i.Value

由于
Jan-00
是一个日期,Excel可能会在单元格的值中存储不同的值。选择单元格并查看在公式栏中显示的内容:

您可以将if语句更改为正确的值,也可以测试
.Text
而不是
.value


删除列后,该列右侧的所有列都将移到上面,因此在当前循环中,删除的每一列都将跳过一列。要更正此问题,请在删除语句后添加
i=i-1

谢谢您的评论。但是Cells.Value=0不起作用?有什么不起作用?得到的错误是什么?
ws.Cells.Value(1,i)
不是有效的VBA语法。@Yaolu或
如果ws.Cells(1,i).Text=“Jan-00”则
@Bathsheba您的代码在反向循环中工作得非常好。所有带有jan-00的列都将被删除。但是,在最后,它给了我一个错误代码,即运行时错误“1004”、应用程序定义的错误或对象定义的错误。我不明白为什么,这阻止了我继续做VBA的下一部分。有什么建议吗?
i=i的最后一列
?你的意思是吗?@Bathsheba-its Friday:)删除时向后循环是主题。好的一点,还有一个事实,其他零不应该被删除。不要忘记接受其中一个答案。
For i = 1 To LastColoumn
    If ws.Cells(1, i).Value Like "Jan-00" Then Columns(i).EntireColumn.Delete
Next i