-
VBA 유튜브 학습기 6 - 입력된 값이 변할 때마다 테이터에서 해당 값을 찾아 서식 적용하기공부하는 노예/VBA(유튜브 무료 강의) 2021. 4. 2. 08:22728x90
엑사남 님 강의 6강!
오늘 드디어 제가 엑셀에서 써 보고 싶었던 내용을 배웠습니다.
실무에서 이런 경우가 많은 거 같아요.
특정 조건에 맞는 데이터만 찾아서 표시해야 하는 경우.
셀 서식으로도 가능하긴 한데, 조건 바꿔 입력하고 버튼 눌러서 촤라라라락 되면 뭔가 더 멋있고 편하잖아요. 😎
예제 파일을 다운 받았는데 이미 잘 만들어진 완성 파일이더라고요.
오늘은 코드를 따라서 작성하기보다는 작성돼 있는 코드를 읽고 이해하는 것에 초점을 맞춰 공부했어요.
위와 같이 B2~B4셀에 찾고자 하는 조건을 입력하고 [적용] 버튼을 누르면
F9~H34 영역처럼 해당하는 데이터 행을 노란색 음영으로 표시하고, 글자 색을 빨간색으로 바꿔서 표시해 주는 코드입니다.
코드를 작성하기에 앞서 먼저 선행돼야 할 조건이 하나 있는데요.
B2 셀에는 데이터가 입력된 마지막 행이 자동 입력되도록 함수가 적용되어 있더라고요.
5강에서 배웠던
Range("B2").End(xlUp).Row 코드가 데이터가 입력된 마지막 셀을 찾아 이동하는 거라면,
COUNTA 함수는 데이터가 입력된 셀을 찾아 개수를 세 주는 함수입니다.
B2 셀에 적용된 COUNTA 함수의 내용은 이렇습니다.
=COUNTA(F:F)
카운트해라(COUNT) 전부를(All) F열 전체 범위에서(F:F) 데이터가 입력돼 있는 셀을.
여기까지 하면 결과값은 27이 되겠죠?
F8에서 F34까지만 데이터가 입력돼 있으니까요.
그런데 위에 7행을 버튼을 입력하기 위해 비워뒀잖아요?
그래서 COUNTA(F:F)의 결과값에 7 더해 줍니다.
B5셀에는 조건에 맞는 데이터를 표시하고 싶은 음영과 폰트 컬러를 지정해 두고요.
(전 선생님이 지정해 둔 노란 음영에 빨간 폰트 그대로 유지했어요.)
세팅이 끝났으니 코드를 보러 갑니다!
Sub Test01()
Dim i As Long
With Range("F8").CurrentRegion
.Interior.ColorIndex = 0
.Font.ColorIndex = 0
End With
For i = 9 To Range("B2")
If Range("G" & i) = Range("B3") And _
Range("H" & i) <= Range("B4") Then
Range("B5").Copy
Range("F" & i).Resize(1, 3).PasteSpecial xlFormats
End If
Next i
End Sub흠.... ㅋㅋㅋ😭
코드는 볼 때마다 늘 새롭고 짜릿하네요 ㅋㅋㅋ
그래도 공부 좀 했다고 군데군데는 무슨 뜻인지 알겠고, 오늘 여기서 초면인 코드들도 있고 그렇더라고요.
코드의 내용은 이렇습니다.
Range("F8").CurrentRegion.Interior.ColorIndex = 0 'F8 셀부터 붙어 있는 영역 모두 셀 컬러를
사용하지 않겠다.
Range("F8").CurrentRegion.Font.ColorIndex = 0 'F8 셀부터 붙어 있는 영역 모투 폰트 컬러를
사용하지 않겠다.
그런데 이렇게 작성하고 보니 Range("F8").CurrnetRegion 부분이 반복이 되잖아요.
선생님 말씀으론 이게 지금은 두 줄이니까 그냥 칠지 몰라도 코드가 복잡해지면 반복되는 구문을 치는 것도 힘들기도 하지만, 코드가 복잡해 보인다고 하시더라고요.
그럴 땐 이렇게
With Range("F8").CurrentRegion
.Interior.ColorIndex = 0
.Font.ColorIndex = 0
End With
With ~ End With 구문으로 묶으면 반복되는 구문을 한 번만 적을 수 있다고 합니다.
그다음 코드는
Range("B5").Copy 'B5 셀을 복사하라.
Range("F" & i).Resize(1, 3) 'F행 i열 셀을 기준으로 행은 1행만 열은 오른쪽으로 3개의 열로 재선택한다.
.PasteSpecial xlFormats '복사한 것의 서식만 붙여 넣어라.
이런 뜻이 되겠습니다.
나머지 부분은 앞 강의에서 이미 공부했던 것들입니다.
저 긴 코드에서 제가 나름 군데군데는 아는 부분이라고 건너뛸 수 있다는 게 너무 뿌듯하네요. 👏👏👏
(열심히 들었어요 정말....)
오늘 강의에서는 과제는 따로 없더라고요.
금요일인데 과제도 없다니까 왠지 더 신나. ㅋㅋㅋ
일주일 내내 하루도 빠뜨리지 않고 엑사남 님 강의 듣고 있는데요.
정말 조금씩이지만 VBA에 대해 눈을 뜨고 있습니다.
좋은 강의 공유해 주신 엑사남 님께 정말정말 감사드립니다.
VBA 강의 열심히 달렸더니 파이썬이랑 좀 헷갈리는 문제가 있긴 하지만....ㅋㅋㅋ
둘 다 열심히 해야죠. 😅 전 문이과 통합형 인재가 될 거예요!
그럼 전 일하러....
반응형'공부하는 노예 > VBA(유튜브 무료 강의)' 카테고리의 다른 글
VBA 유튜브 학습기 8 - 전체 지우기, 서식 지우기, 값만 지우기, 행과 열 삭제하기, IF문과 FOR문으로 삭제하기(feat. 파워 문과 기획자) (0) 2021.04.08 VBA 유튜브 학습기 7 - 자동 복사, 붙여넣기의 모든 것(feat. 파워 문과 기획자) (0) 2021.04.05 VBA 유튜브 학습기 5 - 데이터의 마지막 행과 열 자동으로 찾기 (feat. 파워 문과 기획자) (0) 2021.04.01 VBA 유튜브 학습기 4 - IF문 + For문 (feat. 파워 문과 기획자) (0) 2021.03.31 VBA 유튜브 학습기 3 - For, For each반복문 (feat. 파워 문과 기획자) (0) 2021.03.30