2013-06-28 26 views
1

我不是很擅長於excel,並且不確定是否可能,但我正在使用一個非常大的ex​​cel電子表格和一些單元格列B包括諸如N/A的值。如果B列中的任何單元格包含字符串X,則刪除行並將單元格向上移動

我想知道是否有辦法創建一些條件語句來刪除所有行,如果該行的B列中的單元格包含N/A,並在刪除後將單元格向上移動?

我真的很感謝任何建議,因爲這會爲我節省很多時間。

非常感謝提前!

+1

唐不使用循環。使用自動過濾器。使用它作爲您的指南:[有效的方法來刪除整行,如果單元格不包含'@'](http://stackoverflow.com/a/16901714/138938) –

回答

0

從自下而上的工作,檢查B列中的值N/A,如果找到了,你可以使用:

ActiveSheet.Cells(currentRow,1).EntireRow.Delete 
+0

感謝您的答覆。我如何使用這個來創建一個條件語句來檢查行中的列是否包含「N/A」? – AnchovyLegend

+0

@AnchovyLegend您有沒有使用VBA的經驗?只是試圖衡量我的答案 –

+0

此外,我想在哪裏插入此代碼?我很抱歉,我對excel很陌生,沒有我對VBA沒有任何經驗...... – AnchovyLegend

3

如果這些#N/A(系統)錯誤,則使用GoTo Special (常量,錯誤),使這個直截了當的:

Sub DeleteErrorRows() 
    On Error Resume Next 'in case there are no errors in cells 
    Range("B:B").SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete 
    On Error GoTo 0  'resume error handling 
End Sub 

我懷疑它可能使用Replace替換「N/A」與「#N/A」,然後使用我的方法,雖然我的天堂」沒有測試過這個。 新增是的,它應該工作:

Sub DeleteErrorRows() 
    Range("B:B").Replace "N/A", "#N/A" 
    On Error Resume Next 'in case there are no errors in cells 
    Range("B:B").SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete 
    On Error GoTo 0  'resume error handling 
End Sub 

其實,我覺得這可能是更普遍的應用,取代以「#N/A」的一些單元格值作爲一種機制,用於刪除行:)

+0

+1如果單元類型實際上是基於錯誤的,那麼答案很好。因爲它也可能是基於公式的考慮'Range(「B:B」)。SpecialCells(xlFormulas,16).EntireRow.Delete' – brettdj

+0

@brettdj謝謝。這應該是你的語句中的'xlCellTypeFormulas' - 儘管它與'xlFormulas'具有相同的值並不重要。只是爲了澄清,佈雷特的陳述中的16個指出了導致錯誤的公式。 –

相關問題