-1

Этим утром я возился с различными итерациями IF(COUNTIF()) в одном столбце для 16 000 строк. Я испытал, насколько медленной может быть функция COUNTIF() , поэтому я не удивился, увидев, что она зависла в Excel.

Я очень расстроился, когда каждый раз, когда я изменял эту формулу для всего столбца, она всегда зависала в Excel. Я бы открыл диспетчер задач, завершил задачу, выбрал "Перезапустить программу". Я заметил, что каждый раз, когда я перезапускал Excel, ячейки повторно открытого документа отражали формальные изменения, которые я пытался осуществить.

Поэтому, когда я пытаюсь применить новую функцию IF(COUNTIF()) к этим 16 000 ячеек, она всегда будет зависать на неопределенное время, не имея возможности выполнить изменение. Но каждый раз, когда я перезагружал Excel через диспетчер задач, он отражал изменения.

Я думаю, что способность Excel обрабатывать набор вычислений будет бинарным вариантом: он может или не может выполнить задачу с доступными ресурсами. Почему это возможно только при перезапуске?

1 ответ1

0

Что занимает так много времени, так это расчет, а не хранение ваших изменений. Когда вы убиваете Excel и запускаете снова, вы получаете старые (теперь неправильные) значения и новую формулу. Вы в основном убиваете пересчет. Это займет так много времени в следующий раз ...

Учтите, что ваш COUNTIF должен пройти через много ячеек, возможно, те же самые 16000 (я не знаю, что у вас там); эта формула скопирована 16000 раз. Это означает, что нужно сделать 256 миллионов циклов цикла. Для каждого из них, сравнение, которое вы имеете внутри COUNTIF, должно быть интерпретировано и оценено.

Я думаю, что во второй раз он будет работать немного быстрее (после того, как он завершится один раз), потому что Excel внутренне помнит, что все ваши формулы имели одинаковый синтаксис, и поэтому не нужно их интерпретировать снова. Тем не менее, расчет придется повторить 256 миллионов раз.

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