Daily Life of BlueRose

컴퓨터 & 코딩 공부/컴퓨터 트러블슈팅

엑셀파일 크기 줄이기 / 엑셀파일이 너무 느릴 때 대처방안

푸른로즈 2024. 4. 13. 03:41
728x90

여는 글

엑셀파일은 본래 완성된 보고서나 문서의 형태로 저장하기 보다는 각종 수치들을 입력하고, 이에 대한 각종 합계, 평균 등을 내는 데 사용되는 파일입니다.

 

그러나 우리의 회사생활은 그렇게 호락호락하지 않기에, 엑셀 문서에 각종 이미지를 넣고, 사업 결과보고서를 작성하는 등 각종 문서들을 만들게 되는 상황이 종종 펼쳐지게 됩니다. 이때 가장 먼저 맞닥뜨리는 문제는, 각종 이미지의 삽입으로 인하여 엑셀 문서의 크기가 이메일 첨부 제한 크기를 넘기거나, 엑셀파일이 매우 느려지는 문제가 발생하는 경우인데요. 이런 경우에는 어떻게 해결하는지 알아보고자 합니다.

 

다른 사이트에도 엑셀파일의 크기를 줄이는 여러 방법들이 소개되어있지만 개인적으로는 효과를 못보았는데, 우연찮게 매크로를 사용하다가 용량을 대폭 줄이는 방법을 알게 되었습니다(해결방법 2번을 의미). 분명 엑셀자체에도 이 기능을 활용할 수 있는 버튼이 있을것 같은데, 아직까지는 버튼을 못찾겠네요. 


혹시라도 여태까지 해결하지 못한 용량문제를 갖고 있으신 분이 있다면, 해결방법 2번을 꼭 시도해 보시기 바랍니다.

 

 

주로 발생하는 상황

  • 파일의 너무 커서 각종 시스템에 첨부가 불가능한 수준이다.(파일 하나당 10mb 이상 넘어가는 경우가 수두룩함)
  • 파일이 느려서 사용하기 어려워진다. 뭔가 입력만 하고 나면 매번 딜레이가 발생해서 도저히 일을 할 수 없다.
  • 저장시마다 딜레이가 발생한다. 자동 저장시마다 엑셀이 멈칫해서 자동저장 끄는 방법을 찾고 다니게 된다.

 

 

왜 이런문제가 발생하는가?

개인적인 경험에 비춰보았을 때, 느려지는 주요 원인은 아래 4가지 정도로 보입니다.

  1. 이미지 파일이 많거나, 삽입된 이미지의 용량이 클 때
    • 첨부된 그림파일이 너무 많거나, 압축되지 않았음을 의미
    • 엑셀파일을 본연의 목적이 아닌 각종 온갖 보고서용(...)으로 사용하는 경우에 자주 발생하는 편입니다.
  2. 비어 있는 줄에 데이터가 있는 걸로 인식될 때(스크롤이 늘어지는 경우)
    • 엑셀은 기본적으로 데이터가 없는 공간은 빈 공간으로 인식하는데, 데이터의 삽입 및 삭제시 오류가 발생하여 비어있는 줄 임에도 데이터가 있는 것으로 인식되는 상황임
    • 주로 '매일 반복 사용하는 시트', 전날 만들어둔 시트를 복사하여 오늘자 날짜로 갱신하여 사용하는 경우에 발생합니다.
  3. 조건부서식이 여러개로 파편화 되어 있을 때
    • 조건부 서식을 걸어둔 셀을 복사-붙여넣기 한 경우에 발생합니다. 
  4. 배열수식이나 각종 타 시트 참조 수식이 너무 많이 얽혀있을 때
    • 엑셀을 지나치게 많은 데이터의 관리용으로 사용한 경우에 해당합니다.
    • 이건 해당 엑셀 파일을 자체의 문제라 해결방법이 없습니다.

 사진이 많거나(좌) / 데이터로 인식되는 빈 공간 생겨있거나(스크롤바가 늘어짐)(중) /  조건부서식이 파편화 되어 있다면(우) 느려진다

 

 

해결방법

해결방법 1 - 이미지 압축하기 (이미지가 많은 경우 1순위로 수행할 것)

이미지 압축하는 방법

 

이미지 압축방법은 압축할 이미지 혹은 아무 이미지 클릭 - 서식 - 그림압축 - 압축옵션 적용 - 해상도 설정 - 확인 순으로 처리하면 됩니다.

  • 압축옵션에서 '이 그림에만 적용' 여부는 이 그림만 적용 할 것인지 아니면 전체 이미지에 일괄 적용할 건지를 의미합니다. 엑셀에 있는 이미지를 굳이 꺼내서 사용하는 경우는 거의 없으므로,  보관을 위한 특별히 이유가 있는게 아니라면 '이 그림에만 적용'은 '체크해제'하시길 권장합니다.
  • 잘려진 그림 영역 삭제는 엑셀 내에서 편집한 이미지가 있는 경우, 해당 이미지의 잘린 부분을 영구적으로 삭제하는 걸 말합니다. 위와 마찬가지의 이유로 이 항목은 가급적 '체크'해주시길 권장합니다.
728x90

 

 

해결방법 2 - 텅 빈 공간들 삭제하기 (효과가 매우 크지만, 방법이 까다로움)

문제상황 - S열, 30행밖에 사용하지 않는 시트 1개짜리 파일인데 용량이 10mb이다

 

텅 빈 공간이 존재하는지 여부는 시트에 보이는 가장 마지막 글짜의 위치로 이동했을 때, 행/열의 스크롤바가 지나치게 많이 남는지 여부를 통해 알 수 있습니다. 위 사진처럼 한 눈에 시트가 보이는데도 불구하고 스크롤이 한참 남아있다면, 비어있는 셀을 데이터로 인식하고 있다는 의미이죠.

 

엑셀이 실제로 인식중인 가장 마지막 셀을 알아보려면 Ctrl + End 키를 눌러보면 됩니다. 위 엑셀 파일의 경우에는 Y1048533 셀로 이동되네요. 즉, 30 ~ 1048533행이 용량만 차지하는 데이터인 셈입니다.

 

이 경우 아래와 같이 조치하시기 바랍니다.

  1. 실제 사용하는 가장 마지막 데이터의 외곽 행을 모두 선택하여 삭제한다. (다소 시간이 좀 소요될 수 있음)
    (가장 마지막 행 혹은 열 1줄을 선택 후, Ctrl + Shift + 커서키(열의경우 아래(↓), 행의 경우 우측(→))을 눌러 선택한 뒤 우클릭 - 삭제)
  2. 시트명 우클릭 - 코드보기 선택
  3. 하단에 직접 실행 창에 Activesheet.UsedRange.Select 입력 후 엔터
    (직접 실행창이 안보이면 Ctrl + G를 눌러서 직접 실행창을 켜주세요.)

불필요한 행 전체 선택 후 삭제 - 코드보기 - 직접실행창에 코드입력 순으로 처리한다

 

 

코드를 입력한 후 스크롤을 다시 확인해보면, 아래 스크린샷처럼 문서의 마지막 부분에 맞춰 스크롤도 끝나고 스크롤 자체의 크기도 적당한 크기로 정상화 되어 있음을 알 수 있습니다. 이 상태에서 저장 후 파일정보를 확인해보면 용량이 대폭 감소한 모습을 볼 수 있습니다. (참고로 이건 문제가 있는 시트마다 각각 해주셔야 합니다.)

 

스크롤의 크기와 위치가 정상화 되었는지 확인하여, 정상 처리여부를 확인할 수 있다

 

 

해결방법 3 - 조건부서식 정리하기

(당연한 이야기지만) 조건부 서식이 파편화 된 경우 해결방법의 핵심은 '각 조건부 서식의 원본 1개만 남기고 모두 삭제' 입니다.

 

이를 위해서는 기존의 조건부 서식이 어떤 원리로, 어느 정도의 범위에 적용되었는지를 아셔야합니다.  때문에 다른 사람이 만들어둔 서식이라면, 서식의 원리부터 파악해야하니 복잡해질 수 있겠죠.

 

다만 일단 원리를 파악한 이후에는 중복되는 항목들을 모두 제거한 후, 남은 하나의 수식만 수정해주면 됩니다.

얼핏, 내부의 수식까지 수정해야하는 것은 아닐지 걱정하실 수 있지만 조건부서식 첫 화면에서 적용 범위를 수정하면 내부에 있는 수식도 알아서 수정됩니다.

 

수정전(좌) / 중복 항목 삭제 후 적용대상 수정과정(중) / 수정완료(우)

 

 

해결방법 4 - 파일형식 변경해보기 (호환성 문제로 인해 비추천)

기존의 Excel 통합문서 (.xlsx) 형식 대신 Excel 바이너리 통합 문서 (.xlsb)로 저장하면 파일 용량을 줄일 수 있습니다. 바이너리 형식으로 저장되기 때문에 일반적인 엑셀파일보다 더 작고, 더 빠른 로딩 속도를 제공합니다. 

 

그러나, 왜 굳이 이러한 내막을 모르는 사람들에게는 왜 xlsb라는 확장자를 사용했는지에 대하여 의문을 갖게 만들고, 회사 생활에서 '굳이 유난스러운 파일 형식을 사용하는 사람'으로 비춰질 수 있겠죠....

 

아울러, 여전히 자주 사용되는 xls확장자와 달리, xlsb는 특정한 목적을 갖고 사용하지 않는 이상은 잘 사용하는 파일이 아니다보니 각종 사이트나 프로그램에서 기본적으로 지원하는 확장자가 아닙니다.

말이 어렵죠? 쉽게 생각하면 몇몇 사이트나 프로그램에서 업로드가 불가능할 수 있다는 의미입니다.

 

그렇다고 엑셀파일의 크기를 드라마틱하게 줄어드는가.... 하는 부분에서는 다소 회의적입니다. 상기 해결방법1, 2에 해당하는 문제가 해결되지 않았다면 어차피 xlsb 파일로 저장해도 용량이 클테니까요. 이는 마치 내용물을 정리하지 않은 채 포장지만 타이트한 것으로 바꾸는 것과 다를바가 없습니다.

 

 

 

반응형