VBA는 공백이나 1 또는 "안전"이 있는 경우 행을 삭제하지만 수식을 사용하여 1 또는 "안전"이 있는 안전한 빈 셀을 유지합니다.

VBA는 공백이나 1 또는 "안전"이 있는 경우 행을 삭제하지만 수식을 사용하여 1 또는 "안전"이 있는 안전한 빈 셀을 유지합니다.

루프를 사용하거나 사용하지 않고 셀 이 T2:T200비어 있는 경우 데이터를 안전하게 유지하여 범위에서 빈 셀을 삭제하고 싶습니다.""1 (=if(b2<>"",1,"")(=if(b2<>"","safe","")

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

답변1

VBA에서 수식 기반 접근 방식을 사용하면 이를 달성할 수 있습니다. 값이 1 또는 "안전"인 셀을 그대로 유지하면서 T2:T200 범위의 빈 셀이 포함된 행을 삭제하려면 다음을 수행하세요.

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. 마지막으로 자동 필터가 꺼집니다.

관련 정보