我有一个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的那些列,那么我的表应该像这样查看结尾:
答案 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”进行比较,否则它只会删除所有内容(在我的计算机上尝试过)。