删除excel中的特定列

时间:2012-07-19 10:35:28

标签: excel

我有一个excel表格,格式如下:

excel file

我只想删除第一行(“A”)中没有值1的列。我知道删除列我可以使用类似的东西:

Columns("E:E").Select
Selection.Delete Shift:=xlToLeft

任何帮助都会很棒。

一些给我错误的解决方案是:

Sub Delete_Column_Excel_VBA()
    Dim Firstcolumn, fcol As Long
    Dim Lastcolumn As Long

    With ActiveSheet
        .Select
        Firstcolumn = .UsedRange.Cells(1).Column
        Lastcolumn = .UsedRange.Columns(.UsedRange.Columns.Count).Column
        For fcol = Firstcolumn To Lastcolumn
            With .Cells(fcol, "1")
                If .value <> 1 Then .EntireColumn.Delete
            End With
        Next fcol
    End With

如果我删除第一行中没有值为1的那些列,那么我的表应该像这样查看结尾:

excel table 2

2 个答案:

答案 0 :(得分:1)

试试这个

Sub Delete_Column_Excel_VBA()
    Dim cl As Range, rng As Range

    For Each cl In ActiveSheet.UsedRange.Rows(1).Cells
        If cl <> 1 Then
            If rng Is Nothing Then
                Set rng = cl
            Else
                Set rng = Union(rng, cl)
            End If
        End If
    Next
    rng.EntireColumn.Delete
End Sub

答案 1 :(得分:0)

这可以解决您的错误,但我认为在此之后仍然存在逻辑错误:

With .Cells(fcol, 1)

Excel希望引用表示为数字,而不是像你那样表示字符串。然后在你的if我认为应该是相反的。您可能应该与“1”进行比较,否则它只会删除所有内容(在我的计算机上尝试过)。