Excel исчерпал ресурсы при попытке вычислить одну или несколько формул

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 строк данных.

Мои вопросы:

  1. Почему это работает на компьютере с меньшим объемом памяти, но не работает на компьютере с большим объемом памяти? (главный вопрос)
  2. Что можно сделать, чтобы уменьшить объем памяти, используемой Excel? (дополнительный вопрос) (кроме удаления данных)

Любая помощь будет оценена по достоинству, пожалуйста, укажите мне правильное направление или просто дайте подсказку.

РЕДАКТИРОВАТЬ:Я думаю удалить формулы и перенести логику в vba, и сделать это кэшированием данных, может быть, по 10 000 строк. Но это не решит мою проблему, если "обновить" сводную таблицу будет показывать ту же ошибку.

решение1

Причина, вероятно, в разной 32-битной фрагментации памяти на 2 ПК (часто бывает сложно использовать все теоретически доступные 2 ГБ).
Вы можете уменьшить объем памяти, используемой сводной таблицей, уменьшив количество столбцов и/или уменьшив объем памяти, требуемый для некоторых столбцов (текстовые строки являются хорошим кандидатом).
(Вы можете измерить объем памяти, используемый кэшем сводной таблицы, с помощью VBA PivotCache.memoryUsed)
Я предполагаю, что вы создаете кэш сводной таблицы, считывая данные из запроса непосредственно в кэш сводной таблицы, а не помещая данные запроса на рабочий лист и основывая сводную таблицу на рабочем листе, что использовало бы гораздо больше памяти.
Вы не говорите, что такое >1000000 формул, поэтому у меня нет никаких предложений по их улучшению.
Если вы хотите использовать большие объемы данных в сводных таблицах Excel и т. д., вы получите лучшие результаты с 64-битной версией Excel 2010, которая не имеет ограничения в 2 ГБ

решение2

спасибо за все предложения, чтения и помощь. Я решил проблему

  1. Пошагово замените все формулы на значения для ~ 100 000 строк --- Это сократит объем памяти, занимаемой Excel, на 10%
  2. Удалены все ненужные данные/рабочие листы в рабочей книге (необработанные данные до обработки данных) --- Это уменьшило объем памяти, занимаемой Excel, на 40%.

И чтениеhttp://www.add-ins.com/support/out-of-memory-or-not-enough-resource-problem-with-microsoft-excel.htmпредположите, почему ПК с 6G RAM сталкиваются с этой проблемой, а не ПК с 2G RAM. Я думаю, это потому, что на ПК с 6G установлено много надстроек Excel, которые также потребляют RAM.

Спасибо за помощь.

решение3

старый вопрос, но все еще актуальный для всех версий, я сталкиваюсь с похожими проблемами, когда используемые мной формулы имели слишком большую область действия, хотя большинство полей были пустыми, например: DO_CALCULATION(D1:D100000) займет значительное количество времени и памяти, даже если только ячейки D1:D10 имеют какое-либо значение. Так что будьте осторожны, пытаясь сделать формулы готовыми к расширению данных, сохраняйте небольшие диапазоны :)

решение4

Ответ — обновить Excel до 64-битной версии. Она может работать с гораздо большим диапазоном памяти, а также в целом работает намного быстрее и является правильным инструментом для работы, если у вас большая электронная таблица.

Связанный контент