기금넷 공식사이트 - 금 선물 - EXCEL VBA 코드 문제?

EXCEL VBA 코드 문제?

다음 단계에 따라 문제를 해결하는 것이 좋습니다.

변수를 정의합니다. 행 수, 열 수, 셀 값 등 조작해야 하는 데이터와 범위를 저장할 변수를 정의해야 합니다. 이렇게 하는 것은 코드를 더 명확하고, 이해하기 쉽고, 후속 수정 및 디버깅을 용이하게 하기 위한 것입니다.

루프 트래버스 For 루프나 Do While 루프를 사용하여 각 행의 데이터를 트래버스하고 각 행이 삭제 또는 지우기 조건을 충족하는지 확인해야 합니다. 이렇게 하는 것은 코드를 더 유연하고 효율적으로 만들어서 누락되거나 반복되는 작업을 피하기 위함이다. (존 F. 케네디, 코드, 코드, 코드, 코드, 코드, 코드, 코드)

조건을 판단하다. If 문이나 Select Case 문을 사용하여 각 행의 B, E, H, K, N, Q 6 열에 해당하는 셀의 데이터가 동일한지 아니면 다른지 확인하고 그에 따라 연산해야 합니다. 이것은 당신의 코드를 더 정확하고 완벽하게 하기 위한 것이며, 또한 당신의 요구와 논리에 부합할 수 있도록 하기 위해서이다. (존 F. 케네디, 코드명언)

작업을 수행합니다. Delete 메소드나 ClearContents 메소드를 사용하여 부적합한 행이나 셀을 삭제하거나 지워야 합니다. 이것은 코드를 더 간결하고 효과적으로 만들고 원하는 결과를 얻기 위한 것이다. (존 F. 케네디, 코드명언)

다음은 가능한 코드 예제입니다.

하위 삭제 또는 지우기 ()

변수를 정의합니다

Dim I As Long' 라인 번호

Dim j As Long 열 번호

Dim k As Long 카운터

Dim v As Variant' 셀 값

"Dim r As Range" 작업 범위

작업 범위를 A 1:Q 1000 으로 설정합니다 (실제 상황에 따라 수정됨).

R = 범위 설정 ("A 1:Q 1000")

마지막 줄에서 루프를 시작합니다.

I = R. 행의 경우 1 단계-1 까지 계산됩니다

초기화 카운터가 0 입니다.

K = 0

초기화 셀 값이 null 입니다.

V = ""

B, e, h, k, n 및 q6 열을 통과합니다.

배열 (2,5,8, 1 1, 14, 17) 의 각 j 에 대해 다음을 수행합니다

셀 값이 비어 있으면 건너뜁니다

만약 R. 세포 (I, j) 라면. Value = "를 입력하고 다음 셀로 이동합니다

셀 값이 이전과 다를 경우 카운터에 1 을 추가하고 셀 값을 기록합니다.

만약 R. 세포 (I, j) 라면. 가치<& gt 그럼 v

K = k+1

V = r.Cells(i, j) 입니다. 가치

만약 ... 끝날거야

다음 셀:

다음 J.

측정자의 값을 판별하다

시나리오 k 를 선택합니다

카운터가 0 이고 6 개 셀이 모두 비어 있으면 행이 삭제됩니다.

R. 줄 (I). 삭제

상황 1' 카운터가 1 이면 6 개 셀이 모두 동일하고 아무 작업도 수행되지 않습니다.

아무것도 하지 않다

사례 2' 카운터가 2 이면 다섯 개의 셀이 같고 하나가 다르다는 뜻입니다. 다른 셀을 지웁니다.

B, e, h, k, n, q 열을 다시 순환합니다.

배열 (2,5,8, 1 1, 14, 17) 의 각 j 에 대해 다음을 수행합니다

셀 값이 이전과 다를 경우 셀을 지웁니다.

만약 R. 세포 (I, j) 라면. 가치<& gt 그럼 v

R. 셀 (I, j). 내용을 지우다

만약 ... 끝날거야

다음 J.

Case Else' 카운터가 2 보다 크면 여러 항목 또는 다른 데이터가 있고 해당 행이 삭제됩니다.

R. 줄 (I). 삭제

선택을 마치다

다음으로 저는

끝단 접합

코드의 논리를 완전히 분석해 보겠습니다.

먼저 행 번호, 열 번호, 셀 값 및 작업 범위와 같은 데이터를 저장할 변수를 정의합니다.

그런 다음 실행 범위를 A 1:Q 1000 으로 설정하고 실제 상황에 따라 수정할 수 있습니다.

그런 다음 행을 삭제한 후 행 번호가 변경되지 않도록 마지막 행부터 각 행의 데이터를 순환합니다.

각 행에 대해 초기화 카운터는 0 으로, 서로 다른 데이터의 양을 기록하는 데 사용됩니다. 첫 번째 null 이 아닌 데이터를 기록하기 위해 초기화 셀 값이 null 입니다.

그런 다음 각 행에 대해 B, E, H, K, N, Q 6 열의 셀을 반복하고 셀이 비어 있으면 건너뜁니다. 셀 값이 이전과 다를 경우 카운터는 1 을 추가하고 셀 값을 기록합니다.

그런 다음 측정자 값에 따라 라인이 삭제 또는 삭제 조건을 충족하는지 여부를 결정합니다. 카운터가 0 이면 6 개 셀이 모두 비어 있고 행이 삭제됩니다. 카운터가 1 이면 6 개 셀이 모두 동일하고 연산이 수행되지 않음을 의미합니다. 카운터가 2 이면 다섯 개의 셀이 같고 하나가 다르다는 뜻입니다. 다른 셀 지우기 측정자가 2 보다 크면 여러 품목 또는 다른 데이터가 있고 행이 삭제됩니다.

마지막으로 루프를 종료하고 작업을 완료합니다.

이것이 코드의 논리와 역할입니다. 너에게 도움이 되었으면 좋겠다.