我想刪除其中符合以下條件的工作表中的所有列:如何使用VBA刪除除特定標題外的所有空列?
- 第1行=「foobar的」
- 行2-1000是空
這聽起來很簡單但我還沒有設法讓它充分發揮作用。任何幫助將大規模讚賞。
謝謝!
我想刪除其中符合以下條件的工作表中的所有列:如何使用VBA刪除除特定標題外的所有空列?
這聽起來很簡單但我還沒有設法讓它充分發揮作用。任何幫助將大規模讚賞。
謝謝!
約
dim col as Long, lastCol as Long, r as range
lastCol = ActiveSheet.Usedrange.columns(Activesheet.Usedrange.columns.count).column
for c=lastCol to 1 Step -1
set r = Range(Cells(1, c), Cells(1000, c))
if r.Rows(1) = "foobar" Then
if WorksheetFunction.CountA(Range(r.Rows(2), r.Rows(r.Rows.Count))) = 0 then
Columns(c).delete
end if
end If
next
如何[編輯由OP:添加缺少空間]刪除行按照您的要求(久經考驗)
雖然您的解決方案很好,但它並不考慮顯示爲空白但不是的單元格,因爲它們的格式,註釋或結果爲零的公式......請參閱此頁以獲取更多信息http:// www.ozgrid.com/forum/showthread.php?t=26509 –
OP確實說出了「空白」,所以我會提出類似這樣的建議。 –
以上作品非常適合我的目的 - 謝謝!儘管如此,對第五行的小修改:'ifr.Rows(1)'應該是'if r.Rows(1)' - 缺少一個空格。 – seegoon
最快的方法。
我假設ROW1有列標題
Option Explicit
Sub Sample()
Dim aCell As Range, rng As Range
Dim LastCol As Long, LastRow As Long, i As Long
With Sheets("Sheet1")
Set aCell = .Rows(2).Find(What:="foobar", LookIn:=xlValues, _
Lookat:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not aCell Is Nothing Then .Rows(2).Delete
LastRow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
LastCol = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
Set rng = Range("A1:" & Split(Cells(, LastCol).Address, "$")(1) _
& LastRow)
ActiveSheet.AutoFilterMode = False
For i = 1 To LastCol
rng.AutoFilter Field:=i, Criteria1:=""
Next i
rng.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
ActiveSheet.AutoFilterMode = False
End With
End Sub
對不起,沒有迴應。我正在尋找刪除列,而不是行 - 是上面會做什麼?謝謝。 – seegoon
@seegoon:我可以修改上面的代碼以刪除列:)你能告訴我一個你的數據看起來如何的快照嗎?我猜想這只是一個改變。如果我能看到一個快照,那麼我可以檢查它... –
「但我還沒有設法得到它完全正常」 - 請編輯你已經嘗試了代碼您的文章。然後,我們可以幫助您解決它無法正常工作的問題。 –
如果您的數據有標題,那麼您可以使用自動篩選器刪除空白單元格。 –