«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

매일 채워가는 꽃바구니

행에서 색칠해진 셀의 값추출하기 본문

VBA Excel

행에서 색칠해진 셀의 값추출하기

Mr.Flower 2009. 7. 17. 10:17

Sub macro()
Range("S2:AB10000").ClearContents
Er = Cells(65536, 3).End(xlUp).Row
For i = 2 To Er
c = 19
    For j = 3 To 17
        If Cells(i, j).Interior.ColorIndex = 53 Then
            Cells(i, c) = Cells(Er, j)
            c = c + 1
        End If
    Next
Next
End Sub



* 설 명 *

Sub macro()

↘  매크로 시작을 알립니다.


Range("S2:AB10000").ClearContents

↘  S2부터 AB10000 (큰범위를 잡아서) 내용을 모두 지웁니다.

 

Er = Cells(65536, 3).End(xlUp).Row

↘  데이터가 몇 줄까지 있을지 모르니

     C열의 제일 밑줄부터 데이터가 있는 줄까지 올라와서 몇번째 줄인지 값을 Er에 넣습니다.

    
For i = 2 To Er

↘  2번째 줄 (첫번째 줄은 제목줄이므로 무시) 부터 좀 전에 구한 Er 줄까지 반복하라는 구문입니다.


c = 19

↘  골라낼 값이 들어가는 열의 번호를 설정하는 거구요 (19니까 S열에 붙인다는 말이네요)


    For j = 3 To 17

↘  3열 부터 17열까지 값을 일일이 비교하기 위해 다시한번 반복문을 사용하네요 (중복 For문)


        If Cells(i, j).Interior.ColorIndex = 53 Then

↘  i의 값과 j의 값이 뭔지 잘 구분하셔야합니다.

     현재는 2, 3이죠  2행 3열 즉 C2셀의 색깔 값이 53(색깔 마다 고유의 번호가 있음)이라면


            Cells(i, c) = Cells(Er, j)

↘  2행 19열에 색깔이 칠해져 있던 셀의 값을 넣으라는 의미입니다.


            c = c + 1

↘  그 열에 그대로 쓰면 다음데이터도 그 자리에 써지면서 앞 데이터를 지워버릴 지도 모르니 옆으로 칸을 이동 시킨 줄이네요


        End If

↘  IF 문이 끝났음을 의미합니다.

    Next

↘   for j=3 to 17 문이 여기까지 반복됨을 의미합니다.


Next

↘  for i=2 to Er 문이 여기까지 반복됨을 의미합니다.


End Sub

↘  매크로 종료를 의미합니다.

'VBA Excel' 카테고리의 다른 글

VBA 질문  (0) 2009.07.31
VBA #3. 기본 코딩  (0) 2009.07.29
VBA #2. 엑셀과 VB?  (0) 2009.07.29
VBA #1. 시작하기  (0) 2009.07.29
잘못입력되는 것을 방지하는 셀 표시기능  (0) 2009.07.17