Microsoft Excel에서 작업 중 다음과 같이 리소스 부족이란 메시지가 뜨고 반응이 느려질 때가 있다.
엑셀은 과거 65,536×256 행/열을 다룰 수 있었다. 그런데 2007버전에서는 다룰 수 있는 셀의 영역이 대폭 확대 되어 1,048,576×16,384 행/열을 다룰 수 있게 되었다.
일반적으로 쓰는데는 과거의 범위도 충분하다. 일부 파워유저라면 그 데이터량이 방대해서 대규모의 영역이 필요하겠지만 일반적인 사용에선 그것을 전체 활용할 일이 드문 것이다. 뭐, 여기서 끝났다면 내가 이런 글을 쓸 이유가 없을 것이다. 하지만, 시트간 복사, 셀의 복사 등을 하면서 점점 엑셀 파일의 용량이 기하급수적으로 불기 시작하고 위와 같은 터무니 없는 메시지를 접하게 되니 문제인 것이다.
네이버 즐 등에서 검색하면 대부분 가상 메모리를 확보하라고 답을 해준다. 하지만, 정답이 아니다. 그래도 계속 문제가 되니까. 그럼 어떻게 해야할까?
우선 원인부터 살펴보자.
이런 메시지가 나오는 이유는 간단하다. 행이나 열을 전체로 블럭잡아 복사해서 다른데 붙일 경우, 데이터가 써있는 곳 외의 빈 공간도 모두 용량을 잡아먹도록 특성이 바뀐다. 그러니 그 어마어마한 양의 셀이 모두 용량을 잡아먹는 것으로 처리되고.. 엑셀은 그 것을 처리 못해 바보가 되어버린다. (MS가 바보인 거다. 사용자의 습성을 파악하고 저런 식으로 데이터를 카피할 때 빈 공간은 그 속성이 그대로 유지되어 용량을 차지하지 않도록 프로그램했어야 한다.)
일단 2007을 쓰면서 위와 같은 메시지를 만났다면 영역이 65,536×256을 넘지 않는 데이터의 경우 일단 “다른 이름으로 저장“하기를 선택 한 뒤 “Excel 97-2003 통합 문서 (*.xls)“로 저장해 준다. 이 것으로도 용량은 대폭 줄어 있을 것이다.
다음 단계는 데이터의 끝으로 가서 그 뒤를 전부 블럭잡아 “삭제“한다.
(세로로 블럭잡아 붙인 경우는 위의 그림처럼 붉은 부분을 블럭잡는다. 데이터 끝행-65536행까지. 만약 가로로 길게 데이터를 붙였다면 데이터 끝열-256열까지 블럭잡아 삭제하면 된다.)
그리고 저장해보자.
… 아마도 초기 데이터에서 1/10이상으로 줄어든 용량의 파일이 반기고 있을 것이다.
물론 위의 에러 메시지도 더이상 만날 수 없을 것이다.
(이전 포맷으로 안 바꾸고 뒷쪽 데이터를 날리는 방법도 있겠지만, 수작업일 땐 아무래도 영역이 작은 쪽이 선택해서 날리기 편하다. VBA 매크로를 쓴다면 어느쪽이건 상관없겠지.)
이후 필요하다면 2007 전용 포맷으로 바꿔도 용량은 더 줄거나 차이없게 될 것이다.
완전 고맙습니다…ㅜㅜ 덕분에 집에 갈수 있게 되었어요
내가 인터넷에서 수없이 찾아본것 대답중 가장 낳은것 같네요,,감사합니다.
정말 고마워요 본 글중에 정말 좋은글임
최고입니다 블럭잡아 삭제만 해도 잘되요! 작성자님 쵝오