簡體   English   中英

如果特定列中的單元格有數據,如何告訴 Excel 宏刪除整行?

[英]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”、“插入”、“新模塊”並粘貼上面的代碼。 然后單擊綠色播放按鈕進行測試。 請注意,您無法撤消宏的操作,因此我強烈建議在編輯之前先保存文件的副本。

如果您沒有可用的開發人員選項卡,請參閱以下文檔:

https://support.microsoft.com/en-us/office/show-the-developer-tab-e1192344-5e56-4d45-931b-e5fd9bea2d45

在我處理答案時有人回答了,但無論如何我都會發布我的。

這是一個宏,它查看活動工作表 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM