遍历列并删除那些只有零

从Stack Exchange应用发布这个,所以原谅我格式化是有点closures。

基本上,我想做一些非常简单的事情。 我有一个包含一些数据的电子表格。 标题在第一行。 我想遍历列并删除那些列中所有行的值为零的列。 如果任何值不为零,则该列必须保留。

任何人都可以build议一个简洁,易于阅读的方式做到这一点。 我想尽量避免循环,寻找紧凑和优雅的东西。

谢谢

这不是太“不雅”

Sub ColumnKiller() Dim N As Long, i As Long N = Cells(1, Columns.Count).End(xlToLeft).Column For i = N To 1 Step -1 If Application.WorksheetFunction.Sum(Range(Cells(2, i), Cells(Rows.Count, i))) = 0 Then Cells(2, i).EntireColumn.Delete End If Next i End Sub 

编辑#1

如果第一行下面没有负值,上面的代码将会工作。 如果较低的行可以包含负值,则应使用以下代码:

 Sub ColumnKiller2() Dim N As Long, i As Long, wf As WorksheetFunction, Kount As Long Dim s1 As String, s2 As String s1 = "=0" s2 = "=" Set wf = Application.WorksheetFunction N = Cells(1, Columns.Count).End(xlToLeft).Column For i = N To 1 Step -1 Set r = Range(Cells(2, i), Cells(Rows.Count, i)) Kount = wf.CountIf(r, s1) + wf.CountIf(r, s2) If Kount = Rows.Count - 1 Then Cells(2, i).EntireColumn.Delete End If Next i End Sub 

检查每一列,如果第一行下面的所有单元格包含零或空白,则删除该列。