VBA 在存在空白或 1 或「安全」時刪除行,但使用公式保留具有 1 或「安全」的安全 emply 儲存格

VBA 在存在空白或 1 或「安全」時刪除行,但使用公式保留具有 1 或「安全」的安全 emply 儲存格

如果單元格為空,或者不使用循環,我想T2:T200透過保持資料安全性來從範圍中刪除空白單元格""1 (=if(b2<>"",1,"")(=if(b2<>"","safe","")

Sub remove_blankrows()
Range("T2:T200").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

答案1

您可以透過在 VBA 中使用基於公式的方法來實現此目的。若要刪除 T2:T200 範圍內包含空白儲存格的行,同時保持值為 1 或「安全性」的儲存格不變:

Sub remove_blankrows()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet1") ' Replace "Sheet1" with your actual sheet name
    
    ' Apply the formula to identify rows to delete
    ws.Range("U2:U200").Formula = "=IF(OR(T2="""", T2=1, T2=""Safe""), """", ""Delete"")"
    
    ' Filter and delete rows based on the formula result
    ws.Range("U2:U200").AutoFilter Field:=1, Criteria1:="Delete"
    ws.Range("U2:U200").SpecialCells(xlCellTypeVisible).EntireRow.Delete
    ws.AutoFilterMode = False
    
    ' Clear the temporary formula column
    ws.Range("U2:U200").ClearContents
End Sub
  1. 範圍 U2:U200 用作臨時列,以套用根據條件標記要刪除的行的公式。
  2. 此公式檢查 T 列中的對應儲存格是否為空白 ("")、1 或“安全性”,並傳回空白字串 (""),表示應刪除該行。
  3. 套用公式後,程式碼會在臨時列上設定自動篩選器,並篩選標記為「刪除」的行。
  4. 然後,它刪除可見行並清除臨時公式列。
  5. 最後,自動過濾器被關閉。

相關內容