#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).