2013-10-11 59 views
-1

有人可以告訴我什麼VB代碼我可以使用,以獲得以下宏的Excel結果?刪除列A如果列B是空的

如果列B爲空白,我希望刪除列A中的內容。這是我已經走了多遠:

If Range ("B66")= IsEmpty Then 
Range ("A66").Select 
Selection.ClearContents 
End If 
+2

詢問代碼的問題必須證明對所解決問題的最小理解。包括嘗試解決方案,爲什麼他們沒有工作,以及預期的結果。另見:[Stack Overflow question checklist](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist) –

+0

我改變了我的問題。我希望這種方式更清楚。 – adp

回答

1
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關閉屏幕更新以在使用循環時加快執行速度

+0

爲什麼要刪除EntireRow ..你是不是指'EntireColumn'? –

+1

在英語和編程邏輯中,刪除整個列都沒有意義。我認爲OP實際上意味着ROWS。另外他的僞代碼讓我覺得他的意思是「行」,當他說'列' – 2013-10-11 10:00:27

+0

太好了!非常感謝。 – adp

相關問題