Перейти к содержимому

Ноябрь 2015

Извлечение адреса электронной почты из ячейки, содержащей другой текст

Это глава из книги Билла Джелена Гуру Excel расширяют горизонты: делайте невозможное с Microsoft Excel.

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

Решение: проблему можно решить с помощью макроса, пользовательской функции или мегаформулы.

Макрос

В основе макроса лежит функция VBA Split. Допустим, что ячейка содержит текст Write to lora@mrexcel.com to book a seminar. Если передать этот текст в функцию Split и указать, что текст следует разбить на элементы, разделенные пробелом – x = Split(cell.Value, " ") – VBA вернет массив, где каждое слово будет элементом массива. На рис. 1 показан массив x после использования функция Split.

Рис. 1. Функция Split возвращает массив, где каждое слово будет элементом массива

Рис. 1. Функция Split возвращает массив, где каждое слово будет элементом массива

Подробнее »Извлечение адреса электронной почты из ячейки, содержащей другой текст

Создание макроса обработчика событий

Это глава из книги Билла Джелена Гуру Excel расширяют горизонты: делайте невозможное с Microsoft Excel.

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

Рис. 1. Для доступа к коду объекта ThisWorkbook кликните на ней правой кнопкой мыши и выберите View Code

Рис. 1. Для доступа к коду объекта ThisWorkbook кликните на ней правой кнопкой мыши и выберите View Code

Подробнее »Создание макроса обработчика событий

Создание обычного макроса

Это глава из книги Билла Джелена Гуру Excel расширяют горизонты: делайте невозможное с Microsoft Excel.

Задача: вы нашли интересный макрос на сайте MrExcel или Планета Excel. Ваша книги Excel в настоящее время не имеют каких-либо макросов. Как вставить макрос в книгу?

Решение: вы можете ввести обычный макрос в модуль в редакторе VBA. Откройте книгу Excel, в которой хотите сохранить макрос. Перейдите в редактор VBA, нажав Alt+F11 или пройдите по меню РАЗРАБОТЧИК –> Visual Basic (редактор VBA не русифицирован). В редакторе VBA пройдите по меню Insert –> Module (рис. 1).

Рис. 1. Создание нового модуля VBA

Рис. 1. Создание нового модуля VBA

Подробнее »Создание обычного макроса

Запуск макроса иконкой

Это глава из книги Билла Джелена Гуру Excel расширяют горизонты: делайте невозможное с Microsoft Excel.

Задача: в двух предыдущих заметках мы рассказали, как запускать макросы клавиатурными сокращениями и кнопками, расположенными на листе Excel. Можно ли запустить макрос значком на панели инструментов?

Решение: почему-то при переходе с версии Excel 2003 на 2007 Microsoft уменьшил возможности использования иконок для запуска макросов. В Excel 2007 остался единственный способ (кроме кода VBA) использования иконок – добавление кнопки макроса на панель быстрого доступа. Выполните следующие действия.

Кликните правой кнопкой мыши в любом месте ленты и выберите Настройка панели быстрого доступа (рис. 1).

Рис. 1. Запуск настройки панели быстрого доступа

Рис. 1. Запуск настройки панели быстрого доступа

Подробнее »Запуск макроса иконкой

Запуск макроса кнопкой

Это глава из книги Билла Джелена Гуру Excel расширяют горизонты: делайте невозможное с Microsoft Excel.

Задача: в предыдущей заметке мы рассказали, как запускать макросы клавиатурными сокращениями. Можно ли для этой цели использовать кнопки на листе?

Решение: существует множество способов запустить макрос кнопкой (рис. 1).

Рис. 1. Вы можете запустить макрос с помощью любого из этих элементов

Рис. 1. Вы можете запустить макрос с помощью любого из этих элементов

Подробнее »Запуск макроса кнопкой

Назначение макросу сочетания клавиш

Это глава из книги Билла Джелена Гуру Excel расширяют горизонты: делайте невозможное с Microsoft Excel.

Задача: вы записали макрос, но его запуск через меню занимает несколько дополнительных кликов. Нельзя ли этот процесс как-то ускорить?

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

Рис. 2. Диалоговое окно Запись макроса

Рис. 1. Сочетание клавиш для запуска макроса не определено

Подробнее »Назначение макросу сочетания клавиш

Создание личной книги макросов

Это глава из книги Билла Джелена Гуру Excel расширяют горизонты: делайте невозможное с Microsoft Excel.

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

Решение: в Excel 2007 и более поздних версиях выполните следующие действия:

Откройте любую рабочую книгу или создайте новую (Ctrl+N).

В нижнем левом углу окна Excel справа от слова ГОТОВО в строке состояния вы найдете значок записи макроса (рис. 1). Щелкните по нему.

Рис. 1. Пиктрограмма записи макроса является одной из немногих иконок вне ленты

Рис. 1. Пиктограмма записи макроса является одной из немногих иконок вне ленты

Подробнее »Создание личной книги макросов

Задание координат объекта DataLabel (подписи данных на диаграмме)

Это глава из книги Билла Джелена Гуру Excel расширяют горизонты: делайте невозможное с Microsoft Excel.

Задача: объект DataLabel (метка подписи данных на диаграмме) не имеет, ни собственной высоты, ни ширины, и Excel не позволяет пользователю изменять его размер. В некоторых ситуациях вам может потребоваться определить эти свойства. Например, когда подписи наезжают друг на друга (рис. 1).

Рис. 1. Вы хотите узнать высоту и ширину объекта DataLabel для точки (210; 414)

Рис. 1. Вы хотите узнать высоту и ширину объекта DataLabel для точки (210; 414)

Подробнее »Задание координат объекта DataLabel (подписи данных на диаграмме)

Создание сводной таблицы на основе нескольких листов

Это глава из книги Билла Джелена Гуру Excel расширяют горизонты: делайте невозможное с Microsoft Excel.

Задача: у вас данных больше, чем может поместиться на одном листе, или данные по иным причинам распределены на нескольких листах (например, один месяц – один лист, рис. 1, или один отдел – один лист). Вы хотите создать сводную таблицу из данных, распределенных между несколькими листами. В старых версиях Excel функция консолидации работает, мягко выражаясь, странно (см., Сводная таблица на основе нескольких листов). Начиная с Excel 2013 функция консолидации значительно улучшена (см. Сводная таблица на основе нескольких листов или диапазонов консолидации). Книга Джелена вышла в 2009 г., так что метод, предложенный в настоящей заметке, возможно, и не представляет значительной практической ценности. Однако, как я уже упоминал ранее, материалы Джелена методически интересны сами по себе, поэтому я счел полезным перевести и эту главу.

Рис. 1. Исходные данные расположены на пяти листах

Рис. 1. Исходные данные расположены на пяти листах

Подробнее »Создание сводной таблицы на основе нескольких листов

Добавление формул в рисунки SmartArt

Это глава из книги Билла Джелена Гуру Excel расширяют горизонты: делайте невозможное с Microsoft Excel.

Задача: для поклонников Excel одним из разочарований является статичность текста диаграмм SmartArt. Штатными средствами нельзя сделать так, чтобы содержание текста диаграммы SmartArt определялось динамически на основе формул.

Решение: вы можете пойти в обход; используйте инструмент SmartArt для построения диаграммы, преобразуйте диаграмму в фигуру, и лишь после этого примените формулы к тексту фигур.

На рис. 1 запрос к базе данных продаж, расположенной в столбцах А:С, возвращает в диапазон G4:G6 суммарные продажи по каждому агенту. Для этого используется функция СУММЕСЛИ. Например, в ячейке G4 формула: =СУММЕСЛИ($A$4:$A$204;F4;$C$4). Любопытно, что в качестве третьего аргумента – диапазона суммирования – используется указание на одну ячейку $C$4, а не на диапазон $C$4: $С$204. В ячейках Е4:Е6 используется функция РАНГ. Например, в ячейке Е4 формула: =РАНГ(G4;$G$4:$G$6). В диапазоне Е8:G10 те же результаты представлены по рангу. Для этого использованы формулы на основе функции ВПР (подробнее см. Использование ВПР для решения общих проблем, параграф Сортировка с помощью формулы). Эти результаты являются полезными, но им не хватает визуального эффекта.

Рис. 1. Формулы дают полезную, но визуально бедную информацию

Рис. 1. Формулы дают полезную, но визуально бедную информацию

Подробнее »Добавление формул в рисунки SmartArt