Ускоряем работу VBA в Excel.

27.06.2019

В Microsoft Excel можно работать проще и быстрее. В программе много малоизвестных функций и команд, которые значительно облегчат работу даже уверенному пользователю. Сложные и рутинные подсчеты в Excel можно выполнять, задавая команды одним кликом вместо пяти.

Мгновенное заполнение

Эта функция точно есть в Excel 2013 года. К примеру, в списке с полными ФИО нужно сократить имена и отчества. Например: из Алексеев Алексей Алексеевич в Алексеев А. А. Для этого в соседнем столбце необходимо прописать 2-3 строчки таких сокращения вручную, а дальше программа предложит автоматически повторить действия с оставшимися данными – потребуется просто нажать enter.

Преобразование строк в столбцы и обратно

Можно экономить время, переводя ячейки из строки в столбец в 3 шага вместо долгого рутинного переписывания:

  1. Выделить область
  2. Скопировать данные
  3. Правой кнопкой мыши нажать на ячейку, куда должны переместиться данные, в появившемся окне выбрать значок «Транспонировать»

В старых версиях Excel такого значка нет, зато эта команда выполняется с помощью нажатия комбинации клавиш ctrl + alt + V и выбора функции «транспонировать» . И такими несложными движениями мыши в руке столбцы и строки меняются местами.

Условное форматирование

Что-то вроде диаграммы, только показатели находятся не в соседней ячейке, а прямо на фоне данных. Эту функцию включают, чтобы выделить некоторые данные в таблице.

Например, учитель в школе делает таблицу средней успеваемости каждого ученика. Тогда условное форматирование прямо внутри ячеек с оценками построит «график», на котором будут выделены средние баллы каждого ученика, к примеру, от низкого к высокому. Или же выделит ячейки, в которых средний балл, например, ниже или выше 6. Параметры могут быть разными.

Чтобы функция заработала, нужно открыть вкладку «Главная» , выделить поле с ячейками, в группе инструментов «Стили» найти значок «Условное форматирование» и выбрать подходящий вариант – это может быть гистограмма, цветовая шкала или набор значков. Этой же командой можно самостоятельно установить правила выделения ячеек.

Спарклайны

  1. Нажать «Вставка»
  2. Открыть «Спарклайны»
  3. Выбрать команду «График» или «Гистограмма»
  4. В открывшемся окне указать диапазон с числами и ячейки, в которых должны появиться спарклайны, основанные на этих числах

Макросы

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

Нужно включить макрос, открыв вкладку «Разработчик» и отыскав на панели инструментов значок «Макрос» , а рядом с ней – похожий значок с красным кружочком в верхнем левом уголке . Если много раз нужно выполнять одно и тоже действие – так запустится запись макроса, и дальше компьютер сделает сам.

Прогнозы

Эта опция неспроста не афишируется разработчиками – она может предсказывать будущее! На самом деле функция может спрогнозировать, посчитать будущие значения на основе уже известных данных, которые уже прописаны. Доступ к ней прост:

  1. Указать не меньше 2 ячеек с исходными данными
  2. Открыть «Данные» «Прогноз» «Лист прогноза»
  3. В окошке «Создание листа прогноза» кликнуть на график или гистограмму
  4. В области «Завершение прогноза» установить дату окончания, нажать «Создать»

Заполнить пустые ячейки списка

Это избавит от монотонного ввода одинаковых фраз во множество ячеек. Конечно, можно воспользоваться старым добрым копипастом (копировать ctrl+c, вставить ctrl+v), но, если нужно заполнить не 10 ячеек, а, например, сотню-другую, и местами текст будет разным, – следующая подсказке точно пригодится.

Допустим, есть большущий список дел на всю неделю, и нужно напротив каждой задачи поставить определенный день недели. Не стоит прописывать по 20 понедельников, вторников и пятниц. В столбце ставится каждый день недели на том месте, где должен начаться список дел на этот день. Это должно выглядеть примерно так:


Дальше выделяется столбец с нашими днями недели, во вкладке «Главная» нажимаются кнопки «Найти и выделить» , «Выделить группу ячеек» , «Пустые ячейки» . Потом в первой пустой ячейке нужно поставить знак «=» , стрелкой «вверх» на клавиатуре вернуться к заполненной ячейке (на примере в таблице – «понедельник»). Нажать ctrl+enter . Готово, теперь все пустые ячейки должны заполниться продублированными данными.

Найти ошибки в формуле

Бывает, формула не работает, но причина «поломки» непонятна. Иногда, чтобы разобраться в сложной формуле (где как аргумент функции берутся другие функции) или найти в ней ошибку, нужно вычислить только ее часть. Вот две подсказки:

Часть формулы вычисляется прямо в строке формул. Для этого необходимый участок нужно выделить и нажать F9. Все просто, но есть одно «но». Если забыть вернуть все на место, то есть отменить вычисление функции, и нажать enter – посчитанная часть останется в виде числа.

Кликнуть на «Вычислить формулу» во вкладке «Формулы» . Откроется окно, где можно вычислять формулу пошагово и тем самым найти момент, где появляется ошибка, если она, конечно, есть.

«Умная» таблица

Если у пользователя и MS Excel разное понимание понятия таблицы, это может лишить его многих удобных функций и растянуть время работы. Начерченную карандашом или с помощью границы – программа посчитает обычным набором ячеек. Чтобы данные воспринимались именно как таблица, это поле нужно отформатировать.

Необходимо выделить нужную область, во вкладке «Главная» нажать кнопку «Форматировать как таблицу» . В списке разных форм и цветов вариантов оформления найти подходящий.

Копирование с сохранением форматов

Наверняка с маркером автозаполнения знакомы все. Это маленький черный крестик в правом углу ячейки, который позволяет копировать содержимое или формулу из одной ячейки в несколько других, если потянуть его вниз или в сторону. Так вот, в этом случае копирование может нарушить «внешний вид» таблицы, ведь копируется еще и формат ячейки. Если потянуть за крест и нажать смарт-тег (значок появится внизу справа в скопированном диапазоне), формат не скопируется. Другой вариант – опция «Копировать только значения» , в этом случае дизайн таблицы тоже не будет испорчен.


Удалить пустые ячейки

Быстро расправиться со всеми ненужными пустыми ячейками очень просто:

  1. Выделить столбец
  2. Вкладка «данные»
  3. Нажать «фильтр»

Над столбцами появится стрелка, на которую нужно нажать, а затем в открывшемся меню под цифрами 1-9 поставить галочку напротив пункта «Пустые ячейки» .

Найти отличия и совпадения двух областей

Если нужно быстро найти одинаковые или разные данные в 2-х списках, эту работу Excel проделает сам. Несколько кликов – и программа выделит схожие или отличные элементы:

Необходимо выделить списки (при этом зажать ctrl). Во вкладке «Главная» перейти к кнопке «Условное форматирование» . Дальше нажать «Правила выделения ячеек» «Повторяющиеся значения» или «Уникальные» . Готово.

Быстрый подбор значений

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

  1. Открыть «Данные» «Работа с данными» «Анализ «что если» «Подбор параметра»
  2. В область «Установить в ячейке» вставить ссылку на ячейку с нужной формулой
  3. В области «Значение» написать нужный результат формулы
  4. В области «Изменяя значение ячейки» вставить ссылку на ячейку с корректируемым значением и нажать Ок

Быстрое перемещение

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

Быстро добавить новые значения в диаграмму

Новые данные в уже готовую диаграмму можно поместить просто с помощью обычного копипаста: выделить необходимые значения, скопировать их (ctrl+c ) и вставить в диаграмму (ctrl+v ).

Расширенный поиск

Комбинация ctrl + f , как все знают, ведет в меню поиска, который найдет любую информацию в этой программе. Функция имеет несколько секретов – знаки «?» и «*» включат в поиске настоящего сыщика: с их помощью можно отыскать данные, если нет уверенности в точности запроса. Знак вопроса заменит один неизвестный символ, а астериск (этот знак в простонародье называют звездочкой) – сразу несколько неизвестных.

Когда в куче данных нужно найти именно эти знаки – перед ними ставят значок «~» . Тогда программа не примет их за неизвестные символы.

Восстановление несохраненного файла

На случай наступления конца света.

Для многих пользователей, скорее всего, будет знакома такая ситуация: обрадовались концу рабочего дня настолько, что на заботливый вопрос MS Excel «сохранить последние изменения» кликнули «нет». И труд всех последних часов ушел в небытие. Спасение возможно, надежда есть.

MS Excel 2010. Последовательность команд такая: «Файл» - «Последние» - (кнопка внизу справа).

MS Excel 2013. «Файл» - «Сведения» - «Управление версиями» - «Восстановить несохраненные книги» . И программа откроет тайный мир всех временных копий книг, которые создавались или изменялись, но не были сохранены.

Горячие комбинации клавиш

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

За раз такое количество функций и сочетаний не запомнить, но они будут откладываться в памяти сами, если периодически применять некоторые из них, работая с данными. Так существенно ускорится и облегчится вся работа.

Условное форматирование (5)
Списки и диапазоны (5)
Макросы(VBA процедуры) (63)
Разное (39)
Баги и глюки Excel (3)

Как ускорить и оптимизировать код VBA


Рано или поздно у пишущих на Visual Basic for Applications возникает проблема - код хоть и облегчает жизнь и делает все автоматически, но очень долго. В этой статье я решил собрать несколько простых рекомендаций, которые помогут ускорить работу кода VBA, при этом в некоторых случаях весьма внушительно - в десятки, а то и больше, раз. Основной упор в статье сделан на начинающих, поэтому в начале статьи приводятся самые простые методы оптимизации. Более "глубокие" решения по оптимизации кода приведены в конце статьи, т.к. для применения данных решений необходим достаточный опыт работы в VB и сходу такие методы оптимизации кому-то могут быть непонятны.

  1. Если в коде есть много всяких Activate и Select , тем более в циклах - следует немедленно от них избавиться. Как это сделать я писал в статье: Select и Activate - зачем нужны и нужны ли?
  2. Обязательно на время выполнения кода отключить:
    • автоматический пересчет формул. Чтобы формулы не пересчитывались при каждой манипуляции на листе во время выполнения кода - это может дико тормозить код, если формул много:

      Application.ScreenUpdating = False

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

      ActiveWorkbook.ActiveSheet.DisplayPageBreaks = False

      если печать производится внутри кода, то эту строку желательно вставить сразу после строки, выводящей лист на печать(при условии, что печать не происходит в цикле. В этом случае - по завершению цикла печати).

    • На всякий случай можно отключить отображение информации в строке статуса Excel (в каких случаях там вообще отображается информация и зачем можно узнать в статье: Отобразить процесс выполнения). Хоть это и не сильно поедает ресурсы - иногда может все же ускорить работу кода:
      Application.StatusBar = False

      Application.StatusBar = False

    Главное, что следует помнить - все эти свойства необходимо включить обратно после работы кода . Иначе могут быть проблемы с работой внутри Excel. Например, если забыть включить автопересчет формул - большинство формул будут пересчитывать исключительно принудительным методом - Shift +F9 . А если забыть отключить обновление экрана - то есть шанс заблокировать себе возможность работы на листах и книгах. Хотя по умолчанию свойство ScreenUpdating и должно возвращаться в True, если было отключено внутри процедуры - лучше не надеяться на это и привыкать возвращать все свойства на свои места принудительно. По сути все это сведется к нескольким строкам:

    "Возвращаем обновление экрана Application.ScreenUpdating = True "Возвращаем автопересчет формул Application.Calculation = xlCalculationAutomatic "Включаем отслеживание событий Application.EnableEvents = True

    Как такой код выглядит на практике. Предположим, надо записать в цикле в 10 000 строк значения:

    Sub TestOptimize() "отключаем обновление экрана Application.ScreenUpdating = False "Отключаем автопересчет формул Application.Calculation = xlCalculationManual "Отключаем отслеживание событий Application.EnableEvents = False "Отключаем разбиение на печатные страницы ActiveWorkbook.ActiveSheet.DisplayPageBreaks = False "Непосредственно код заполнения ячеек Dim lr As Long For lr = 1 To 10000 Cells(lr, 1).Value = lr "для примера просто пронумеруем строки Next "Возвращаем обновление экрана Application.ScreenUpdating = True "Возвращаем автопересчет формул Application.Calculation = xlCalculationAutomatic "Включаем отслеживание событий Application.EnableEvents = True End Sub

    Разрывы печатных страниц можно не возвращать - они тормозят работу в любом случае.

  3. Следует избегать циклов, вроде Do While для поиска последней ячейки. Часто такую ошибку совершают начинающие. Куда эффективнее и быстрее вычислять последнюю ячейку на всем листе или в конкретном столбце без этого тормозного цикла Do While. Я обычно использую
    lLastRow = Cells(Rows.Count,1).End (xlUp).Row

    lLastRow = Cells(Rows.Count,1).End(xlUp).Row

    другие варианты определения последней ячейки я детально описывал в статье:

Для более опытных пользователей VBA я приведу несколько решений по оптимизации кодов в различных ситуациях:

  • Самая хорошая оптимизация кода, если приходится работать с ячейками листа напрямую, обрабатывать их и, возможно, изменять значения, то быстрее все обработки делать в массиве и разом выгружать на листе. Например, код выше по заполнению ячеек номерами будет в этом случае выглядеть так:
    Sub TestOptimize_Array() "Непосредственно код заполнения ячеек Dim arr, lr As Long "запоминаем в массив одним махом все значения 10000 строк первого столбца arr = Cells(1, 1).Resize(10000).Value "если нужно заполнение для двух и более столбцов "arr = Cells(1, 1).Resize(10000, 2).Value "или "arr = Range(Cells(1, 1),Cells(10000, 2)).Value "или автоматически вычисляем последнюю ячейку и заносим в массив данные, начиная с ячейки А3 "llastr = Cells(Rows.Count, 1).End(xlUp).Row "последняя ячейка столбца А "arr = Range(Cells(3, 1),Cells(llastr, 2)).Value For lr = 1 To 10000 arr(lr,1) = lr "заполняем массив порядковыми номерами Next "Выгружаем обработанный массив обратно на лист в те же ячейки Cells(1, 1).Resize(10000).Value = arr End Sub

    Sub TestOptimize_Array() "Непосредственно код заполнения ячеек Dim arr, lr As Long "запоминаем в массив одним махом все значения 10000 строк первого столбца arr = Cells(1, 1).Resize(10000).Value "если нужно заполнение для двух и более столбцов "arr = Cells(1, 1).Resize(10000, 2).Value "или "arr = Range(Cells(1, 1),Cells(10000, 2)).Value "или автоматически вычисляем последнюю ячейку и заносим в массив данные, начиная с ячейки А3 "llastr = Cells(Rows.Count, 1).End(xlUp).Row "последняя ячейка столбца А "arr = Range(Cells(3, 1),Cells(llastr, 2)).Value For lr = 1 To 10000 arr(lr,1) = lr "заполняем массив порядковыми номерами Next "Выгружаем обработанный массив обратно на лист в те же ячейки Cells(1, 1).Resize(10000).Value = arr End Sub

    Но здесь следует учитывать и тот момент, что большие массивы могут просто вызвать переполнение памяти. Наиболее актуально это для 32-битных систем, где на VBA и Excel выделяется памяти меньше, чем в 64-битных системах

  • Если используете быстрый ЕСЛИ - IIF , то замените его на IF ... Then ... Else
  • Так же лучше вместо Switch() и Shoose() применить тот же IF ... Then ... Else
  • В большинстве случаев проверять строку на "не пусто" лучше через Len() , чем прямое сравнение с пустотой: Len(s)=0 вместо s = "" . Связано с тем, что работа со строками значительно медленнее, чем с числовыми данными
  • Не применять объединение строк без необходимости. Например, s = "АВ" , будет быстрее, чем: s ="А" & "В"
  • Не применять сравнение текстовых величин напрямую. Лучше применить встроенную функцию StrComp:
    If s s1 Then будет медленнее, чем
    If StrComp(s, s1, vbBinaryCompare) = 0
    и тем более, если при сравнении необходимо не учитывать регистр:
    If LCase(s) LCase(s1) Then будет медленнее, чем
    If StrComp(s, s1, vbTextCompare) = 0
  • Циклы For … Next в большинстве случаев работает быстрее, чем цикл Do ... Lоор
  • Избегать присвоения переменным типа Variant . Хоть соблазн и велик - этот тип забирает много памяти и в дальнейшем замедляет работу кода. Так же для объектных переменных следует избегать по возможности безликого глобального типа Object и применять конкретный тип:

    Dim rRange as Range, wsSh as Worksheet

  • Если работаете с массивами, то можно при объявлении указать это явно:

    Dim arr() as string, arr2() as long

    но это только если есть уверенность в том, что в массив будут заноситься строго указанные типы данных

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

Статья помогла? Поделись ссылкой с друзьями! Видеоуроки

{"Bottom bar":{"textstyle":"static","textpositionstatic":"bottom","textautohide":true,"textpositionmarginstatic":0,"textpositiondynamic":"bottomleft","textpositionmarginleft":24,"textpositionmarginright":24,"textpositionmargintop":24,"textpositionmarginbottom":24,"texteffect":"slide","texteffecteasing":"easeOutCubic","texteffectduration":600,"texteffectslidedirection":"left","texteffectslidedistance":30,"texteffectdelay":500,"texteffectseparate":false,"texteffect1":"slide","texteffectslidedirection1":"right","texteffectslidedistance1":120,"texteffecteasing1":"easeOutCubic","texteffectduration1":600,"texteffectdelay1":1000,"texteffect2":"slide","texteffectslidedirection2":"right","texteffectslidedistance2":120,"texteffecteasing2":"easeOutCubic","texteffectduration2":600,"texteffectdelay2":1500,"textcss":"display:block; padding:12px; text-align:left;","textbgcss":"display:block; position:absolute; top:0px; left:0px; width:100%; height:100%; background-color:#333333; opacity:0.6; filter:alpha(opacity=60);","titlecss":"display:block; position:relative; font:bold 14px \"Lucida Sans Unicode\",\"Lucida Grande\",sans-serif,Arial; color:#fff;","descriptioncss":"display:block; position:relative; font:12px \"Lucida Sans Unicode\",\"Lucida Grande\",sans-serif,Arial; color:#fff; margin-top:8px;","buttoncss":"display:block; position:relative; margin-top:8px;","texteffectresponsive":true,"texteffectresponsivesize":640,"titlecssresponsive":"font-size:12px;","descriptioncssresponsive":"display:none !important;","buttoncssresponsive":"","addgooglefonts":false,"googlefonts":"","textleftrightpercentforstatic":40}}

Долгое открытие файлов Excel может возникать из-за:

  • большого количества форматирования примененного в таблице
  • проблем с принтером
  • наличия скрытых объектов
  • не разумного применения формул
  • огромного размера файла, при малом количестве используемых данных
  • и бог знает еще каких проблем.
Все эти тормоза поддаются исправлению, кроме разве что последнего.

Избавляемся от тормозов в Excel

Наличие огромного количества форматирования существенно тормозит работу Excel
Представьте себе таблицу 65000 строк и 50 столбцов. У каждой ячейки отличаются цвета, уникальный шрифт и размер текста. Как думаете, будет по такому файлу курсор перемещаться шустро? Если у вас не MainFrame, то вряд ли.
Старайтесь оформлять только то, что нужно оформить. Не применяйте форматирование ко всему столбцу или строке, если можно выделить только необходимое количество ячеек. Ну а если попался такой "форматированный" файл, то в Excel есть замечательная кнопка - Очистить Форматы

Тормозить Excel может и из-за проблем с принтером
А точнее, если не подключен тот принтер, который в редакторе выбран по-умолчанию. Но эта проблема характерна для Экселя 2007 и старше. При этом запуск файла происходит очень медленно. Исправляется это выбором нового работающего принтера или включением не работающего. Или установкой по-умолчанию виртуального принтера "Microsoft XPS Document Writer"

Наличие скрытых объектов
Скрытые объекты могут попасть в таблицу в результате копирования данных из другого файла. Причем объект переносится с нулевыми размерами, из-за чего, при выделении его не видно. При большом их количестве, это может существенно затормозить работу.
Открываем проблемный файл и убеждаемся, что можем найти и выделить скрытые объекты. Для этого нажимаем Alt+F11, откроется редактор Microsoft Visual Basic. Нажимаем F4, в выпадающем списке выбираем ЭтаКнига Workbook и в поле DisplayDrawingObjects ставим значение -4104 -xlDisplayShapes. Далее, на Листе Экселя выполняем Главная - Найти и выделить - Выделение группы ячеек - Объекты, нажимаем ОК и потом клавишу Delete. Естественно, лучше сделать копию файла и потренироваться на нем.

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

И так же на этот выделенный диапазон щелкаете ПКМ, выбираете Специальная вставка и указываете Значения. Таким образом, уменьшается количество формул, по которым Excel должен проводить расчеты.

Так же не забывайте использовать более быстрые формулы:
Используйте ЕСЛИОШИБКА, она отрабатывает быстрее комбинации ЕСЛИ + ЕОШ
Используйте -- для конвертации логических значений в ноли и единицы.
Предпочтительней использовать комбинацию ИНДЕКС + ПОИСКПОЗ вместо ВПР
МАКС(А1;0) работает быстрее ЕСЛИ(А1>0;A1;0)

Долгое открытие из-за большого размера
Причем, часто бывает, что количество данных в таблицах, пропорционально не соответствует размеру файла. Последний, чаще всего больше. Такое может быть, когда файл побывал или находится в Общем доступе. При установке этого режима, Excel ведет журнал изменений, куда попадают все изменения за период, указанный в параметрах.
Отключить или поменять период, можно в Excel 2007 и старше, во вкладке Рецензирование - Доступ к книге. И на вкладке Подробнее выставляете значения какие нужно.

Если документ сохранен в формате xlsx или xls, то можно сохранить его в формат xlsb. И скорость, с какой будет открываться файл, приятно удивит. Увеличение скорости достигается за счет того, что все данные в этом файле сохраняются в бинарном формате, более "родном" для Excel, который требует меньше ресурсов для разбора и преобразования документа. Плюс ко всему этому, размер файла станет меньше.

Опять же, если документ сохранен в формате xlsx и долго открывается, можно открыть его с помощью любого архиватора (например winrar) и поудалять папки revisions и worksheets. Первая хранит все изменения, при включенном режиме Общий доступ. Вторая папка содержит изображения. Данные операции проводите на копии файла. Кстати, если в документе имеются изображения, не забывайте их сжимать. Делается это через вкладку Формат - группа Изменить - Сжатие рисунков и указать предпочтительное качество. Поможет уменьшить размеры изображений, что положительно отразится на размере файла.

Медленно запускаться файл может в Excel 2003 и 2007, если документ открывается с сетевого ресурса. Но при копировании на локальный компьютер - запуск происходит быстро. Лечится это созданием отсутствующих разделов и добавлением значения:
HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\12.0\Excel\Security\FileValidation (для 2007)
HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\11.0\Excel\Security\FileValidation (для 2003)
Enableonload=dword:00000000
Данный параметр отключает функцию Office File Validation, которая отвечает за проверку двоичного формата файла и проверяет, соответствуют ли он формату файла MS Office.

Включаем\Отклчючаем многопоточные вычисления
Данный параметр находится в Настройки - Дополнительно - вкладка Формулы. При наличии нескольких ядер процессора нужно включить данный пункт и указать количество потоков равное количеству ядер. Если же приложением тормозило и до этого с включенным параметром, то отключите. В идеале, эта настройка ускоряет работу при работе с формулами.

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

Экономисты обычно около половины своего рабочего времени проводят в программе Excel. При этом многим из нас общение с программой доставляет не мало головной боли, т.к. выполнение рутинных операций отнимает кучу времени. Давайте поговорим о том, как работать быстрее в Excel.

Альтернативы Excel практически нет. Не удивительно, ведь Excel позволяет сделать практически всё. Он как пустой мольберт для художника. Ты садишься за него и начинаешь писать свою картину.

Мазок, ещё мазок… Проходит несколько часов и… Пару небольших табличек и график с стандартным оформлением. Грустно не так ли?

И у меня такое бывало. Работаешь, работаешь. Уже вымотался, а работа только начата. Что же с этим делать?

Выход есть! Правда далеко не все о нём знают и поэтому им приходится задерживаться на работе откладывать посиделки с друзьями, свидания с любимыми и просто выгорать на работе. Не знаю как вас, а меня это не устраивает и сегодня я расскажу вам свои секреты скоростной работы в Excel.

Интересно? Тогда поехали!

Первое что нужно сделать — выкинуть мышку!

Именно так вы всё верно прочитали. Чтобы работать быстрее в Excel нужно убрать мышку. ТОЛЬКО не спешите закрывать вкладку, сейчас всё станет понятно.

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

Всё дело в горячих клавишах которые позволяют просто молниеносно переключаться между страницами, выделять, добавлять или удалять стройки/столбцы. В общем знание буквально 5-7 комбинаций ускоряет работу на порядок. Многие навигационные операции с помощью мыши делаются в 3-5, а то и 10 раз дольше.

Приведу пример. Чтобы добавить несколько строк в Excel есть три варианта:

  1. Вариант 1. Взять мышь, навести её на соответствующий столбец или несколько столбцов в зависимости того сколько столбцов нужно вставить. Нажать правой кнопкой, в выпадающем окошке выбрать вставить.
  2. Вариант 2. С помощью кнопок на вкладке Главная в группе ячейки. Опять же выделяем, идем на вкладку Главная. Щелкаем по соответствующим кнопкам для получения результата.
  3. Вариант 3. Для выделения столбца нажать Ctrl + ‘Пробел’ , для добавления столбца нажать Ctrl + ‘+’ .

Вы можете сказать, что экономия не велика. Одним способом я сделаю за 15-20 секунд, другим за 3-5. И что я буду делать с освободившимися 12-15 секундами? И вообще сколько нужно выучить горячих клавиш чтобы почувствовать разницу?

Согласен! Время, сэкономленное одной горячей клавишей не велико, но вся наша работа в Excel — это монотонное повторение одних и тех же операций по сотне раз в разных последовательностях. Значит если условная экономия на одной операции предположим 10 секунд. При повторении одной операции 20-30 раз в день экономия от знания одной комбинации горячих клавиш — 3-5 минут. Значит знание 10 горячих клавиш экономит 30-50 минут времени!!! А вот это уже круто!!!

Совет номер два вытекает из первого — учите горячие клавиши. Полезных горячих клавиш не так уж и много, поэтому выучив 10-20 сочетаний вы быстро почувствуете разницу в скорости работы.

«Хорошенький совет!» — возразите вы. — «И как их учить? Становиться на табуретку перед коллегами и рассказывать как стихи?» 🙂

Нет. Конечно же всё не так. попробуйте найти свой удобный для вас путь изучения горячих клавиш. Что для этого можно сделать?

Например, можно взять список горячих клавиш и выбрать 3-5 наиболее используемых функций. Попробовать отработать их, потренироваться как они работают. Привыкнуть нажимать их когда они нужны. Со временем пальцы сами лягут на клавиатуру так, чтобы быстро и удобно переключаться между листами. Выучили эти — переходите к следующим, а потом ещё и ещё.

Ну и конечно же вот вам список полезных быстрых и горячих клавиш:

Горячие клавиши уж точно помогут вам рабоатать быстрее в Excel. Трениуртесь в их использовании и очень быстро скорость вашей работы существенно возрастёт. Но это ещё не всё!

У меня в запасе есть ещё несколько советов. Готовы? Поехали!

Совет по Excel номер ТРИ. Функции и их комбинации, которые обязатлеьно освоить

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

Также у каждой функции может быть множество особенностей использования. Так, например, заете ли вы что функция СУММ может сумировать значения из разных листов вашей книги и при этом не нужно выделять каждое из них по отдельности? Т.е.

Вместо формулы

=СУММ(Лист1!А1; Лист2!А1; Лист3!А1; Лист4!А1; Лист5!А1; Лист6!А1; Лист7!А1; … ЛистN!A1)

Формула будет выглядеть как

=СУММ(Лист1:ЛистN!А1)

Всё это к чему? Помимо богатого функционала Excel, который есть в его стандартных формулах, существует множество комбинаций, знание которых позволяет решать и не стандартные задачи. Так, у Excel совсем нет функции МИНЕСЛИ. Да, есть СУММЕСЛИ, СЧЁТЕСЛИ, а МИНЕСЛИ не сделали. Также МАКСЕСЛИ, МЕДИАНАЕСЛИ и т.п., но при этом всё это решается путем использования функций областей. Возможно вы видели, когда формула облачается в фигурные скобки.

Некоторые функции отлично работают только в связке. Это я сейчас говорю о ИНДЕКС и ПОИСКПОЗ. Казалось бы, бестолковые функции по отдельности, но в паре дают отличный функционал.

Что для этого нужно? Например, подписаться на нашу группу в Facebook и ждать выхода новых постов. 😉

Также посмотрите список формул, на которые я рекомендую вам обратить внимание:

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

Совет по Excel номер ЧЕТЫРЕ. Структура и форматирование в файлах

Если вы сталкивались с принципами моделирования, то очевидно знаете, что для того, чтобы избежать ошибок достаточно навести у себя в расчетах порядок.

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

Как этого можно избежать? Дам несколько советов:

  • Отформатируйте файл. Пусть у вас будет одинаковое количество знаков после запятой, одинаковый шрифт по всему документу и ограниченная цветовая палитра. Мне вот нравится использовать палитры одного цвета но разных тонов (голубой, синий и тёмно-синий). Смотрится очень стильно.
  • Разделите исходные данные, расчеты и результаты. Не всегда это нужно, но когда данных становится очень много наличие сводной таблички просто спасает.
  • Делайте одинаковые формулы по столбцу или строке. согласитесь не очень правильно когда один и тот же показатель в разные периоды считается по разному. При этом обычно этого не видно пока не заглянешь в формулу. а често можно ещё и забыть.
  • Старайтесь избегать циклических ссылок и ссылок на внешние файлы. Обычно именно они дают разный результат на разных компьютерах. Был случай, когда погрешность при обновлении внешних ссылок была больше чем с 7 нулями. Ай!
  • Упрощайте и не эконономьте место. Excel позволяет сделать сколь угодно много строк и столбцов. За свои 10 лет работы с программой я никогда не использовал лист полностью. Вряд ли у вас это получится, поэтому не городите сложные формулы. Лучше сделайте расчет в несколько действий.

Вот такие советы. Поверьте, они упрощают жизнь. Ошибок становится меньше, расчеты аккуратнее и понятнее. если у вас есть ещё какие-то советы — оставляйте их в комментариях.

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

Хотелось бы дать интенсив на 28 минут, после которого все будут знать Excel лучше чем знают его разработчики, но увы. Такого не бывает. Постоянная и усердная работа приводит к поистине впечатляющим результатам. Именно поэтому совсем скоро мы запускаем тренинг по Excel, который можно будет пройти на нашем сайте совершенно бесплатно (по крайней мере первым 1000 пользователям).

Павлов Николай

В этой статье мне хотелось бы представить вам самые эффективные приемы работы в Microsoft Excel, собранные мной за последние 10 лет работы над проектами и проведения тренингов по этой замечательной программе. Здесь нет описания суперсложных технологий, но есть приемы на каждый день - простые и эффективные, описанные без "воды" - только "сухой остаток". На освоение большинства из этих примеров у вас уйдет не более одной-двух минут, а вот сэкономить они вам помогут гораздо больше.

Быстрый переход к нужному листу

Случается ли вам работать с книгами Excel, состоящими из большого количества листов? Если их больше десятка, то каждый переход к очередному нужному листу сам по себе становится маленькой проблемой. Простое и элегантное решение такой задачи - щелкнуть в левом нижнем углу окна по кнопкам прокрутки ярлычков листов не левой, а правой кнопкой мыши - появится оглавление книги с полным списком всех листов и на нужный лист можно будет перейти в одно движение:

Это намного быстрее, чем прокручивать ярлычки листов этими же кнопками в поисках нужного.


Копирование без повреждения форматирования

Сколько сотен (тысяч?) раз я видел эту картину, стоя за спиной своих слушателей во время тренингов: пользователь вводит формулу в первую ячейку затем и "протягивает" ее на весь столбец, нарушая форматирование нижерасположенных строк, поскольку такой способ копирует не только формулу, но и формат ячейки. Соответственно, дальше приходится вручную исправлять повреждения. Секунда на копирование и потом 30 - на починку испорченного копированием дизайна.

Начиная с Excel 2002, есть решение этой проблемы - простое и изящное. Сразу после копирования (протаскивания) формулы на весь столбец, нужно воспользоваться смарт-тегом - небольшим значком, который временно появляется в правом нижнем углу диапазона. Нажатие на него выведет список возможных вариантов копирования, где и можно выбрать Копировать только значения (Fill without formatting). В этом случае формулы копируются, а форматирование - нет:


Копирование только видимых ячеек

Если вы работаете в Microsoft Excel больше недели, то должны были уже сталкиваться с подобной проблемой: в некоторых случаях при копировании-вставке ячеек их вставляется больше, чем было, на первый взгляд, скопировано. Это может происходить, если копируемый диапазон включал в себя скрытые строки/столбцы, группировки, промежуточные итоги или фильтрацию. Рассмотрим в качестве примера один из таких случаев:

В этой таблице посчитаны промежуточные итоги и сделана группировка строк по городам - это легко понять по кнопкам "плюс-минус" слева от таблицы и по разрывам в нумерации видимых строк. Если выделить, скопировать и вставить данные из этой таблицы обычным способом, то мы получим 24 лишних строки. Нам же хочется скопировать и вставить только итоги!

Можно решить проблему, кропотливо выделяя каждую строку итогов и удерживая при этом клавишу CTRL - как для выделения несмежных диапазонов. Но если таких строк не три-пять, а несколько сотен или тысяч? Есть другой, более быстрый и удобный путь:

Выделите копируемый диапазон (в нашем примере - это A1:C29)

Нажмите на клавиатуре клавишу F5 и затем кнопку Выделить (Special) в открывшемся окне.
Появится окно, позволяющее пользователю выделять не все подряд, а только нужные ячейки:

В этом окне выберите опцию Только видимые ячейки (Visible cells only) и нажмите ОК.

Полученное выделение теперь можно смело копировать и вставлять. В результате мы получим копию именно видимых ячеек и вставим вместо ненужных 29-ти только необходимые нам 5 строк.

Если есть подозрение, что подобную операцию вам придется проделывать часто, то имеет смысл добавить на панель инструментов Microsoft Excel кнопку для быстрого вызова такой функции. Это можно сделать через меню Сервис>Настройка (Tools> Customize), затем перейти на вкладку Команды (Commands), в категории Правка (Edit) найти кнопку Выделить видимые ячейки (Select visible cells) и перенести ее мышью на панель инструментов:


Превращение строк в столбцы и обратно

Простая операция, но если не знать как сделать ее правильно - можно потратить полдня на перетаскивание отдельных ячеек вручную:

На самом деле все просто. В той части высшей математики, которая описывает матрицы есть понятие транспонирования - действия, которое меняет строки и столбцы в матрице местами друг с другом. В Microsoft Excel это реализуется в три движения: Копируем таблицу

Щелкаем правой кнопкой мыши по пустой ячейке и выбираем команду Специальная вставка (Paste Special)

В открывшемся окне ставим флаг Транспонировать (Transpose) и жмем ОК:


Быстрое добавление данных в диаграмму

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

Другой путь - простой, быстрый и красивый - выделить ячейки с новыми данными, скопировать их (CTRL+C) и вставить (CTRL+V) прямо в диаграмму. Excel 2003, в отличие от более поздних версий, поддерживает даже возможность перетаскивания выделенного диапазона ячеек с данными и забрасывания его прямо в диаграмму с помощью мыши!

Если хочется контролировать все нюансы и тонкости, то можно использовать не обычную, а специальную вставку, выбрав в меню Правка>Специальная вставка (Edit> Paste Special). В этом случае Microsoft Excel отобразит диалоговое окно, позволяющее настроить куда и как именно будут добавлены новые данные:

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


Заполнение пустых ячеек

После выгрузки отчетов из некоторых программ в формат Excel или при создании сводных таблиц пользователи часто получают таблицы с пустыми ячейками в некоторых столбцах. Эти пропуски не позволяют применять к таблицами привычные и удобные инструменты типа автофильтра и сортировки. Естественным образом возникает необходимость заполнить пустоты значениями из вышестоящих ячеек:

Безусловно, при небольшом количестве данных, это легко можно сделать простым копированием - вручную протянув каждую заглавную ячейку в столбце А вниз на пустые ячейки. А если в таблице несколько сотен или тысяч строк и несколько десятков городов?

Есть способ решить эту задачу быстро и красиво при помощи одной формулы:

Выделите все ячейки в столбце с пустотами (т.е. диапазон A1:A12 в нашем случае)

Чтобы в выделении остались только пустые ячейки, нажмите клавишу F5 и в открывшемся окне переходов - кнопку Выделить. Увидите окно, позволяющее выбрать - какие именно ячейки мы хотим выделить:

Установите переключатель в положение Пустые (Blank) и нажмите ОК. Теперь в выделении должны остаться только пустые ячейки:

Не меняя выделения, т.е. не трогая мышь, введем формулу в первую выделенную ячейку (А2). Нажмите на клавиатуре на знак "равно" и затем на "стрелку вверх". Получим формулу, которая ссылается на предыдущую ячейку:

Чтобы ввести созданную формулу сразу во все выделенные пустые ячейки, нажмите не клавишу ENTER, а сочетание CTRL+ ENTER. Формула заполнит все пустые ячейки:

Теперь осталось только заменить формулы на значения для фиксации результатов. Выделите диапазон A1:A12, скопируйте его и вставьте в ячейки их значения, используя специальную вставку.


Выпадающий список в ячейке

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

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

Выбор товара из прайс-листа, имени клиента из клиентской базы, ФИО сотрудника из штатного расписания и т.д. Вариантов применения этой функции множество.

Чтобы создать выпадающий список в ячейке:

Выделите ячейки, в которых вы хотите создать выпадающий список.

Если у вас Excel 2003 или старше, то выберите в меню Данные>Проверка (Data>Validation). Если у вас Excel 2007/2010, то перейдите на вкладку Данные (Data) и нажмите кнопку Проверка данных (Data validation).

В открывшемся окне выберите вариант Список (List) из раскрывающегося списка.

В поле Источник (Source) надо указать значения, которые должны быть в списке. Тут возможны варианты:

Вписать в это поле текстовые варианты через точку с запятой

Если диапазон ячеек с исходными значениями находится на текущем листе - достаточно его просто выделить мышью.

Если он находится на другом листе этой книги, то ему придется заранее дать имя (выделить ячейки, нажать CTRL+F3, ввести имя диапазона без пробелов), а затем прописать это имя в поле