[英]Excel Macro / VBA - How do I delete an entire row if a cell in one column is blank?
[英]How do I tell an excel macro to delete the entire row if cell in a specific column have data?
所以我有一個電子表格。 其中一列的單元格有數字、文本,有些是空白的。 我如何告訴宏刪除列中單元格有數字的整行? 我想保留有文本或空白的行。
我知道有些人使用代碼,但我不熟悉 Visual Basic。 我知道如何開始錄制宏。 我知道如何分配快捷鍵。 我知道當宏出錯時,通常是因為我忘記重命名選項卡。 我知道您可以將代碼復制並粘貼到 vba 中,但我不知道如何實際操作。 我知道在哪里打開 vba,但是一旦打開,我就不知道在哪里粘貼代碼。 我更願意弄清楚如何手動執行此操作。 謝謝
Sub Macro1()
Dim N As Integer
Dim i As Integer
Dim M As Integer
Dim contents
N = Cells(Rows.Count, "A").End(xlUp).Row
M = 0
For i = 1 To N
contents = Cells(i, "A").Value
type_in_cell = VarType(contents)
If type_in_cell = 8 Or type_in_cell = 0 Then
Else
Rows(i).EntireRow.Delete
i = i - 1
End If
M = M + 1
If M = N Then Exit Sub
Next i
End Sub
如果您的最后一個單元格不為空並且您的相關列是“A”列,則這應該有效。 它檢查單元格是文本還是空白,否則刪除該行。
這被放入一個新模塊中。 在“開發人員”選項卡中,依次轉到“Visual Basic”、“插入”、“新模塊”並粘貼上面的代碼。 然后單擊綠色播放按鈕進行測試。 請注意,您無法撤消宏的操作,因此我強烈建議在編輯之前先保存文件的副本。
如果您沒有可用的開發人員選項卡,請參閱以下文檔:
在我處理答案時有人回答了,但無論如何我都會發布我的。
這是一個宏,它查看活動工作表 A 列中從第 1 行開始的每個單元格。如果單元格具有數值,則整行將被刪除。 對於包含 A 列中的值的所有行,這將繼續。根據需要調整列和第一行。
按 Alt+F11 打開 Visual Basic 編輯器 (VBE),然后按 Ctrl+R 查看項目資源管理器。 右鍵單擊 VBAProject 並選擇插入 > 模塊。 如有必要,按 F7 查看代碼窗格,然后將以下 VBA 代碼復制並粘貼到新模塊中。 按 Alt+F11 恢復活動工作表,然后按 F8 運行宏。 將工作簿另存為 *.xlsm 或 *.xlsb。
Sub DeleteNumericRows()
' delete rows that have numeric values in keyCol
Const keyCol = 1 ' adjust this: A is 1, B is 2, etc.
Const firstRow = 1 ' adjust this
msg = "Do you want to delete each row containing a " _
& "numeric value in column " & Chr(64 + keyCol) _
& "? (This cannot be Undone by using Ctrl+Z.)"
ans = MsgBox(msg, (vbQuestion + vbYesNo))
If ans <> vbYes Then Exit Sub
lastRow = Cells(Rows.Count, keyCol).End(xlUp).Row
nRow = firstRow
Do
If IsNumeric(Cells(nRow, keyCol).Value) Then
Rows(nRow).Delete
lastRow = lastRow - 1
Else
nRow = nRow + 1
End If
Loop Until nRow > lastRow
End Sub
您可能還對wellsr VBA Q&A的類似問題和答案感興趣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.