В Excel не хватило ресурсов при попытке вычислить одну или несколько формул
Я получил сообщение об ошибке "В 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,
Я запускаю Excel сразу после запуска Windows,
мой компьютер с 2 ГБ оперативной памяти может работать без проблем,
другой компьютер с 6 ГБ оперативной памяти показал
ran out of resources
сообщение об ошибкеЗапуск на том же наборе данных, в том же файле Excel
Я также заметил, что на моем ПК для разработки используется ~ 1,2 ГБ ОЗУ, а на нерабочем ПК - 900 МБ до нажатия кнопки "Обновить" / "Рассчитать".
РЕДАКТИРОВАТЬ
Неработающий компьютер может обрабатывать данные в пределах 100 000 строк данных
Мои вопросы:
- Почему он работает на компьютере с меньшим объемом памяти, а не на компьютере с большим объемом памяти? (основной вопрос)
- Что я могу сделать, чтобы уменьшить объем памяти, используемой Excel? (подвопрос) (кроме удаления данных)
Любая помощь приветствуется, пожалуйста, укажите мне правильное направление или просто дайте подсказку.
РЕДАКТИРОВАТЬ: я думаю об удалении формул и переместить логику в VBA, и сделать это путем кэширования данных, возможно, на 10000 строк. Но это не решит мою проблему, если "обновить" сводную таблицу будет отображать ту же ошибку.
6 ответов
Спасибо за все предложения, чтения и помощь. Я решил проблему путем
- Измените все формулы на значения пошагово для ~ 100 000 строк --- Это уменьшает объем памяти, удерживаемой Excel на 10%
- Удалены все ненужные данные / рабочие таблицы из рабочей книги (необработанные данные до массирования данных). Это позволяет сократить объем памяти, удерживаемой Excel, на 40%.
И чтение http://www.add-ins.com/support/out-of-memory-or-not-enough-resource-problem-with-microsoft-excel.htm позволяет предположить, почему 6G RAM PC сталкивается с этой проблемой, а не чем 2G RAM ПК. Я думаю, это потому, что на ПК 6G есть много надстроек Excel, которые также потребляют оперативную память.
Спасибо за помощь.
Причиной, вероятно, является различие в 32-битной фрагментации памяти на 2 ПК (часто трудно использовать все теоретически доступные 2 ГБ).
Вы можете уменьшить объем памяти, используемой сводной таблицей, уменьшив количество столбцов и / или уменьшив объем памяти, необходимый для некоторых столбцов (текстовые строки являются хорошим кандидатом).
(Вы можете измерить объем памяти, используемый сводным кешем с помощью VBA PivotCache.memoryUsed)
Я предполагаю, что вы создаете сводный кеш, считывая данные из запроса непосредственно в сводный кеш, вместо того, чтобы помещать данные запроса на лист и базировать сводку на листе, который бы занимал гораздо больше памяти.
Вы не говорите, что такое формулы>1000000, поэтому у меня нет предложений по их улучшению.
Если вы хотите использовать большие объемы данных в сводных таблицах Excel и т. Д., Вы получите лучшие результаты в 64-разрядной версии Excel 2010, для которой не установлено ограничение в 2 ГБ.
Похоже, вы создаете очень большие листы Excel. 32-разрядные приложения могут использовать только до 2 ГБ ОЗУ, если только они не могут быть настроены на использование до 3,2 ГБ с помощью специального "переключателя". Так что в 32-битном Excel фактически не хватает памяти после 2 ГБ.
Так что не имеет значения, если у вас есть 16 или 32 ГБ ОЗУ. Вам нужен 64-битный MS Office, чтобы он мог свободно использовать ОЗУ объемом более 2 ГБ. Только тогда ваша дополнительная память объемом 6 ГБ будет действительно полезна для Excel. В противном случае он столкнется с необходимостью выяснить, как работать только с 2 ГБ ОЗУ, и, скорее всего, начнет использовать файл подкачки на жестком диске.
Одной из возможностей будет увеличение размера файла подкачки Windows. Я никогда не позволяю Windows управлять файлом подкачки. Я установил 1.5X физической памяти и установил минимальный и максимальный размер файла подкачки. Это предотвращает фрагментацию оперативной памяти. Поэтому, если у вас 4 ГБ ОЗУ, установите значение 6144 / 6144 МБ мин / макс.
Ответ заключается в обновлении до 64-разрядной версии Excel. Он может охватывать гораздо больший диапазон памяти, а также, как правило, намного быстрее и является подходящим инструментом для работы, если у вас большая таблица.
Старый квест, но все еще действительный для всех версий, я сталкиваюсь с подобными проблемами, когда используемые формулы имели слишком большую область действия, даже если большинство полей были пустыми, например: DO_CALCULATION(D1:D100000) будет занимать значительное количество времени и даже памяти если только ячейки D1: D10 имеют какое-либо значение. Поэтому будьте осторожны, пытаясь подготовить формулы для расширения данных, сохраняйте небольшие диапазоны:)
Одна из возможных причин, по которой у него могут заканчиваться ресурсы на машине 6 ГБ, а не на машине 2 ГБ, заключается в том, что сама Windows требует больше ресурсов для управления 6 ГБ памяти, чем для 2 ГБ памяти.
Это была известная проблема в 32-битной Windows (и еще большая проблема в 16-битной Windows). Это должно быть решено на 64-битных системах, но...
В любом случае, можно проверить: отключите дополнительную оперативную память и посмотрите, исчезнет ли проблема.