簡體   English   中英

如果單元格包含字符串 X 則刪除整行

[英]Delete entire row if cell contains the string X

我是 VBA 的新手,我試圖想出一種方法來刪除網站列單元格包含單詞none所有行(如果可能,並向上移動單元格)。 該表包含 5000 多條記錄,這將為我節省大量時間。

我很感激任何建議。 提前謝謝了!

這不一定是 VBA 任務 - 使用自動過濾器最容易解決此特定任務。

1.插入自動過濾器(在Excel 2010中點擊主頁->(編輯)排序和過濾器->過濾器)
2. 篩選“網站”列
3. 標記“無”並刪除它們
4. 清除過濾器

好的,我知道這適用於 VBA,但如果您需要一次性批量刪除,您可以使用以下 Excel 功能: http : //blog.contextures.com/archives/2010/06/21/fast-way-to -find-and-delete-excel-rows/希望這對任何人都有幫助

查找字符串“paper”的示例:

  1. 在“查找和替換”對話框中,在“查找內容”框中鍵入“紙張”。
  2. 單擊“查找全部”,查看帶有“紙”的單元格列表
  3. 選擇列表中的一個項目,然后按 Ctrl+A,選擇整個列表,並選擇工作表上的所有“紙”單元格。
  4. 在功能區的主頁選項卡上,單擊刪除,然后單擊刪除工作表行。

在“開發人員選項卡”中,轉到“Visual Basic”並創建一個模塊。 復制粘貼以下內容。 記住更改代碼,這取決於您想要什么。 然后運行模塊。

  Sub sbDelete_Rows_IF_Cell_Contains_String_Text_Value()
    Dim lRow As Long
    Dim iCntr As Long
    lRow = 390
    For iCntr = lRow To 1 Step -1
        If Cells(iCntr, 5).Value = "none" Then
            Rows(iCntr).Delete
        End If
    Next
    End Sub

lRow : 放入當前文件的行數。

"If" 中的數字 "5" 用於第五 (E) 列

我想補充@MBK的答案。 雖然我發現@MBK 的回答對解決類似問題非常有幫助,但如果@MBK 包含如何過濾特定列的屏幕截圖會更好。 在此處輸入圖片說明

這是在另一條評論中提到的,但你可以嘗試這樣的事情。

Sub FilterAndDelete()

Application.DisplayAlerts = False 

     With Sheet1 'Change this to your sheet name

         .AutoFilterMode = False   
         .Range("A3:K3").AutoFilter
         .Range("A3:K3").AutoFilter Field:=5, Criteria1:="none"
         .UsedRange.Offset(1, 0).Resize(ActiveSheet.UsedRange.Rows.Count - 1).Rows.Delete 

     End With

Application.DisplayAlerts = True

End Sub

我還沒有測試過這個,它來自內存,所以它可能需要一些調整,但它應該在不循環數千行的情況下完成工作。 您需要刪除 11-Jul 以便UsedRange正確或將偏移量更改為 2 行而不是.Offset(1,0)的 1 行。

通常,在我執行.Delete之前,我將使用.Select而不是 Delete 來運行宏,這樣我就可以確定正確的范圍將被刪除,這可能值得檢查以確保刪除了適當的范圍。

試試這個 ...

Dim r as Range
Dim x as Integer

For x = 5000 to 4 step -1 '---> or change as you want //Thanx 4 KazJaw

  set r = range("E" & format(x))
  if ucase(r.Value) = "NONE" then
    Rows(x).EntireRow.Delete
  end if 

Next
  1. 刪除第 1 行和第 2 行,使您的標題位於第 1 行
  2. 把它放在一個宏中(它會檢查 75000 行,如果你願意,你可以降低這個數字

    Columns("E:E").Select Selection.AutoFilter ActiveSheet.Range("$E$1:$E$75000").AutoFilter Field:=1, Criteria1:="none" Range("E2:E75000").SpecialCells(xlCellTypeVisible).Select Selection.EntireRow.Delete ActiveSheet.Cells.EntireRow.Hidden = False ActiveSheet.Range("$E$1:$E$75000").AutoFilter Field:=1 Columns("E:E").Select Selection.AutoFilter Range("E2").Select Range("A1").Select

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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