Excel 2013-특정 셀 참조를 기반으로 행 삭제


2

셀 내용이 숫자로 시작하는 Excel 2013에서 행을 삭제하는 방법을 찾으려고합니다.

EG HI 열에는 문자로 시작하는 항목과 숫자로 시작하는 항목이 여러 개 있습니다. H 열의 셀 내용이 숫자로 시작하는 모든 행을 삭제하고 싶습니다.

모든 안내 / 조언을 감사하게받을 것입니다!

좋아, 그래서 나는 한 장에서 작동하는 것처럼 보이는 VBA 코드를 조금 만들었습니다.

Sub Macro_01()
Dim L As Long, i As Long
L = Cells(Rows.Count, "F").End(xlUp).Row
For i = L To 1 Step -1
    If Left(Cells(i, "F"), 1) Like "[0-9]" Or Cells(i, "F") = "" Then
        Rows(i).Delete
    End If
Next
End Sub

통합 문서의 284 장 모두 에서이 작업을 수행하는 방법을 연구 중입니다. Do / Loop를 시도했지만 끝없이 실행되고 응답하지 않습니다. 시트가 몇 개인 지 알고 있기 때문에 코드에 입력해야하는 간단한 명령이 있습니까?


1
요구 사항은 열 H 를 테스트하는 것이지만 코드는 열 F를 확인합니다 ??
게리의 학생

예, 죄송합니다. 열이 섞여 있습니다. 실제로 열 FI는 조사 할 코드가 필요합니다.
Deadite

`... "[0-9]"와 같이 말할 때 , 셀의 첫 문자가 0에서 9까지의 숫자 인 곳을 찾고 있다고 생각 합니까? 그리고 하지 말 그대로 "[0-9]"?
BruceWayne

여러 시트에서 테스트하면 데이터가 숫자로 시작하지 않는 행을 삭제하지 않고 작동하는 것 같습니다. 그러나 누군가가 더 나은 것을 생각해 내면 코드를 변경하게되어 기쁩니다. 그러나 284 장 모두에서 자동화하는 데 문제가 있습니다.
Deadite

코드가 작동합니까? 오류가 발생한 위치를 확인하기 위해 디버깅 을 시도 했습니까 ?
Máté Juhász

답변:


0

이것은 어떻게 작동합니까? (내가 게시 한 코드가 예상대로 작동하고 모든 시트 에서 실행해야한다고 가정합니다 .)

Sub Macro_01()

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

Dim L As Long, i As Long
Dim ws      As Worksheet

For Each ws In ActiveWorkbook.Worksheets
    L = .Cells(Rows.Count, "F").End(xlUp).Row
    For i = L To 1 Step -1
        If Left(.Cells(i, "F"), 1) Like "[0-9]" Or .Cells(i, "F") = "" Then
            .Rows(i).Delete
        End If
    Next
Next ws

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

각 시트를 반복하여 마지막 행 변수를 재설정하십시오. 그런 다음 끝날 때까지 계산 / 화면 업데이트를 돌립니다. 200 장 이상의 시트가 있다면 실제로 시간이 걸릴 수 있습니다.

마지막으로, 아마도 데이터 사본에서 이것을 먼저 실행하십시오. 아시다시피, 매크로를 취소 할 수 없습니다.


고마워 나는 그것을 두 장의 시트에서 테스트했으며 예상대로 작동합니다. 다음 시트로 반복되지 않고 자동으로 실행되는 것처럼 보이지 않거나 정말 간단한 것이 누락 되었습니까?
Deadite

@Deadite-흠 ... 다음 장에서 반복되지 않는다고 말하는 이유는 무엇입니까? F8데이터를 단계별로 사용 하는 경우 next ws첫 번째 시트에서 코드를 실행 한 후 코드가 중지되도록 줄에 줄 바꿈을 설정하십시오 . 그러면 다음으로 가지 않습니까? 아니면 그냥 실행되지 않는 것처럼 보입니까?
BruceWayne

0

지금까지 도움을 주셔서 감사합니다. 해결 한 것 같습니다.

Sub Macro_01()
ActiveSheet.Next.Select
Do
Dim L As Long, i As Long
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
L = Cells(Rows.Count, "F").End(xlUp).Row
For i = L To 1 Step -1
If Left(Cells(i, "F"), 1) Like "[0-9]" Or Cells(i, "F") = "" Then
Rows(i).Delete
End If
Next
Next ws
If ActiveSheet.Index <> Sheets.Count Then
ActiveSheet.Next.Select
Else
Exit Do
End If
Loop
End Sub
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.