매일 채워가는 꽃바구니
행에서 색칠해진 셀의 값추출하기 본문
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 |