[英]VBA: Check for Columns with all 0 and delete
我是 VBA 的新手,我一直在努力弄清楚如何做到這一點。 如果有人可以提供幫助,將不勝感激。
我想做什么:我有一系列單元格是我從另一個工作表復制過來的。 此范圍包含一個 header,有些列只有我要刪除的 0 單元格。 下面是一個例子:
標頭 1 標頭 2。 標頭3。 標頭 4 1 0. 2. 3 2. 0. 3. 4 3. 0. 4. 5
我希望從第 2 行開始,每一行的代碼為 go,並檢查行中的每個單元格的值是否為 0。 如果它是 0,那么我希望它檢查列中的每個單元格以查看列中的所有單元格值是否也為 0。如果是,則刪除。 如果它遇到非零值,那么它將跳轉到下一列的開頭並重復。
上面的工作方式是它將開始檢查第 1 行。單元格 (1,1) 的值為 1,因此它會轉到下一列單元格 (1,2)。 它檢查該值是否為 0,然后移動到 Cell (2,2) 到 Cell (2,3)。 由於列中每個單元格的所有值均為 0,因此第 2 列被刪除,然后轉到第 3 列。
這是我到目前為止的代碼,但它沒有刪除任何列。 列計數器的代碼倒退,因為這是我讀到的刪除列時最簡單的方法
Sub Delete column ()
Dim i as long
Dim j as long
Dim lrow as long
Dim lCol as long
lrow = Cells(rows.count, 1).end(xlup).row
lcol = cells(1, column.count).end(xltoleft).column
For i = 2 to lRow
For j = lCol to 8 Step -1
if Cell(I,j) = 0 then
else
Cell.offset(0,1).select
end if
next j
Column(1).Entirecolumn.delete
next i
End sub ()
這應該可以幫助你一點。 它檢查列 A 並查看值加起來是否為 0,如果是,則刪除該列。 如果 A 不加到 0,您只需要讓列更改字母即可。希望這對您有所幫助。
Sub Deletecolumn()
Dim ColumnTotal As Double
ColumnTotal = Application.WorksheetFunction.Sum(Columns("A:A"))
If ColumnTotal = 0 Then
Columns(1).EntireColumn.Delete
End If
End Sub
該代碼將刪除所有只有文本、只有 0 值或兩者都有的列,但如果其路徑中有 Null 列,它將停止。 它還將通知用戶刪除了多少列。 如果 Exit Sub 被刪除,該過程將永遠運行(或直到 pc 崩潰),所以要小心::)
Sub DeleteColumns()
Dim ColumnCount As Integer
Dim DeletedColumnCount As Integer
For ColumnCount = 1 To Columns.Count
If Application.WorksheetFunction.Sum(Columns(ColumnCount)) = 0 Then
Columns(ColumnCount).EntireColumn.Delete
DeletedColumnCount = DeletedColumnCount + 1
ColumnCount = ColumnCount - 1
End If
If Application.WorksheetFunction.CountA(Columns(ColumnCount + 1)) = 0 Then
MsgBox DeletedColumnCount & " invalid columns were deleted!"
Exit Sub
End If
Next ColumnCount
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.