0

我有一个以下格式的excel表:

excel文件

我只想删除那些在第一行(“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表2

4

2 回答 2

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
于 2012-07-19T11:20:09.650 回答
0

这修复了您的错误,但我认为在那之后仍然存在逻辑错误:

With .Cells(fcol, 1)

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

于 2012-07-19T11:05:21.777 回答