Jasper Excel
article thumbnail

이번 포스팅에서는 엑셀 다른 셀 끼리 다른 값들이 입력 되어있을때 각각 다른색상을 입히는 방법에 대해서 알아보겠습니다. 여기서 제시된 방법은 조건부 서식을 이용한 방법이 아닌 vba 코드를 입힌 방법으로 특정 열 값에 있어서 위 아래 다른 값들 셀 생각을 회색과 흰색으로 구분하는 방법에 대해서 알려드리겠습니다.

 

 

 

행 색상 구분 VBA활용
행 색상 구분 VBA활용

 

 

 

 

 

 

엑셀 다른 값 끼리 색상 구분
엑셀 다른 값 끼리 색상 구분

 

 

 

 

 

개발도구 VBA 열기 (다른 값 색깔 구분)

VBA 를 먼저 열어줍니다.

개발도구를 만드는 방법은 아래 링크를 참고해주세요.

 

개발도구 만들기

 

 

 

 

모듈 생성
모듈 생성

 

 

 

 

모듈 생성을 합니다. 

 

 

 

 

색 구분 코드 해석

 

매크로 정의하기

Sub 색상적용시키기()

 

매크로 이름을 "색상적용시키기"로 만들어보겠습니다.

 

 

변수 설정

    Dim ws As Worksheet

 현재 활성화 워크시트를 ws 로 객체 설정합니다.


    Dim rng As Range

색상을 변경할 셀 범위를 참조하기위한 범위를 rng(range)로 객체 설정합니다.


    Dim cell As Range

각 셀을 For each 반복문으로 순회할 때 사용 할 범위 객체입니다.


    Dim prevValue As Variant

이전 셀의 값을 저장하기 위한 변수 설정합니다. 


    Dim currentColor As Variant

현재 색상을 저장하기 위한 변수 설정합니다.

 

 



참조 설정

 

    Set ws = ActiveSheet

ws 객체를 현재 활성화된 워크시트로 참조합니다. (활성화된 시트는 코드를 적용할 시트를 말합니다.)

 


    Set rng = ws.Range("A1:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).row)

rng 객체를 A1셀 부터 데이터 마지막 셀까지 범위로 설정합니다.

여기서 

ws.Cells(ws.Rows.Count, "A").End(xlUp).row) 

는 A열의 마지막 데이터 셀의 행 번호를 반환합니다.

즉, 마지막데이터가 만약 A110에 있으면 110을 반환하게 되어서

범위를 A1:A110까지 잡게 되는 것 입니다.

 

A가 아니라 원하는 열에 색상을 입히고 싶으면 A를 바꿔주면 됩니다.

 

   currentColor = RGB(211, 211, 211)

RGB코드 211,211,211으로 옅은 회색으로 초기 설정합니다.

옅은 회색을 원치않을 경우 RGB 코드를 참고하시면 됩니다.

 

RGB 코드 찾기

 

 

 


반복문 설정 (셀 순회)

 

For Each cell In rng

rng (A1:마지막셀) 까지 범위중에 각각의 셀을 순회하기 위해 반복문을 설정해줍니다. (For 문도 가능)


        If prevValue <> cell.Value And prevValue <> "" Then

IF 조건문을 시작을 시작해서 조건을 만들어줍니다.

조건은 prevValue(이전 셀의 값) 과 cell.Value(현재 셀의 값)이 다르고 (<>)

+

prevValue(이전 셀의 값이 빈셀("")이 아닐 경우에

 

And를 넣어서 두 조건다 충족해야지만 참값으로 넘어갑니다.


            If currentColor = RGB(211, 211, 211) Then

                currentColor = RGB(255, 255, 255) 

 

만약 현재 셀이 옅은 회색이면 현재셀을 흰색으로 바꿉니다.


            Else
                currentColor = RGB(211, 211, 211) 

 

만약 현재셀이 옅은 회색이 아니면 (흰색이면) 현재셀을 회색으로 바꿉니다. 

 

211,211,211 옅은 회색

255,255,255 흰색


            End If (두번째 IF문 종료)

 

두번째 IF 조건문은 첫번째 조건문이 참일 경우에 성립합니다.

즉 이전셀과 현재셀이 다르고 이전 셀이 빈셀이 아닐경우에 두번째 IF문이 시작됩니다.

 


        End If (첫번째 IF문 종료)

 


        cell.Interior.Color = currentColor

현재 셀의 배경색상을 currentColor로 설정합니다.

 


        prevValue = cell.Value

현재 셀의 값을 이전값에 저장합니다.

 


    Next cell (반복 다음 셀 로 이동)

마지막 rng까지 반복


End Sub (매크로 종료)

 

 

모듈에 코드 넣기

모듈에 아래 코드를 넣어줍니다.

코드는 아래 메모장에 넣어놨으니 편하게 사용하시면 됩니다.

 

Sub 색상적용시키기()
    Dim ws As Worksheet
    Dim rng As Range
    Dim cell As Range
    Dim prevValue As Variant
    Dim currentColor As Variant

    Set ws = ActiveSheet
    Set rng = ws.Range("A1:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).row)

    For Each cell In rng
        If prevValue <> cell.Value And prevValue <> "" Then
            If currentColor = RGB(211, 211, 211) Then
                currentColor = RGB(255, 255, 255) 
            Else
                currentColor = RGB(211, 211, 211) 
            End If
        End If
        cell.Interior.Color = currentColor
        prevValue = cell.Value
    Next cell


End Sub

 

 

색상 적용시키기 코드.txt
0.00MB

버튼 만들기

 

모듈에 코드를 넣었으면 실행을 할 버튼을 만들어줍니다.

 

 

 

버튼만들기1

 

 

 

 

개발도구 > 삽입 > 단추 컨트롤(버튼)을 삽입합니다.

버튼 만들기 싫다 하시는분은 알트+F8 눌러서 매크로 실행을 해도 됩니다.

 

 

 

 

매크로 지정하기
매크로 지정하기

 

 

 

모듈에 만들어 놓았던 Sub명이 보일 겁니다.

선택하고 확인을 눌러줍니다.

 

 

 

색깔 바꾸기 매크로 활용
색깔 바꾸기 매크로 활용

 

 

 

 

단추이름은 오른쪽 마우스 클릭 > 텍스트 편집으로 이름을 바꿀 수 있습니다.

 

이상으로 1개 열에 같은 셀 값끼리 색상을 묶는 방법에 대해서 알아보았습니다.

조건부 서식으로도 구현이 가능합니다. (복잡한 함수활용)

 

위 포스팅에서 사용된 파일은 아래 첨부 파일을 확인바랍니다.

색깔바꾸기.zip
0.01MB

 

 

엑셀 유용한 기능

profile

Jasper Excel

@Jasper's Excel

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!