Excel for 루프의 파일에서 빈 행이나 열을 삭제해야 할 때가있을 수 있습니다. vba 매크로 / 코드를 작성합니다. 우리가 사용해야하는 코드는 상황에 따라 다릅니다. 때로는 하나의 행이나 열을 삭제해야 할 수도 있고, 때로는 하나 이상의 조건에 따라 전체 범위의 행이나 열 또는 때로는 행 / 열을 삭제해야 할 수도 있습니다.

하나 이상의 특정 행이나 열만 삭제해야하는 경우 VBA excel for 루프를 사용하고 다음 코드를 사용할 수 있습니다. _Option Explicit Sub macro1 ()

Application.DisplayAlerts = 워크 시트 ( “Sheet1”)가있는 거짓

Rows (“5 : 6”). Delete .Columns (“A : D”). Delete End With Application.DisplayAlerts = True End Sub_ Module1 코드 창에 복사 된 코드를 볼 수 있습니다. 코드를 복사하려면 파일에서 Alt + F11을 누릅니다. 왼쪽에는 Microsoft Excel 개체가 표시됩니다. 마우스 오른쪽 버튼을 클릭하고 삽입을 선택한 다음 모듈을 클릭합니다. 코드 창이 오른쪽에 나타납니다. 코드를 복사하십시오. 아래 그림을 참조하십시오-

img1

Application.DisplayAlerts = False

디스플레이 경고를 false로 설정하고 필요한 파일 이름으로 파일을 저장합니다. 그런 다음 End Sub 바로 전에 디스플레이 경고를 true로 설정하십시오.

With Worksheets ( “Sheet1”)는 End With로 끝나는 With 루프입니다.

이 for 루프 VBA Excel을 사용하는 경우이 개체를 사용하는이 루프 내의 모든 문은 “Worksheets (“Sheet1 “)”로 시작할 필요가 없습니다. 대신 점 (.)으로 직접 시작할 수 있습니다.

_.Rows (“5 : 6”). Delete_는 5 행과 6 행만 삭제합니다.

_Columns ( “A : D”). Delete_는 A에서 D까지의 열을 삭제합니다.

이 경우 지정된 행 / 열만 삭제됩니다.

그러나 때로는 특정 조건에 따라 행 / 열을 삭제해야 할 수도 있습니다. 예 : 헤더로 “Test”를 포함하는 파일의 모든 열을 삭제한다고 가정하겠습니다. 이 경우 한 열에서 다른 열로 확인하고 기준이 충족되면 열을 삭제하는 루프가 필요합니다.

이와 같은 코드를 사용할 수 있습니다. 각 사람은 자신이 편한 방식으로 코드를 준비합니다. 이것은 이것이 코딩 될 수있는 방법 중 하나 일 뿐이며 유일한 방법은 아닙니다.

_Option Explicit Sub macro2 ()

Dim i As Long, lcol As Long Application.DisplayAlerts = False With Worksheets ( “Sheet1”)

lcol = .Range ( “A1”). End (xlToRight) .Column For i = lcol to 1 Step -1 If .Cells (1, i) .Value = “”Then Exit For If .Cells (1, i). value = “Test”Then .Columns (i) .Delete Next i End With Application.DisplayAlerts = True End Sub_ 아래 그림에 따라 모듈 1에 저장된 코드를 참조하십시오

img2

여기서 lcol은 데이터가있는 시트의 마지막 열입니다. 빈 파일에서이 코드를 테스트하는 경우 lcol은 16384의 값 또는 Excel 버전에 따라 마지막 열의 열 번호를 갖습니다. 그런 다음 마지막 열에서 첫 번째 열로 반복하여 매번 한 단계 뒤로 이동합니다. 삭제 코드는 마지막 행 또는 마지막 열에서 삭제를 시작할 때만 제대로 작동하기 때문에 뒤로 이동합니다. 1 ^ st ^ 행 / 열에서 시작하면 코드에 오류가 발생하는 경향이 있습니다.

빈 파일에서 매크로를 실행할 경우 1 ^ st ^ if 조건이 입력됩니다. Excel에서 매크로는 마지막 열 (이 경우 16384)에서 열 1까지 반복되며 상당히 오래 걸릴 수 있습니다. 따라서 코드가 빈 열을 발견하면 exit For 문을 통해 즉시 루프를 종료합니다. 2 ^ nd ^ if 조건은 값이 “Test”인지 확인하고 “Test”가 발견되면 열을 삭제합니다.

열 대신 행을 삭제하려는 경우 코드는 – _Option Explicit Sub macro3 ()

Dim i As Long, lrow As Long Application.DisplayAlerts = False With Worksheets ( “Sheet1”)

lrow = .range ( “A”& .Rows.Count) .End (xlUp) .Row For i = lrow to 2 Step -1 If .Cells (i, 1) .Value = “”Then Exit For If .Cells ( i, 1) .Value = “Test”Then .Rows (i) .Delete Next i End With Application.DisplayAlerts = True End Sub_ 아래 코드 참조-

img3

위 코드에서 _.Cells (1, i) .value_가 _.Cells (i, 1) .value_로 변경되는 것을 관찰했을 것입니다. 이것은 첫 번째 코드에서 열을 삭제했기 때문에 변수 “i”가 열을 반복해야하는 반면 2 ^ nd ^ 코드에서는 행을 반복해야하기 때문입니다. 1 ^ st ^ 행에는 유지해야하는 헤더가 포함되어 있으므로 마지막 행에서 2 ^ nd ^ 행으로 반복됩니다.

코드 요구 사항에 따라 삭제 행과 삭제 열 코드를 모두 하나의 코드로 병합 할 수도 있습니다. 행 / 열을 삭제해야하는 조건을 여러 개 입력 할 수도 있습니다. 1 ^ st ^ 열에 Test 또는 Dummy와 같은 텍스트가 포함 된 모든 행을 삭제하려는 경우 코드는 다음과 같습니다. _Option Explicit Sub macro4 ()

Dim i As Long, lrow As Long Application.DisplayAlerts = False With Worksheets ( “Sheet1”)

lrow = .range ( “A”& .Rows.Count) .End (xlUp) .Row For i = lrow to 2 Step -1 If .Cells (i, 1) .Value = “”Then Exit For If .Cells ( i, 1) .Value = “Test”또는 .Cells (i, 1) .Value = “Dummy”Then .Rows (i) .Delete Next i End With Application.DisplayAlerts = True End Sub_

img4

마찬가지로이 코드 또는 요구 사항에 따라 보유한 코드에 추가 할 수 있습니다. 행과 열에 대해 여러 조건을 추가 할 수 있습니다.

image 48