"Excel에서 하나 이상의 수식을 계산하는 동안 리소스가 부족합니다."라는 오류 메시지를 받았습니다.하나내 컴퓨터 중 (2개 중).
내 워크시트에 다음이 포함되어 있습니다. (통합 문서가 아닌 단일 워크시트 내부에 다른 워크시트에 수식이 있습니다.)
1,000,000개의 수식
- 900,000행의 데이터를 기반으로 한 피벗 테이블
"시트 계산" 작업(현재 워크시트만 해당)에서 excel/vba를 실행하면 프로그램에서 다음 오류 메시지가 표시됩니다.
Excel ran out of resources while attempting to calculate one or more formulas
(Excel 또는 VBA)에서 피벗 테이블을 "새로 고침"하거나 (Excel 또는 VBA)에서 "시트 계산"을 "새로 고침"하지 않습니다.
컴퓨터가 2대 있습니다.
둘 다 64비트 Windows 7을 실행하고 있으며,
둘 다 Excel 2007 32Bit를 실행하고 있으며,
Windows를 시작하자마자 Excel을 실행했는데,
2GB RAM을 갖춘 개발 PC는 문제 없이 실행될 수 있습니다.
6GB RAM을 사용하는 다른 PC에
ran out of resources
오류 메시지가 표시됨동일한 데이터 세트, 동일한 Excel 파일에서 실행
또한 내 개발 PC에서는 "새로 고침"/"계산" 작업을 클릭하기 전에 약 1.2G RAM을 사용하고 있고 작동하지 않는 PC에서는 900M RAM을 사용하고 있음을 확인했습니다.
편집하다
작동하지 않는 컴퓨터는 100,000행의 데이터 내에서 데이터를 처리할 수 있습니다.
내 질문:
- 메모리가 적은 컴퓨터에서는 작동하지만 메모리가 많은 컴퓨터에서는 작동하지 않는 이유는 무엇입니까? (주요 질문)
- Excel에서 사용하는 메모리를 줄이려면 어떻게 해야 하나요? (하위 질문) (데이터 삭제 외)
도움을 주시면 감사하겠습니다. 올바른 방향을 알려 주시거나 간단히 힌트를 주십시오.
편집하다:수식을 제거하고 논리를 vba로 옮기고 10,000행당 데이터를 캐시하여 수행할 생각입니다. 그러나 "새로 고침" 피벗 테이블에 동일한 오류가 표시되면 문제가 해결되지 않습니다.
답변1
그 이유는 아마도 2개의 PC에서 32비트 메모리 조각화가 다르기 때문일 것입니다(이론적으로 사용 가능한 2GB를 모두 사용하기 어려운 경우가 많습니다).
열 수를 줄이거나 일부 열에 필요한 메모리를 줄이면 피벗 테이블에서 사용하는 메모리 양을 줄일 수 있습니다(텍스트 문자열이 적합함).
(VBA PivotCache.memoryUsed를 사용하여 피벗 캐시에서 사용하는 메모리 양을 측정할 수 있습니다.)
쿼리 데이터를 워크시트에 배치하는 대신 쿼리의 데이터를 피벗 캐시로 직접 읽어 피벗 캐시를 생성한다고 가정합니다. 훨씬 더 많은 메모리를 사용하는 워크시트의 피벗입니다.
1000000개 이상의 공식이 무엇인지 말하지 않으셨기 때문에 개선을 위한 제안이 없습니다.
Excel 피벗 등에서 많은 양의 데이터를 사용하려는 경우 2GB 제한이 없는 64비트 버전의 Excel 2010에서 더 나은 결과를 얻을 수 있습니다.
답변2
모든 제안, 독서 및 도움에 감사드립니다. 나는 문제를 해결했습니다.
- 모든 수식을 ~ 100,000행당 단계별로 값으로 변경합니다. --- 이로 인해 Excel이 보유하는 메모리가 10% 감소합니다.
- 통합 문서에서 불필요한 데이터/워크시트를 제거했습니다(데이터 마사지 전 원시 데이터) --- 이로 인해 Excel에서 보유하는 메모리가 40% 감소합니다.
그리고 독서는http://www.add-ins.com/support/out-of-memory-or-not-enough-resource-problem-with-microsoft-excel.htm2G RAM PC가 아닌 6G RAM PC가 이 문제에 직면한 이유를 제안합니다. 6G PC에는 RAM을 소모하는 엑셀 추가 기능도 많기 때문인 것 같습니다.
도움을 주셔서 감사합니다.
답변3
오래된 질문이지만 여전히 모든 버전에 유효합니다. 대부분의 필드가 비어 있음에도 불구하고 내가 사용한 수식의 범위가 너무 크면 비슷한 문제가 발생합니다. 예: DO_CALCULATION(D1:D100000)은 심지어 상당한 양의 시간과 메모리를 차지합니다. D1:D10 셀에만 값이 있는 경우 따라서 데이터 확장을 위해 수식을 준비할 때 주의하고 범위를 작게 유지하세요. :)
답변4
대답은 64비트 버전의 Excel로 업그레이드하는 것입니다. 훨씬 더 큰 메모리 범위를 처리할 수 있으며 일반적으로 훨씬 더 빠르며 큰 스프레드시트가 있는 경우 작업에 적합한 도구입니다.