EXCEL - VBA

엑셀의 표를 티스토리의 표로 변환하는 매크로(3) - 셀 병합1

별동산 2022. 9. 29. 08:31
반응형

아래와 같이 병합된 셀이 가로, 세로, 가로와 세로 모두된 경우를 대상으로 해보겠습니다.

엑셀 병합 셀 예제

 

작업할 파일은 아래와 같습니다.

엑셀표변환(병합).xlsx
0.01MB

 

1. 준비 

가. 셀 병합 여부 및 유형 판단

VBA에서 병합된 경우는 병합된 셀의 개수를 세어 판단을 하는데, 단순히 셀주소.MergeArea.Count로 하면 병합된 셀의 방향을 알 수 없으므로, 

셀주소.MergeArea.Rows.Count와 셀주소.MergeArea.Columns.Count를 사용해야 합니다. 가로,세로 모두 병합인지 알려면 2개를 모두 사용하면 됩니다.

 

개발도구 - Visual Basic을 눌러 Visual Basic Editor를 실행하고,

개발도구 - Visual Basic 명령

 

직접 실행창에(없다면 보기메뉴에서 직접 실행창을 클릭하면 됨)

직접 실행 창 보기

 

?range("a1").Mergearea.Rows.count 라고 입력하고 엔터키를 누르면

세로 방향 병합 셀의 개수 구하기

2라고 반환됩니다.

세로 병합셀의 개수 반환

 

만약 a1을 c1으로 수정하고 엔터키를 누르면 1이라고 값이 구해지고, 2는 아래 줄로 내려갑니다.

세로 병합 셀의 개수 구하기

 

이번에는 rows를 columns로 수정하고 엔터키를 누르면 1이 구해집니다.

가로 병합셀의 개수 구하기

 

이번에는 c1을 a1으로 바꾸고 엔터키를 누르면 당연히 2가 구해질 것입니다.

가로 병합셀의 개수

 

이렇게 코드를 작성하기 전에 간단한 결과값을 구하거나 확인하기 위해 직접실행창을 활용할 수 있습니다.

 

나. 가운데 정렬여부 판단

직접 실행창에 이번에는 ? range("a1").ho까지 입력하면 HorizontalAlignment가 자동으로 완성되므로 엔터키를 누르면(탭키를 누르고 엔터키를 누를 수도 있음)

가로 맞춤(정렬) 기준 구하기

 

-4108이란 이상한 숫자가 나옵니다.

가로 맞춤(정렬)이 가운데 정렬, -4108임

 

이번에는 왼쪽정렬되어 있는(들여쓰기 1이 되어 있어 왼쪽이 떨어진 것임) B4셀로 수정하고 엔터키를 누르면 -4131이란 숫자가 표시됩니다.

가로 맞춤(정렬)이 왼쪽 정렬, -4131임

그렇다면 오른쪽 정렬되어 있는 c4로 수정하고 엔터키를 누르면(줄의 끝으로 이동할 필요 없음)

가로 맞춤(정렬) 기준 구하기

 

이상하게 1이라고 표시됩니다. 이것은 가로 방향으로 정렬이 설정되지 않았다는 의미입니다.

가로 맞춤(정렬) 기준이 일반, 다시 말해 없음

 

엑셀 아이콘을 눌러서 엑셀 워크시트로 이동한 다음

엑셀로 돌아가기 아이콘

 

가로 방향 오른쪽 맞춤 명령을 누른 다음

가로 기준 오른쪽 정렬(맞춤)

 

개발도구 - Visual Basic 명령을 눌러 다시 VBE로 돌아온 다음 한 줄 위로 커서를 이동한 다음 엔터키를 누르면 이번에는 -4152라고 값이 표시됩니다.

가로 맞춤이 오른쪽, -4152임

 

그렇지만 숫자를 외우기 어려우므로 xlCenter, xlRight, xlLeft, xlGeneral 등의 엑셀 변수를 사용하는 것이 좋습니다.

직접 실행 창 아래 부분에 ?xlcenter라고 입력하고 엔터키를 누르면 -4108이란 숫자가 구해져서 위 -4108과 일치합니다.

엑셀 상수, xlCenter 값

(참고사항 - xl변수 값 알아보기)

표준 도구 모음 줄에서 개체 찾아보기 아이콘을 누른 후 Excel 아래 입력 칸에 xlcenter라고 입력하고 엔터키를 누르면

개체 찾아보기 아이콘 누르고, xlcenter라고 입력

 

검색결과가 표시되는데 첫번째 줄이 선택되고, 아래로 내려가면 

xlCenter 엑셀 상수에 대한 값은 -4108임

Const xlCenter = -4108이라고 표시됩니다.

엑셀 상수, xlCenter의 값은 -4108임

 

다. 글자 굵게 여부 판단

엑셀로 돌아가서 수량과 금액을 굵게 표시한 후

글자 굵게 설정

 

VBE로 돌아와서

직접 실행창에서 Ctrl + A키를 누른 후 Delete키를 눌러 기존 실행 내용을 지웁니다.

 

그리고, ?range("c2").Font.Bo까지 입력하면 Bold가 선택되므로 엔터키를 누르면

bold 속성 알아내기

 

True가 반환됩니다.

Bold 속성이 True임

 

이제 조건에 따른 병합 등 코드를 작성할 준비는 모두 되었습니다.

구체적인 코드는 다음 편에서 다시 다루도록 하겠습니다.

반응형