有人可以告訴我什麼VB代碼我可以使用,以獲得以下宏的Excel結果?刪除列A如果列B是空的
如果列B爲空白,我希望刪除列A中的內容。這是我已經走了多遠:
If Range ("B66")= IsEmpty Then
Range ("A66").Select
Selection.ClearContents
End If
有人可以告訴我什麼VB代碼我可以使用,以獲得以下宏的Excel結果?刪除列A如果列B是空的
如果列B爲空白,我希望刪除列A中的內容。這是我已經走了多遠:
If Range ("B66")= IsEmpty Then
Range ("A66").Select
Selection.ClearContents
End If
Sub Main()
Application.ScreenUpdating = False
Dim i As Long, r As Range
For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
Set r = Range("A" & i)
If IsEmpty(r.Offset(0, 1)) Then r.EntireRow.Delete shift:=xlUp
Next i
Application.ScreenUpdating = True
End Sub
首先你需要一個循環,循環中列所有單元
For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
設置了一個循環,從最後一個單元格迭代到第一個在列A中
Range("A" & Rows.Count).End(xlUp).Row
發現在塔中使用的
Set r = Range("A" & i)
套R參數是一個範圍對象的最後一個單元
If IsEmpty(r.Offset(0, 1)) Then
B列在同一行上偏移指向細胞,因此,如果它的列A(其是小區的相鄰小區(sameRow,柱B)是空的,則
r.EntireRow.Delete shift:=xlUp
刪除整個行
Application.ScreenUpdating = False/True
關閉屏幕更新以在使用循環時加快執行速度
爲什麼要刪除EntireRow ..你是不是指'EntireColumn'? –
在英語和編程邏輯中,刪除整個列都沒有意義。我認爲OP實際上意味着ROWS。另外他的僞代碼讓我覺得他的意思是「行」,當他說'列' – 2013-10-11 10:00:27
太好了!非常感謝。 – adp
詢問代碼的問題必須證明對所解決問題的最小理解。包括嘗試解決方案,爲什麼他們沒有工作,以及預期的結果。另見:[Stack Overflow question checklist](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist) –
我改變了我的問題。我希望這種方式更清楚。 – adp