Добавление и удаление строк в Excel 2010 выполняется очень медленно, но вычисления — нет

#excel #performance

#excel #Производительность

Вопрос:

Помогите!

У меня есть рабочая книга 2010 .xslx объемом 8 МБ (без макросов), которая выполняет полный расчет примерно за 2 секунды. Это всего 2 листа, каждый из которых содержит менее 1500 строк. Однако в нем 100 и 200 столбцов. Для вставки или удаления строки требуется более 20 секунд (и намного дольше, когда я удаляю группу строк).

В рабочей книге содержится достаточное количество вычислений, в основном состоящих из формул индексации / сопоставления. Я предпринял процесс, чтобы упростить этот процесс, только вычисляя совпадения (по большей части) в верхней и левой части листа. Например, все F7: DV7 будут указывать только на 2 строки на листе 2, поэтому сопоставление () выполняется только один раз в столбцах C и D.

Я понимаю, что индекс / совпадение сложнее, чем простое a b, и что excel любит строки больше, чем столбцы, но этот файл совсем не такой большой, и кажется, что он должен быть в состоянии справиться с этим. И тот факт, что вычисления выполняются нормально, просто когда я добавляю / удаляю строки, это так медленно, что я сбит с толку.

Комментарии:

1. Спасибо за ответ pnuts. Я хотел ответить на эти вопросы. Да, я пробовал без вычислений, и, похоже, это не помогло. Но, похоже, вычисления не работают. Условное форматирование — отсутствует. Хотя у меня есть некоторое базовое число и некоторое цветовое форматирование. Переход — это то же самое, что и конец управления? Чтобы узнать, есть ли дополнительные столбцы / строки? Это происходит там, где я ожидал. Один лист переходит в GV1253, а другой — в DV1335

2. Я посмотрю на это сейчас, я этого еще не видел.

3. Да, я нашел это вскоре после перехода по вашей ссылке. Как и большинство вещей, которые я видел, все решает время вычисления, что неплохо для моей книги. Это не мгновенно, но полный пересчет составляет 2 секунды.

4. Однако я видел, что это подтверждает, что index НЕ является изменчивой функцией, которая, как я думал, может быть проблемой, если их так много. Я все еще в тупике, я не знаю, почему добавление строки займет в 10 раз больше времени, чем полный пересчет.

5. Но разве нет людей, у которых в 100 раз больше строк (у меня всего 1500), все займет несколько часов. Здесь есть что-то еще..

Ответ №1:

Недавно я столкнулся с аналогичной проблемой и нашел этот вопрос во время поиска ответа в Интернете. К сожалению, в нем не было ответа, поэтому я продолжил. Однако я обнаружил причину, по которой на рабочем листе, над которым я работал, удаление строк занимало так много времени, и хотел вернуться к этому вопросу и добавить свои 2 цента.

В моем случае оказалось, что одна из формул vlookup включала табличный массив, записанный как SheetName! $ A $ 1: D5000. Когда формула была скопирована вниз, диапазон увеличился на единицу в каждой ячейке вниз. Итак, следующая ячейка вниз определила табличный массив как SheetName! $ A $ 1: D5001. И это продолжалось в течение нескольких тысяч строк. Отключение автоматического вычисления не повлияло на сокращение времени ожидания при удалении строк.

В любом случае, измените массив таблиц в ВПР на SheetName!A: D и копирование этого vlookup вниз по столбцу сделали свое дело. Вы не упомянули, что использовали vlookup, но это может происходить в формулах индекса / сопоставления.

Ответ №2:

это проблема областей. Когда вы фильтруете свои данные и выбираете весь столбец, вы выбираете несколько несмежных диапазонов, то есть несколько областей. Обходной путь может быть:

  • сортируйте данные от а до я, чтобы сгруппировать строки, которые вы хотите удалить, только в одной области
  • Отфильтруйте значения, которые вы хотите удалить
  • Удаление строк
  • Наслаждайтесь!

Если для вас важен фактический порядок ваших данных, просто добавьте столбец, заполните его числами от 1 до n. Выполните шаги 1) 2) и 3), затем восстановите исходный порядок. Выполните шаг 3).