|
- 엑셀 버전(95,97,2000,xp,2003,2007): 2013
#1 UsedRange를 활용하여 동적인 범위를 추출할 때 거품이 끼는 이유
일단 UsedRange는 말 그대로 사용한 셀을 모두 참조합니다.
셀에 값이 들어있지 않더라도 서식이 들어 있거나(셀 배경 색깔 같은)
심지어는 어떤 값도 넣지 않고 셀서식을 "일반"에서 "통화"로 바꾸기만
해도 UsedRange로 인식해버립니다.
이외에도 셀 값을 삭제하였으나 워크북을 저장하지 않은 경우에도
변경 전의 데이터를 인식하여 UsedRange로 인식합니다.
#2 동적으로 UsingRange 참조
UsedRange가 아닌 어떤 값이 들어 있는 영역을 참조하기 위해서 다음과
같은 코드를 사용합니다.
Sub usingRng()
Dim firstRow As Long
Dim firstCol As Long
Dim lastRow As Long
Dim lastCol As Long
firstRow = Cells.Find(what:="*", searchorder:=xlByRows, searchdirection:=xlNext).Row
firstCol = Cells.Find(what:="*", searchorder:=xlByColumns, searchdirection:=xlNext).Column
lastRow = Cells.Find(what:="*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
lastCol = Cells.Find(what:="*", searchorder:=xlByColumns, searchdirection:=xlPrevious).Column
Range(Cells(firstRow, firstCol), Cells(lastRow, lastCol)).Select
End Sub
언뜻 보기에도 상당히 번거로운 코드입니다.
firstRow와 firstCol이 정해져 있다면,
예컨대 "A1" 셀로 이미 한정되어 있다면
코드를 2줄 정도로 줄일 수 있겠습니다만,
그럼에도 불구하고
UsedRange의 범용성을 따라가기엔 무리가 있어 보입니다. |
|