Некоторые тонкости работы с MS Office Excel

В связи с моей офисной работой мне часто приходится сталкиваться с информацией, подготовленной в программном пакете Microsoft Office. Чаще всего это электронные таблицы Excel и тексты в формате World. Скажу сразу, что невооруженным глазом видно, что люди, которые составляли данные «вордовские» или «екселевские» файлы, обрекали себя на муки, тратили уйму человеко-часов и все из-за того, что не умели эффективно пользоваться тем набором инструментов, который предлагает нам Microsoft. В этой статье я попытаюсь раскрыть некоторые эффективные практики использования электронных таблиц Excel, которые я выработал в ходе личного трудового опыта. Из нее вы узнаете:

  •  как настроить интерфейс программы;
  • как работают некоторые инструменты, которые по не понятным мне причинам не удостаиваются должным вниманием со стороны пользователей;
  • почему иногда невозможно вставить данные из одного файла в другой;
  • как отобразить скрытые листы книги, в т.ч. после выгрузки из 1С;
  • как переносить каретку на следующую строку в ячейке;
  • о существовании трехмерных ссылок;
  • о таких формулах как ДВССЫЛ и ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ
  • как бороться с большим весом файла

Сразу хочу предупредить, что статья будет полезна тем пользователям, которые уже имеют базовые знания о принципах работы в екселе (что такое адрес ячейки, каким он бывает, как вводить формулу, что такое фильтры, книга, листы и т.д.). Еще одним важным условием будет то, что все советы и примеры будут касаться Excel 2007. Данная версия программы кардинально отличается от своей предшественницы – Excel 2003, как визуально, так и в структуре создаваемых файлов. Так же, большая часть материала будет актуальна и для пользователей Excel 2010. Сокращения, которые могут встречаться в статье: ПКМ – «правый клик мыши», ЛКМ – «левый клик мыши». Итак, поехали.

Настраиваем интерфейс

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

  • Влияющие ячейки
  • Зависимые ячейки
  • Убрать стрелки
  • Фильтр
  • Очистить (фильтр)
  • Закрепить область
  • Формат по образцу
  • Список полей
  • Создать примечание
  • Удалить примечание
  • Предварительный просмотр
  • Область печати
  • Мастер сводных таблиц
  • Блокировать ячейку

Именно данными инструментами я пользуюсь чаще всего. Большая часть из них представлена в ленточном меню екселя, но чтобы добраться до них, необходимо переключить вкладку и найти инструмент на панели. Некоторые из перечисленных функций вообще отсутствуют на ленте, например, «Предварительный просмотр» — показывает, в каком виде документ пойдет на печать. Если вы еще не в состоянии определится, какие инструменты вы хотели бы видеть на панели быстрого доступа, можете смело скопировать представленный мною список, с опытом вы сами поймете, какие инструменты в вашей работе наиболее востребованы, и, исходя из этого, настроите панель под себя. Так же не стоит забывать, что в екселе присутствует свойство сворачивания ленты. В Excel 2007 это делается путем двойного нажатия ЛКМ на ярлыке вкладки т.е. «главная», «вставка», «разметка страницы» и т.д., в Excel 2010 кроме данного способа была введена специальная кнопка в правом верхнем углу окна программы. Пожалуй, еще одним советом в настройке интерфейса ексаля, будет вынос вкладки «разработчик» на ленту меню. Сделать это можно путем нажатия кнопки «офис», затем внизу появившегося меню кликаем на кнопку «параметры Excel», появится окно с настройками программы, в нем выбираем пункт «основные» и ставим галочку напротив пункта «Показывать вкладку Разработчик на ленте», как представлено на рисунке (в Excel 2010 данный чекбокс находится в меню «настройка ленты»). На вкладке «разработчик» можно найти инструменты управления макросами и элементы управления формами (кнопки, чекбоксы и т.д.). Новичку данный инструментарий на первых порах работы с excel скорее всего не понадобится, однако, знать о том, что такая вкладка существует, я считаю необходимо.

Некоторые аспекты использования стандартных инструментов

Недавно мои коллеги задались вопросом, как сделать в элементе группировки строк (вкладка данные, группа элементов «структура»), чтобы плюсик после группировки находился не снизу, а сверху т.к. если группируется много строк, приходится проматывать лист далеко «вниз». Это сделать можно, если нажать на маленький квадратик на ленте инструментов в группе «структура» и убрать галочку с пункта «итоги в строках под данными».

excel_gruppa

Самое интересное, что такой вопрос возник в связи с тем, что сотрудники не знали о возможности разворачивать и сворачивать группировку не только нажимая на [+] или [-], а просто нажимая на саму линию группировки. Если знать о таком факте, то расположение знака плюс или минус не имеет значения.

excel_group

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

Отдельного обсуждения заслуживают инструменты «Влияющие ячейки» / «Зависимые ячейки». Их используют для быстрого выявления данных, которые влияют на выделенную ячейку, а так же данных на которые данная ячейка влияет, но почему-то многие забывают, что это еще и быстрый переход к влияющим и зависимым ячейкам. Дело в том, что после применения данных функций появляются стрелки, в том числе и на другие листы, и мало кто догадывается, что на эти стрелки можно кликнуть быстрым двойным щелчком ЛКМ и перейти к желаемым ячейкам данных. Если ссылка ведет на другой лист – выпадает список с зависимыми листами. Пользуйтесь данным инструментом ЭТО УДОБНО.

excel_relations

Взаимодействие старых форматов файлов .xls и новых .xlsx

Многие из нас, наверняка, сталкивались с такой проблемой, как невозможность вставки листа одной книги (файла) в другой – это связано с тем, что файлы относятся к разным версиям Excel и соответственно имеют разное расширение файлов и количество строк и столбцов. Файлы в версиях до Excel 2007 имели формат .xls – двоичный формат файлов, поддерживающий 256 столбцов и 65536 строк на одном листе книги. Начиная с версии 2007 основным форматом файлов стал .xlsx, заархивированный xlm формат, поддерживающий уже 16384 столбца и 1048576 строки. Как видите разница значительная.Выход из этой ситуации – сохранить файл в желаемом формате через «сохранить как». Внимании, при конвертировании нового формата в старый можно потерять данные.

Ищем пропавшие ярлыки листов

Следующее с чем часто сталкиваются пользователи екселя – это отсутствие ярлыков листов. Тут может быть несколько вариантов. Первый вариант, который часто происходит в файлах, выгруженных из модулей 1C:Предприятие, например, оборотно-сальдовой ведомости по счету. Суть проблемы заключается в том, что полоса горизонтальной прокрутки растянута на всю ширину окна программы, и тем самым закрывает собою ярлыки листов. Соответственно надо навести курсор на левую границу горизонтальной прокрутки, зажать левую клавишу мыши и переместить границу вправо.

excel_invis_sheets1

Второй причиной отсутствия ярлыков может быть установленная настройка отображения книги. Жмем кнопку офис, кликаем «параметры Excel», в меню «дополнительно» ищем чекбокс «показывать ярлычки листов» — должна быть выставлена галочка.

Ну и третий вариант самый не тривиальный, отображение листов может быть отключено с помощью встроенного языка программирования Visual Basic for Applications (сокращенно VBA) и встроенной в MS Office оболочки (IDE) для работы с ним. Вызвать оболочку можно с помощью кнопки на ленте, которая находится на вкладке «разработчик», о которой мы писали выше, либо нажать сочетание клавиш alt+f11. Поверх окна екселя откроется оболочка VBA, не пугайтесь, убедитесь, что у вас отображается окно со свойствами объектов View -> Properties Window (быстрый вызов f4) и окно Project Explorer (см. там же, быстрый вызов Ctrl+R). В окне Project Explorer надо пройтись по всем вашим листам книги и проверить в окне свойств (Properties) параметр Visible (видимый), он должен иметь значение -1 – xlSheetVisible.

excel_invis_sheets2

Чуть не забыл, есть еще банальный случай, когда виден 1 лист, а 2й не виден – жмете ПКМ на видимом листе, выбираете из меню «отобразить», выбираете имя листа который хотите сделать видимым и жмете ОК. Других причин отсутствия ярлыков в книге я не знаю, если они вам известны, прошу в комменты.

Каретка

Мне часто встречались файлы, где в заголовке таблицы для переноса второго слова используют пробелы. Никогда так не делайте! Перевод каретки на следующую строку в одной ячейке осуществляется комбинацией alt+Enter и ни как иначе.

Изменение связи листов

Поехали дальше. Возьмем такой пример: у вас имеется книга, назовем ее (А), с двумя листами, на листе 1(А) данные, на листе 2(А) расчеты с ссылками на лист 1(А). Представим себе, что у вас появилась вторая книга (Б), в которой имеется лист 1(Б) с данными в точно такой же структуре (в тех же ячейках), что и на листе 1(А), но уже с другими значениями. Вопрос, как в книге (Б) создать такой же лист 2(Б) с расчетами? Если просто создать лист 2(Б) и скопировать формулы из листа 2(А), то в формулах останется связь на лист 1(А). Конечно, можно пойти по сложному пути – накопировать несколько фалов с книгой (А) и в каждый из них вставлять на лист 1(А) новые данные. Однако при таком способе можно наткнуться на проблему невозможности вставки данных, если форматирование листа 1(А) достаточно сложное (много объединенных строк и столбцов), не говоря уже о том, что такой способ трудоемкий по времени. Есть способ гораздо проще. В книгу (Б) копируем лист 2(А), на ленте идем в меню «данные», нажимаем «изменить связи», ищем связь на «книга A (файл)…», жмем изменить связь и выбираем тот файл в котором мы находимся т.е. книгу (Б), единственное условие – лист с данными 1(Б) должен иметь такое же наименование как и лист 1(А). Задача на подобие этой встречается очень многим, чаще всего анализируется какой-то массив данных, вы все рассчитали, уже готовы приступить к следующему заданию, и тут бац, вам звонят и говорят «ой, а у нас появились новые данные…посмотрите у себя на почте, мы вам выслали».

Трехмерные ссылки

Следующий пример связан с использованием трехмерных ссылок. Вдаваться в принцип работы данной структуры я не буду, посмотреть официальные разъяснения можно в справке екселя нажав f1 и введя в строку поиск «трехмерная ссылка». Лично я использую ее для суммирования бюджетов разных строительных объектов по направлениям СМР в компании. Формула суммирования при трехмерной ссылке выглядит следующем образом: 

=СУММ('лист1:лист8'!A1).

Одинарную кавычку при отсутствии пробелов в наименовании листов можно опустить. Данная формула суммирует все ячейки А1 с листа «лист1» по «лист8», т.е. заменяет собой формулу:

=лист1!A1+лист2!A1+…+лист8!A1

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

Двойная ссылка

Очень многие игнорируют такую формулу как «ДВССЫЛ» — двойная ссылка, между тем это мощнейший инструмент в анализе сходных по структуре листов в книге. Особенно эта формула удобна в связке с макросом, выводящим список листов в книге. Как пользоваться макросом я рассказывать не буду, вот его код:

Sub SheetList()
Dim sheet As Worksheet
Dim cell As Range
With ActiveWorkbook
    For Each sheet In ActiveWorkbook.Worksheets
        Set cell = Worksheets(1).Cells(sheet.Index, 1)
        .Worksheets(1).Hyperlinks.Add anchor:=cell, Address:="", SubAddress:="'" & sheet.Name & "'" & "!A1"
        cell.Formula = sheet.Name
    Next
End With
End Sub

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

=ДВССЫЛ("'"&A1&"'"&"!$D$8")

если в ячейке А1 находится текст с именем листа (который мы получили с помощью макроса), пусть будет «закупки», тогда данная формула выведет значение ячейки D8 с листа закупки, т.е. это аналог формулы:

=закупки!$D$8

(знак доллара говорит о том, что ссылка абсолютная, если в данном примере эти знаки убрать результат не изменится). Вы спросите, а что нам это дает, я же просто мог написать готовую формулу, без применения ДВССЫЛ? Все удобство заключено в том, что мне в последствии останется протянуть формулу вниз, и так как в столбце А находятся наименования листов, в следующей ячейке я получу значение ячейки D8 уже со следующего листа. Включаем воображение и представляем что у нас 100 листов. Я разве не сказал что ДВССЫЛ можно встраивать в ЛЮБУЮ формулу, просто заменяя в ней конструкцию «ЛИСТ!АдресЯчейки»? Вот один из моих реальных примеров:

=ДВССЫЛ("'"&D5&"'"&"!F"&ПОИСКПОЗ("iPhone";ДВССЫЛ("'"&D5&"'"&"!A:A");0))

В столбце D у меня находятся наименования листов из которых я хочу вытянуть данные, я знаю, что данные на всех листах книги находятся в столбце F. Представим что в данном столбце находится цена телефонов. Мне нужно получить цену iPhone. Наименования телефонов хранятся в столбце А каждого листа. Как же мне подставить к F номер строки в которой указана цена именно iPhone? Все просто — я опять использую ДВССЫЛ в связке с ПОИСКПОЗ. Разберем формулу по частям:

D5 — вытащит из ячейки наименование листа, например, «поставщик1»;
F — столбец в котором находятся данные с ценами телефонов;
ПОИСКПОЗ — ищет номер строки в котором находится значение iPhone;
ДВССЫЛ — формула внутри ПОИСКПОЗ которая говорит что слово iPhone нужно искать в массиве A:A, т.е. по сути в столбце А и делать это надо на листе, название которого хранится в ячейке D5, т.е. в нашем случае на листе «поставщик1».

Рассмотрим часть формулы:

ПОИСКПОЗ("iPhone";ДВССЫЛ("'"&D5&"'"&"!A:A");0)

Она найдет нам номер строки на листе «поставщик1» в которой по столбцу А находится слово iPhone. Пусть это будет строка 34. Вся эта сложная на вид часть формулы просто выдаст нам число 34.

Далее с помощью оператора соединения & присоединяем число 34 к нашему столбцу F, т.е. получим F34. Следующее действие, опять же с помощью &, присоединяем F34 к тексту из столбца D5, т.е. к слову «поставщик1». Итого получаем «поставщик1!F34» (обратите на восклицательный знак, он тоже пишется в формуле перед F). Вот и все, не так сложно. Если в ячейке D6 у меня будет слово «поставщик2«, то при протягивании формулы вниз я получу стоимость iPhone, но уже с листа «поставщик2». Не важно, что на листе «поставщик2» данные по iPhone располагаются уже в другой строке, например, в пятой, ведь наша формула сама находит этот номер сроки для каждого листа. Теперь я могу просто протащить формулу дальше и выбрать поставщика у которого самый дешевый iPhone. Круто ведь?

Сводные таблицы

Часто мне попадаются решения, использующие сводные таблицы, причем расчеты сделаны через «пень колено». Поясняю. Создается сводная таблица, а справа от нее необходимая пользователю форма отчета. Далее наблюдается следующая картина, например, необходимо сложить столбец А и В по строкам в сводной таблице. Напомню, что работать со сводной таблицей как с обыкновенным массивом данных нельзя, если вы в пустой ячейке нажмете равно, затем выберете А2, нажмете плюс и выберете B2, то вы увидите не привычную формулу вида =А2+В2, а формулу генерируемую сводной таблицей, начинающуюся со слов : 

ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ

Протянуть данную формулу вниз и получить столбец с суммой столбцов А и В по строкам не получится. Что делают особенно изворотливые пользователи? Они вручную прописывают (набивают на клавиатуре, а не указывают курсором мышки) в ячейку всем понятную формулу =А2+В2 и протягивают её вниз, в принципе, для временных расчетов этот метод можно использовать, но так делать не надо! Чем вам грозит такой подход? Представим, что в сводной таблице при обновлении данных появилась еще одна строка. В этом случае произойдет сдвиг элементов на строку ниже, допустим А2+В2 давало нам показатель стоимости теннисных мячиков, а после сдвига, будет давать стоимость телевизоров, т.к. в данном случае автоматического сдвига формулы не произойдет. Вы не заметите, что поменялась сводная таблица, и будете считать, что в ячейке у вас до сих пор отражена стоимость теннисных мячей. Если вам на выходе необходимо получить из сводной таблицы отформатированный отчет, котрый будет учитывать изменения в сводной, то правильней использовать формулу вида:

ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ (поле_данных;сводная_таблица; поле1; элем1; поле2; элем2;...)

Такая формула генерируется автоматически по ссылке на любую ячейку в сводной. Вместо элем1 (пусть это будет месяц «январь 2010») и элем2 (для примера возьмем «теннисный мяч») необходимо подставить ссылки, соответствующие данным полям, т.е. стираете «январь 2010» и вместо него ставите ссылку на ячейку в которой будет написано «январь 2010» . Стираете «теннисный мяч» и ставите вместо него ссылку на ячейку где написано текстом «теннисный мяч». В результате вы получите данные на пересечении «январь 2010″/»теннисный мяч». Спросите в чем фишка? В том, что вы можете делать выборки из сводной именно тех параметров, которые нужны. Допустим в сводной 100 позиций товаров со стоимостью в каждом конкретном месяце, но вам из них нужны только теннисные мячи и футболки. Делаете макет вашей таблицы с такими же названиями в шапке как в шапке сводной и наименованиями товаров в строках- как в сводной (это обязательно!) и для извлечения данных из сводной пишите формулу на подобии описанной выше. Дальше протягиваете формулу и получаете заполненную таблицу.

Разные формулы и другие тонкости Excel

Часто, начинающие пользователи екселя пытаются написать сложные древовидные логические структуры путем внедрения в формулу «ЕСЛИ» еще нескольких «ЕСЛИ» (я лично когда-то наступал на эти грабли), забывая, что у нас еще есть такие формулы как «И» и «ИЛИ». Они помогут вам избавится от лишних «ЕСЛИ», правда не от всех.

Еще одна формула, которая удостаивается малого внимания со стороны пользователей – формула СМЕЩ (смещение по координатам на N строк и N столбцов относительно заданной ячейки). Поверьте, это классная формула для работы с большими массивами информации, опять же, в связке с такими формулами как ПОИСКПОЗ, ВПР, ГПР, ИНДЕКС и т.д. позволяет творить просто чудеса.

О чем стоит еще упомянуть? В екселе существуют скрытые формулы, которые отсутствуют в выпадающем списке формул программы! Например, РАЗНДАТ.

СИНТАКСИС:
=РАЗНДАТ(нач_дата;кон_дата;код)

АРГУМЕНТЫ:
1. нач_дата — начальная дата.
2. кон_дата — конечная дата.
3. код — текстовое значение, которое указывает в каких единицах необходимо вернуть разницу дат.

И последняя не тривиальная проблема, на листе ничего нет, а файл весит много мегабайт и долго открывается. Причиной может служить наличие большого количества графических объектов, которые на первый взгляд кажутся элементами таблицы – например, решетка. Это часто происходит, когда таблица импортируются из программы FineReader, которая в свою очередь преобразовала данные таблицы представленной в виде рисунка. Жмем F5, затем выделить, ставим галочку напротив пункта меню «объекты» и нажимает ОК. Если найденные объекты нам не нужны, жмем DELETE на клавиатуре (удалить). Более грамотным будет использование инспектор документов, жмете меню -> подготовить -> инспектор документов. Данный инструмент выдаст не только количество объектов в документе, но и кол-во скрытых строк, листов и т.д.

Пожалуй, на этом остановимся. Моей задачей не было научить вас пользоваться всеми возможностями Excel, да это и не возможно в рамках одной статьи. Я лишь хотел показать некоторые «тонкости» в использовании данной программой, которые не очевидны на первый взгляд. Надеюсь, что эти знания помогут сэкономить вам уйму времени и решить нестандартные проблемы, которые рано поздно возникают практически у любого пользователя. А напоследок посоветую вам, если вы хотите стать профессионалом, почитать книгу «EXCEL 2010 Профессиональное программирование на VBA» Джона Уокенбаха, либо записаться на курсы по VBA в своем городе (в Москве лидером является центр «Специалист» при Бауманке) и почаще заглядывать на сайт http://www.planetaexcel.ru Удачи.

4 комментария

Добавить комментарий для Алексей Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *