EXCEL - VBA

두 개의 표를 날짜에 따라 맞춰서 표시하기(1) - 개요

별동산 2024. 1. 23. 08:48
반응형

날짜별로 표시.xlsx
0.01MB

 

 

1. 문제

두 개의 표가 있는데 날짜의 개수가 다릅니다.

이 경우 날짜별로 짝을 맞춰서 오른쪽과 같이 표현하려고 합니다.

다시 말해, 왼쪽에는 1/11이 8개 있고, 오른쪽에는 1/11이 5개이므로 오른쪽 표에서 3개는 공란이 되어야 합니다.

 

 

2. 해결 방법

엑셀 함수로 하기에는 너무 어려울 듯합니다.

 

날짜별로 개수를 세서 한쪽이 부족할 때는 공란으로 채워야 하는데, 날짜도 무작위이고, 개수도 달라질 수 있으므로 VBA로 작성하는 것이 답일 듯합니다.

 

가. 날짜를 Dictionary에 저장

날짜를 배열에 담을 건지 여부를 판단해야 하는데, 고윳값을 저장하는 것은 Dictionary에 담는 것이 좋습니다.

 

나. 날짜 데이터 정렬

위 예제에서는 날짜를 정렬할 필요는 없지만, 어떤 경우가 생길지 모르니 날짜를 정렬하는 것도 구현해야 합니다. 

그러려면 Dictionary에 담긴 값을 배열에 저장한 다음 정렬해야 합니다.

 

다. 날짜별 맞추어 표시

왼쪽 표의 날짜 개수와 오른쪽 표의 날짜 개수가 다른 경우 빈칸으로 표시해야 하는데, 화면에 셀별로 값을 입력하는 것보다는 배치 결과를 배열에 저장한 후 한꺼번에 시트에 표시하는 것이 훨씬 속도가 빠릅니다.

 

라. 기존 내용 삭제 

기존 내용을 삭제하기 위해서는 ClearContents 메소드를 사용합니다.

 

마. 배열을 시트에 표시

배열을 시트에 표시할 때는 기준 셀을 기준으로 배열의 크기만큼 범위를 정한 다음 배열의 내용을 행/열 전환해서 일시에 쓰는 방식을 사용합니다.

 

사. 열 너비 자동 조절

열 너비를 조절할 때는 AutoFit  메소드를 이용하면 됩니다.

 

3. VBA 완성본

위 예제는 왼쪽 표에만 1/14이 있고 오른쪽 표에만 있는 것은 없는데, 오른쪽 표에 1/13을 추가해서 이 경우를 포함해서 왼쪽 표와 오른쪽 표가 짝이 맞지 않을 때 처리할 수 있도록 했습니다.

 

날짜별로 표시.xlsm
0.03MB

 

다음부터는 만들어진 매크로에 대해 내용을 하나씩 살펴보는 시간을 갖도록 하겠습니다.

반응형