4

Я получил сообщение об ошибке "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, и сделать это путем кэширования данных, возможно, на 10000 строк. Но это не решит мою проблему, если "обновить" сводную таблицу будет отображать ту же ошибку.

6 ответов6

3

Причиной, вероятно, является различие в 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 PC сталкивается с этой проблемой, а не чем 2G RAM ПК. Я думаю, это потому, что на ПК 6G есть много надстроек Excel, которые также потребляют оперативную память.

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

1

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

1

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

1

Похоже, вы создаете очень большие листы Excel. 32-разрядные приложения могут использовать только до 2 ГБ ОЗУ, если только они не могут быть настроены на использование до 3,2 ГБ с помощью специального "переключателя". Так что в 32-битном Excel фактически не хватает памяти после 2 ГБ.

Так что не имеет значения, если у вас есть 16 или 32 ГБ ОЗУ. Вам нужен 64-битный MS Office, чтобы он мог свободно использовать ОЗУ объемом более 2 ГБ. Только тогда ваша дополнительная память объемом 6 ГБ будет действительно полезна для Excel. В противном случае он столкнется с необходимостью выяснить, как работать только с 2 ГБ ОЗУ, и, скорее всего, начнет использовать файл подкачки на жестком диске.

Одной из возможностей будет увеличение размера файла подкачки Windows. Я никогда не позволяю Windows управлять файлом подкачки. Я установил его в 1,5X физической памяти и установил минимальный и максимальный размер файла подкачки. Это предотвращает фрагментацию оперативной памяти. Поэтому, если у вас 4 ГБ ОЗУ, установите значение 6144/6144 МБ мин / макс.

0

Одна из возможных причин, по которой у него могут заканчиваться ресурсы на машине с 6 ГБ, а не на машине с 2 ГБ, заключается в том, что сама Windows требует больше ресурсов для управления 6 ГБ памяти, чем для 2 ГБ памяти.

Это была известная проблема в 32-битной Windows (и еще большая проблема в 16-битной Windows). Это должно быть решено на 64-битных системах, но ...

В любом случае, можно проверить: отключите дополнительную оперативную память и посмотрите, исчезнет ли проблема.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .