如何搜索和删除包含" Jan-00"在VBA中

时间:2017-02-17 12:35:59

标签: vba excel-vba excel

我有一项任务,如果列的标题是" Jan-00",则应删除整个列。工作表中有许多这样的列。由于无效的公式出现,因此在插入列时会自动填写(我无法更改公式但只删除列)。桌子的屏幕截图如下。

screenshot of the table

这是更正后的代码:

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的正确格式?任何建议将不胜感激。谢谢!

4 个答案:

答案 0 :(得分:1)

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

所以(并整理一些语法)

If ws.Cells(1, i).Value = 0 Then

应该工作。

另外,考虑向后运行循环,否则你会错过连续的零。

答案 1 :(得分:1)

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

您引用单元格的方式有误。它不应该是Cells.Value(1,i),而是如图所示。此外,我已经添加了格式检查,无论是日期。

答案 2 :(得分:0)

您可以使用此

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

答案 3 :(得分:0)

您的代码中存在拼写错误,ws.Cells.Value(1, i)应该是ws.Cells(1, i).Value

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

enter image description here

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

删除列后,该列右侧的所有列都会移动,因此对于当前循环,将删除每个删除列的列。要删除此语句,请在删除语句后添加i = i - 1