VBA 코드로 시트에서 행과 열에 연속된 데이터가 몇 개가 있는지 측정해 보겠습니다. 빈칸이 있는 곳까지 개수를 세게 됩니다. 이것이 중요한 이유는 시트에 데이터가 몇 개인지 알아야 반복문을 돌릴 수 있기 때문입니다. 이 방법을 알고 있으면 데이터가 늘어나더라도 소스는 변경할 필요가 없습니다. 출력값은 가로와 세로의 데이터 개수입니다.
▼ 첫 번째는 행의 개수를 알아내는 것입니다. Cells() 함수로 제일 하단 셀 번호를 지정합니다. 행의 끝 번호를 정확하게 지정하기 힘들지만 Rows.Count 로 알아 올 수 있습니다. 그리고 End() 함수로 아래에서 위로 훍어오는 것이죠. 그 상수값이 xlUp 입니다. 만약 위에서 아래로 내려간다면 xlDown 이 되겠죠. 아래 샘플 소스를 실행한 결과는 사용한 행의 개수를 알려 주고 있습니다.
Sub colrownum()
Dim lastRow As Long
lastRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
MsgBox "1번행의 개수: " & lastRowEnd Sub
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 Excel VBA 개발을 위한 개발 도구 탭 추가하기 ▶ 엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기 ▶ 엑셀 VBA 개발할 때 로그 출력하는 방법 ▶ 엑셀 VBA GoTo 문 이용해서 줄로 분기하기 |
▼ 다음은 열의 개수를 알아보겠습니다. 행과 반대로 Cells() 함수에서 셀을 지정할 때 열 번호에 해당하는 인수로 Columns.Count 를 넘깁니다. 그럼 열의 오른쪽 끝지점 부터 왼쪽으로 오면서 개수를 세면 되겠죠. 그렇게 진행할 수 있도록 End() 함수의 인자로 xlToLeft 를 입력합니다. 반대는 xlToRight 입니다.
Sub colrownum2()
Dim lastColumn As Long
lastColumn = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column
MsgBox "1번열의 개수 : " & lastColumnEnd Sub
▼ 다음은 End() 함수와 상수값을 조합해서 알아오는 것이 아니라 Rows.Count 와 Columns.Count 로 셀에서 사용하고 있는 영역의 수를 알아 오는 방법입니다. 그런데 위에서 사용한 Rows.Count 와 어떻게 다를까요? 위에서 사용한 Rows.Count 는 셀에서 열이 허용하는 전체 개수를 가져옵니다. 아마 16,000 이 넘을 겁니다. 그런데 아래에 쓰인 Rows.Count 는 사용한 영역 개수인 7개만 가져올 옵니다. 그 차이는 UsedRange 때문입니다. 현재 사용한 셀의 영역을 리턴하는 함수입니다. 아래 샘플 그림에서 예를 들자면 UsedRange 는 A1:H7 을 영역 객체를 가져옵니다. 이 안에서 Rows.Count 를 측정하기 때문에 당연히 7 이 리턴되겠죠. 열을 나타내는 Rows.Count 도 마찬가지 입니다.
Sub colrownum3()
With Sheet1.UsedRange
MsgBox .Rows.Count & " rows and " & .Columns.Count & " columns"
End With
End Sub
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 Excel VBA 개발을 위한 개발 도구 탭 추가하기 ▶ 엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기 ▶ 엑셀 VBA 개발할 때 로그 출력하는 방법 ▶ 엑셀 VBA GoTo 문 이용해서 줄로 분기하기 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 날짜 데이터를 비교하거나 연산하기 (0) | 2023.06.27 |
---|---|
엑셀 VBA 변수 범위 종류와 설정 방법 (1) | 2023.06.23 |
엑셀 VBA 정규식으로 한글, 일어, 한자 추출하기 (3) | 2023.06.22 |
엑셀 VBA Cells 속성의 다양한 사용법 (0) | 2023.06.22 |
엑셀 VBA 셀에서 연속된 데이터 한 번에 선택 CurrentRegion, UsedRange 사용 (0) | 2023.06.21 |
엑셀 VBA 나머지를 구하기 위한 Mod 연산자와 몫 구하는 연산자 사용법 (0) | 2023.06.21 |
엑셀 VBA 함수 실행 중에 오류 처리하는 구문 On Error GoTo 사용하기 (0) | 2023.06.11 |
엑셀 VBA 반환한 배열 데이터 셀에 표현하기 (0) | 2023.06.10 |