programing

셀에 문자열 X가 포함되어 있는 경우 행 전체를 삭제합니다.

easyjava 2023. 4. 19. 23:34
반응형

셀에 문자열 X가 포함되어 있는 경우 행 전체를 삭제합니다.

웹 사이트 열 셀에 단어가 들어 있는 모든 행을 삭제하는 방법(가능한 경우 셀을 위로 이동)을 생각해 내려고 합니다.none테이블에는 5000개 이상의 레코드가 포함되어 있기 때문에 시간을 크게 절약할 수 있습니다.

제안해 주셔서 감사합니다.

이것은 반드시 VBA 태스크는 아닙니다.이 특정 태스크는 Auto 필터와 가장 쉽게 공유됩니다.

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. 리본의 홈 탭에서 삭제를 누른 다음 시트 행 삭제를 누르십시오.

"개발자 탭"에서 "비주얼 기본"으로 이동하여 모듈을 작성합니다.다음을 복사 붙여넣습니다.원하는 것에 따라 코드를 변경하십시오.그런 다음 모듈을 실행합니다.

  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줄 제거해서UsedRange또는 오프셋을 1 행이 아닌2 행으로 변경합니다..Offset(1,0).

보통 제가 하기 전에.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

언급URL : https://stackoverflow.com/questions/17606045/delete-entire-row-if-cell-contains-the-string-x

반응형