본문 바로가기
■ 칼퇴를 위한 VBA : 사례/- VBA for 엑셀

엑셀 VBA로 데이터 정규화 자동화하기

by 포탈메이커 2023. 6. 25.

엑셀 VBA로 데이터 정규화 자동화하기

엑셀은 많은 사용자들이 알고 계시듯이 데이터를 다루는 데 매우 편리한 도구 중 하나입니다. 그러나 데이터를 다룰 때, 정규화를 수동으로 수행하는 것은 매우 귀찮은 일입니다.

이번 포스팅에서는 엑셀 VBA를 이용하여 데이터 정규화를 자동화하는 방법에 대해 알아보겠습니다.

 

칼퇴키트, 업무용 도구모음

칼퇴를 위해 꼭 필요한 도구 모음을 제공합니다. 당장의 업무에 필요한 순간 사용하는 가벼운 메모장, 계산기, 변환기 등

portalmaker.backtohome.kr

 

 

1. 데이터 정규화란?

데이터 정규화는 데이터베이스 설계 시 중복을 최소화하며 데이터의 일관성과 무결성을 유지하기 위해 수행되는 프로세스입니다. 이를 통해 데이터 유지보수 및 검색 성능을 향상시킬 수 있습니다. 대표적인 데이터 정규화 방법으로는 1NF, 2NF, 3NF가 있습니다.

  • 1NF (First Normal Form): 테이블의 각 컬럼 값은 반드시 원자 값이어야 합니다.
  • 2NF (Second Normal Form): 테이블은 1NF를 만족하고, 테이블의 모든 컬럼이 기본 키에 의존해야 합니다.
  • 3NF (Third Normal Form): 테이블은 2NF를 만족하고, 테이블의 컬럼은 정확히 자기 자신의 역할만 해야 합니다.

2. VBA를 이용한 데이터 정규화

1-1. 데이터 정규화를 위한 엑셀 준비

우선 엑셀 파일을 열고, 정규화하고자 하는 데이터가 들어 있는 테이블을 작성해야 합니다. 이번 예시에서는 학생들의 성적을 다루는 예시를 사용할 것입니다.


학번 이름 국어 영어 수학
1 김철수 95 85 100
2 박영희 80 90 70

 

위와 같은 엑셀 테이블에서 학번과 이름을 제외한 국어, 영어, 수학을 각각 분리하여 새로운 테이블에 저장할 것입니다.

1-2. VBA 코드 작성

Sub 데이터표준화()

Dim 데이터범위 As Range
Dim 데이터배열() As Variant
Dim 출력배열() As Variant
Dim 행카운터 As Integer
Dim 열카운터 As Integer

' 입력 데이터 영역 정의
Set 데이터범위 = Application.InputBox("입력 데이터를 선택해 주세요", Type:=8)

' 입력 데이터를 2차원 배열에 저장
데이터배열 = 데이터범위.Value

' 출력 데이터 배열 크기 정의
ReDim 출력배열(1 To UBound(데이터배열, 1) * (UBound(데이터배열, 2) - 2), 1 To 3)

' 출력 데이터 배열에 값 할당
For 행카운터 = 2 To UBound(데이터배열, 1)
    For 열카운터 = 3 To UBound(데이터배열, 2)
        출력배열(((행카운터 - 2) * (UBound(데이터배열, 2) - 2)) + 열카운터 - 2, 1) = 데이터배열(행카운터, 1)
        출력배열(((행카운터 - 2) * (UBound(데이터배열, 2) - 2)) + 열카운터 - 2, 2) = 데이터배열(행카운터, 2)
        출력배열(((행카운터 - 2) * (UBound(데이터배열, 2) - 2)) + 열카운터 - 2, 3) = 데이터배열(행카운터, 열카운터)
    Next 열카운터
Next 행카운터

' 출력 데이터 테이블 생성
Sheets.Add After:=ActiveSheet
Range("A1").Resize(UBound(출력배열, 1), UBound(출력배열, 2)).Value = 출력배열

End Sub

위 코드는 정규화 프로세스를 수행하는 VBA 코드입니다. 코드는 대략적으로 아래와 같은 프로세스로 동작합니다.

  1. 사용자로부터 정규화할 데이터 영역을 선택 받습니다.
  2. 선택받은 데이터 영역을 2차원 배열로 저장합니다.
  3. 2차원 배열로 저장된 데이터에서 국어, 영어, 수학을 제외한 값들을 분리하여 3열 데이터로 저장합니다.
  4. 3열 데이터를 가진 새로운 테이블을 생성하고 값을 할당합니다.

3. 마치며

이번 포스팅에서는 엑셀 VBA를 이용한 데이터 정규화의 자동화 프로세스를 살펴보았습니다. 엑셀을 사용하여 대용량 데이터를 다룰 때, 정규화를 수동으로 수행하기란 매우 귀찮은 일입니다. 이를 VBA로 자동화하여 편리성을 높일 수 있으며, 좀 더 정확하고 일관성 있는 데이터 처리를 할 수 있습니다.



포스팅이 도움이 되셨다면 구독, 공감, 댓글 부탁드려요!

행복한 하루 되세요!