SQL запросы в Microsoft Excel
SQL – популярный язык программирования, который применяется при работе с базами данных (БД). Хотя для операций с базами данных в пакете Microsoft Office имеется отдельное приложение — Access, но программа Excel тоже может работать с БД, делая SQL запросы. Давайте узнаем, как различными способами можно сформировать подобный запрос.
Создание SQL запроса в Excel
Язык запросов SQL отличается от аналогов тем, что с ним работают практически все современные системы управления БД. Поэтому вовсе не удивительно, что такой продвинутый табличный процессор, как Эксель, обладающий многими дополнительными функциями, тоже умеет работать с этим языком. Пользователи, владеющие языком SQL, используя Excel, могут упорядочить множество различных разрозненных табличных данных.
Способ 1: использование надстройки
Но для начала давайте рассмотрим вариант, когда из Экселя можно создать SQL запрос не с помощью стандартного инструментария, а воспользовавшись сторонней надстройкой. Одной из лучших надстроек, выполняющих эту задачу, является комплекс инструментов XLTools, который кроме указанной возможности, предоставляет массу других функций. Правда, нужно заметить, что бесплатный период пользования инструментом составляет всего 14 дней, а потом придется покупать лицензию.

-
После того, как вы скачали файл надстройки xltools.exe, следует приступить к его установке. Для запуска инсталлятора нужно произвести двойной щелчок левой кнопки мыши по установочному файлу. После этого запустится окно, в котором нужно будет подтвердить согласие с лицензионным соглашением на использование продукции компании Microsoft — NET Framework 4. Для этого всего лишь нужно кликнуть по кнопке «Принимаю» внизу окошка.

В правой области окна, которая занимает его большую часть, располагается сам редактор SQL запросов. В нем нужно писать программный код. Наименования столбцов выбранной таблицы там уже будут отображаться автоматически. Выбор столбцов для обработки производится с помощью команды SELECT. Нужно оставить в перечне только те колонки, которые вы желаете, чтобы указанная команда обрабатывала.
Далее пишется текст команды, которую вы хотите применить к выбранным объектам. Команды составляются при помощи специальных операторов. Вот основные операторы SQL:
- ORDER BY – сортировка значений;
- JOIN – объединение таблиц;
- GROUP BY – группировка значений;
- SUM – суммирование значений;
- DISTINCT – удаление дубликатов.
Кроме того, в построении запроса можно использовать операторы MAX, MIN, AVG, COUNT, LEFT и др.
В нижней части окна следует указать, куда именно будет выводиться результат обработки. Это может быть новый лист книги (по умолчанию) или определенный диапазон на текущем листе. В последнем случае нужно переставить переключатель в соответствующую позицию и указать координаты этого диапазона.
Способ 2: использование встроенных инструментов Excel
Существует также способ создать SQL запрос к выбранному источнику данных с помощью встроенных инструментов Эксель.
- Запускаем программу Excel. После этого перемещаемся во вкладку «Данные».

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

- Запускается Мастер подключения данных. В перечне типов источников данных выбираем «ODBC DSN». После этого щелкаем по кнопке «Далее».

- Открывается окно Мастера подключения данных, в котором нужно выбрать тип источника. Выбираем наименование «MS Access Database». Затем щелкаем по кнопке «Далее».

- Открывается небольшое окошко навигации, в котором следует перейти в директорию расположения базы данных в формате mdb или accdb и выбрать нужный файл БД. Навигация между логическими дисками при этом производится в специальном поле «Диски». Между каталогами производится переход в центральной области окна под названием «Каталоги». В левой области окна отображаются файлы, расположенные в текущем каталоге, если они имеют расширение mdb или accdb. Именно в этой области нужно выбрать наименование файла, после чего кликнуть на кнопку «OK».

- Вслед за этим запускается окно выбора таблицы в указанной базе данных. В центральной области следует выбрать наименование нужной таблицы (если их несколько), а потом нажать на кнопку «Далее».

- После этого открывается окно сохранения файла подключения данных. Тут указаны основные сведения о подключении, которое мы настроили. В данном окне достаточно нажать на кнопку «Готово».

- На листе Excel запускается окошко импорта данных. В нем можно указать, в каком именно виде вы хотите, чтобы данные были представлены:
- Таблица;
- Отчёт сводной таблицы;
- Сводная диаграмма.
Выбираем нужный вариант. Чуть ниже требуется указать, куда именно следует поместить данные: на новый лист или на текущем листе. В последнем случае предоставляется также возможность выбора координат размещения. По умолчанию данные размещаются на текущем листе. Левый верхний угол импортируемого объекта размещается в ячейке A1.
Способ 3: подключение к серверу SQL Server
Кроме того, посредством инструментов Excel существует возможность соединения с сервером SQL Server и посыла к нему запросов. Построение запроса не отличается от предыдущего варианта, но прежде всего, нужно установить само подключение. Посмотрим, как это сделать.

- Запускаем программу Excel и переходим во вкладку «Данные». После этого щелкаем по кнопке «Из других источников», которая размещается на ленте в блоке инструментов «Получение внешних данных». На этот раз из раскрывшегося списка выбираем вариант «С сервера SQL Server».
- Происходит открытие окна подключения к серверу баз данных. В поле «Имя сервера» указываем наименование того сервера, к которому выполняем подключение. В группе параметров «Учетные сведения» нужно определиться, как именно будет происходить подключение: с использованием проверки подлинности Windows или путем введения имени пользователя и пароля. Выставляем переключатель согласно принятому решению. Если вы выбрали второй вариант, то кроме того в соответствующие поля придется ввести имя пользователя и пароль. После того, как все настройки проведены, жмем на кнопку «Далее». После выполнения этого действия происходит подключение к указанному серверу. Дальнейшие действия по организации запроса к базе данных аналогичны тем, которые мы описывали в предыдущем способе.
Как видим, в Экселе SQL запрос можно организовать, как встроенными инструментами программы, так и при помощи сторонних надстроек. Каждый пользователь может выбрать тот вариант, который удобнее для него и является более подходящим для решения конкретно поставленной задачи. Хотя, возможности надстройки XLTools, в целом, все-таки несколько более продвинутые, чем у встроенных инструментов Excel. Главный же недостаток XLTools заключается в том, что срок бесплатного пользования надстройкой ограничен всего двумя календарными неделями.
Как сформировать SQL запросы в Excel?
Представьте себе ситуацию, Вы получили целевую выборку из одной базы данных, но для полноты картины, как всегда, нужны дополнительные данные. Проблема может быть в том, что нужная информация хранится в другой базе данных и возможности создать на ней свою таблицу нет, подключиться используя link тоже нельзя, да и количество элементов, по которым нужно получить данные, несколько больше, чем допустимое на данном источнике. Вот и получается, что возможность написать SQL запрос и получить нужные данные есть, но написать придется не один запрос, а потом потратить время на объединение полученных данных.
Выйти из подобной ситуации поможет Excel.
Уверен, что ни для кого не секрет, что MS Excel имеет встроенный модуль VBA и надстройки, позволяющие подключаться к внешним источникам данных, то есть по сути является мощным инструментом для аналитики, а значит идеально подходит для решения подобных задач.
Для того чтобы обойти проблему, нам потребуется таблица с целевой выборкой, в которой содержатся идентификаторы, по которым можно достаточно корректно получить недостающую информацию (это может быть уникальный идентификатор, назовем его ID, или набор из данных, находящихся в разных столбцах), ПК с установленным MS Excel, и доступом к БД с недостающей информацией и, конечно, желание получить ту самую информацию.
Создаем в MS Excel книгу, на листе которой размещаем таблицу с идентификаторами, по которым будем в дальнейшем формировать запрос (если у нас есть уникальный идентификатор, для обеспечения максимальной скорости обработки таблицу лучше представить в виде одного столбца), сохраняем книгу в формате *.xlsm, после чего приступаем к созданию макроса.
Через меню «Разработчик» открываем встроенный VBA редактор и начинаем творить.
Sub job_sql() — Пусть наш макрос называется job_sql.
Пропишем переменные для подключения к БД, записи данных и запроса:
Опишем параметры подключения:
Объявим процедуру свойства, для присвоения значения:
Вот теперь можно приступать непосредственно к делу.
Как вы уже поняли конечное значение i=1000 здесь только для примера, а в реальности конечное значение соответствует количеству строк в Вашей таблице. В целях унификации можно использовать автоматический способ подсчета количества строк, например, вот такую конструкцию:
Тогда открытие цикла будет выглядеть так:
Как я уже говорил выше MS Excel является мощным инструментом для аналитики, и возможности Excel VBA не заканчиваются на простом переборе значений или комбинаций значений. При наличии известных Вам закономерностей можно ограничить объем выгружаемой из БД информации путем добавления в макрос простых условий, например:
Итак, мы определились с объемом и условиями выборки, организовали подключение к БД и готовы формировать запрос. Предположим, что нам нужно получить информацию о размере ежемесячного платежа [Ежемесячный платеж] из таблицы [payments].[refinans_credit], но только по тем случаям, когда размер ежемесячного платежа больше 0
Если значений для формирования запроса несколько, соответственно прописываем их в запросе:
В целях самоконтроля я обычно записываю сформированный макросом запрос, чтобы иметь возможность проверить его корректность и работоспособность, для этого добавим вот такую строчку:
Запросы в Excel. Часть 1
Этой статьей я открываю цикл про выполнение запросов в Excel и оптимизацию работы с крупными таблицами Excel.
Для работы с большими массивами данных, представляющими собой таблицы с многими полями и большим количеством строк, но для ведения которых нет смысла покупать Access, удобно использовать таблицы Excel и делать из них выборки.
Вначале определимся, о каких таблицах идет речь. Постараюсь без лишних рассуждений. Достаточно часто встречаются случаи, когда есть много информации, которую удобно разместить в таблицу, но она получается очень большой. И это делает не удобным вытаскивание из неё части данных, которые периодически нужны для работы. Стоит отметить, что самый оптимальный вариант — это таблицы, в которых каждая строка содержит исчерпывающую информацию о некотором объекте. Например, информацию о сотрудниках или характеристиках изделия. Пожалуй, для наглядности будем пользоваться таблицей о сотрудниках, это классика жанра, понятная многим.
Пускай наша таблица содержит такие поля:
- Таб_N
- Фамилия
- Имя
- Отчество
- Пол
- Дата рождения
- ИНН
- Должность
- Отдел
- Последний отпуск (дата)
- Прием на работу (дата)
- Уволен (дата)
Думаю, для иллюстрации работы этого будет достаточно.
Теперь немного напомню, какие требования к таблице стоит соблюдать:
- Она не упорядочена сверху вниз — поэтому я не вводил нумерацию, а оставил табельный номер. Новых сотрудников можно просто добавлять снизу или даже куда-нибудь в середину.
- Нет одинаковых строк — у нас в любом случае за это отвечает табельный номер.
- Данные в столбцах должны представлять собой логически неделимую информацию. Хорошо видно на Ф.И.О. Если мы укажем всё в одном столбце, то найти человека или отсортировать данные по имени-отчеству будет проблематично.
Ещё один момент! Этой таблице нужно присвоить ИМЯ. Допустим, банально, но привычно — Кадры. Я имею в виду не имя файла, а задать имя для таблицы средствами редактора. Это делается командой Имя таблицы, расположенной на закладке Конструктор таблицы в области Свойства. Благодаря имени мы сможет обращаться к таблице из других файлов (книг) Excel и видеть её поля и данные.
Итак, стоит помнить, что наша таблица будет аскетична и иметь статус основного хранилища актуальной информации, к которому мы будем обращаться с целью извлечения нужных данных. Поэтому её надо аккуратно заполнять и делать резервные копии.
Извлеченная информация будет по запросу выбираться и переноситься в другие файлы Excel и там приводиться к красивому виду с сортировками, выделениями цветом и шрифтами, дабы ее удобнее было воспринимать, анализировать и строить отчеты.
Вот такую таблицу мы получим:

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

Рассмотрим самые часто используемые: с листа книги (таблицы/диапазона), из книги, из папки, из Google Таблицы.
Создание запроса к данным листа книги
Откройте лист Excel с данными:

Вкладка Данные ► Получить данные ► Из других источников ►Из таблицы/диапазона:


Нажмите ОК, откроется окно редактора Power Query:

В окне Параметры запроса ►Свойства ► Имя, можно изменить название запроса.
Загрузите запрос, окно редактора запросов, Главная ►Закрыть и загрузить ► Закрыть и загрузить в. :

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

Создание запроса из книги
Вкладка Данные ► Получить данные ► Из файла ► Из книги:

В открывшемся окне укажите путь к файлу и нажмите Импорт:

В окне Навигатор выберите Лист или Таблицу, нажмите Преобразовать данные:

Создание запроса из папки
Вкладка Данные ► Получить данные ► Из файла ►Из папки:

В открывшемся окне укажите путь к папке и нажмите ОК:

Нажмите Преобразовать данные:

В редакторе удалите все столбцы, кроме двух первых, для этого выделите лишние столбцы зажав SHIFT, правая кнопка мыши по шапке столбца (пкм) ► Удалить столбцы:

Создайте пользовательский столбец, вкладка Добавление столбца ► Настраиваемый столбец, прописав в нём формулу Excel.Workbook([Content]):

В созданном столбце, выберите вариант Data, уберите галку Использовать исходное имя столбца как префикс ► ОК:


Преобразуйте названия строк в заголовки столбцов, Главная ► Использовать первую строку в качестве заголовков:

Удалите повторяющиеся заголовки, используя фильтр, сняв галку:

Удалите лишние столбцы, пкм ► Удалить столбцы;
Создание запроса из Google Таблиц
Копируйте ссылку на файл в настройках доступа:

Создайте запрос, Данные ► Получить данные ►Из других источников ► Из интернета:

Укажите путь к файлу, измените окончание ссылки с /edit?usp=sharing на /export и нажмите ОК:

В окне Навигатор выберите Лист и нажмите Преобразовать данные:

Проверить, что получилось: выберите в окне Запросы и подключение ► пкм ► Загрузить в. :


635 постов 14.5K подписчиков
Правила сообщества
2. Публиковать посты соответствующие тематике сообщества
3. Проявлять уважение к пользователям
4. Не допускается публикация постов с вопросами, ответы на которые легко найти с помощью любого поискового сайта.
По интересующим вопросам можно обратиться к автору поста схожей тематики, либо к пользователям в комментариях
Важно — сообщество призвано помочь, а не постебаться над постами авторов! Помните, не все обладают 100 процентными знаниями и навыками работы с Office. Хотя вы и можете написать, что вы знали об описываемом приёме раньше, пост неинтересный и т.п. и т.д., просьба воздержаться от подобных комментариев, вместо этого предложите способ лучше, либо дополните его своей полезной информацией и вам будут благодарны пользователи.
Утверждения вроде «пост — отстой», это оскорбление автора и будет наказываться баном.

@ExceLifeHack можешь помочь, пожалуйста. У меня есть готовый запрос (только как подключение). Я хочу построить умную таблицу на основе этого запроса, когда я нажимаю «Существующие подключения-выбираю нужный запрос-открыть-таблица» у меня создается дубликат этого запроса. Можно ли выгружать на базе одного запроса без создания этих дубликатов?
Таблица Excel лежит в SharePoint’e. Как вытащить из неё данные? Пробовал по куче статей из тырнетика — ничерта не получается.

Вы недооформились! (Снова о кадровиках)
Устроился на новую работу. В первый день на оформлении выдали кучу документов на подпись: и согласие на обработку персональных данных, и заявление на перечисление зарплаты на карту (с реквизитами), и трудовой договор, и ознакомление во всех журналах со всеми регламентами и инструктажами. Пол дня всё это заняло.
День на третий видит меня кадровичка в коридоре и издалека на всю контору кричит:
К: VanyaDW, подождите, подойдите ко мне! Вы недооформились!
Я, естественно, в непонятках, спрашиваю, что это значит?
К: Вы не предоставили (!) заявление с банковскими реквизитами, бухгалтерия теперь не знает, куда вам зарплату перечислять!
Я: Что значит «я не предоставил»?
А меня разозлило так.
Я: Вы серьезно думаете, что мне дали бланк, а я его принципиально заполнять не стал? Чтобы предприятие мне зарплату не могло заплатить? Может быть, это вы просто предоставленный документ потеряли?
К: Ой, ну может быть, сотрудница просто не приложила! Вы только так не нервничайте!
Нравится мне этот подход: не «Мы — курицы, ваш документ потеряли, извините. «, а «Вы недооформились!».

Ответ на пост «Кадровики-формалисты на страже уровня зарплаты»
Год назад уволился по сокращению отдела, бюджетная организация. 21 год проработал. Уволился с радостью, 40 с лишним офицального трудового стажа, из них 15 лет Крайнего Севера. Пенсионер МВД с 1998 г. Никуда не устроился и не собираюсь. Что бы там не пели терешковы и им подобные, ранняя заработанная неплохая пенсия — это прекрасно.
При увольнении кадры сделали всё правильно, но в бухгалтерии молодая расчетчица насчитала выплаты по сокращению в полтора раза меньше, чем положено по ТК. Устные претензии бухгалтерия не приняла — «программа так считает».
Ранее я писал жалобы своему руководителю про график работы, оплату сверхурочных, несвоевременную выплату ночных. Вопросы решались положительно для меня. Написал и на этот раз, выплатили всё как положено.
Недавно звонок от приятеля, там работает. В ходе разговора сказал, что зам. (тот вообще под 30 лет там проработал) вспоминал меня «добрым» словом, мол, был такой редиска-жалобщик, и уволить его до сокращения никак не получалось, и премии лишить никак.
Мне было приятно.

Если человек не подошёл к нам в компанию, так , что , он не человек?
Я тот самый сотрудник отдела кадров, который всегда перезванивает кандидатам, которые не подошли на открытую вакансию. Делать мне это приходится либо по дороге домой, либо уже дома, так как в кабинете или в здании офиса я это делать не могу. Видите ли, политика очень известной компании не позволяет себе такие «слабости», а я прекрасно помню себя, когда пропускала неплохие варианты из-за того, что надеялась на звонок из более хорошего места.

Ответ Faruga в «Хобби при собеседовании»
А я как-то проходила собеседование в одну фирму. Уже пообщалась с двумя руководителями, определили, что меня надо в другой отдел, пообщалась с руководителем этого отдела. В конце решили направить меня к генеральному директору, тоже пообщаться познакомиться. Не помню что он у меня спрашивал, как-то просто непринуждённо поговорили, а потом он говорит что всегда задаёт соискателям один вопрос: кубический корень из 27. Я конечно ответила) Работа если что не тесно связана с математикой. Видимо так он проверяет насколько человек свой. В эту компанию меня взяли, но я в итоге осталась на предыдущей работе, потому что когда там узнали, что я ухожу, смогли уговорить остаться.

Скрипт для экселя- ссылка в тайминг
Всем добрый день.
Хочу обратиться к Пикабу-разуму в вопросе Офиса.
Для размещения поста на Пикабу имеется заранее подготовленная таблица в Эксель.
первая колонка- тайминг новости, вторая колонка — тело новости, третья колонка — ссылка на новость, что является обязательным в теге «политика».
в сильно упрощенном виде это выглядит банально:

До недавних нововведений в редакторе постов Пикабу, CSV сохраненный из Экселя втаскивался в редактор через скрипт в обозревателе. И получался хорошо известный некоторым вариант

НО в свете все известных событий (прогресс не остановить!) скрипт отвалился и судя по консилиуму специалистов воскрешению не подлежит, методологически так сказать.
Отсюда простой вопрос: можно ли скриптом или как-то иначе автоматизировать в Экселе или в ОпенОфисе вставку ссылок в тайминги?
То есть мы из 3 колонок должны получить две.
Для интересующихся — в обычном финальном Пузыре 60-90 новостей.
Вставлять руками можно, но ЛЛ меня и так гнобит
Ответ на пост «Работничек»
Дают задачу для доработки бекенда. Там простой фикс, говорили они. Думаешь, сейчас сделаешь за 20 минут и готово, но там:
1. Название задачи «Нужно починить сайт»
2. Есть сваггер, последнее обновление год назад
3. Схема запросов, ответов и описание никто не актуализировал
4. Описание задачи максимально абстрактное, очевидно, писал менеджер
5. Разработчик, который писал код, уволился полгода назад
6. Менеджер ушёл в отпуск
7. Дедлайн через пару дней в пятницу
8. У тебя испытательный срок


Работничек


EXCEL — ЭТИ СТРАШНЫЕ МАКРОСЫ – НАЧАЛО
Я решил с двух ног ворваться в тему макросов.

Кто-то про них слышал, кто-то даже видел, отдельные сверхразумы их даже использовали. Сегодня будет ознакомительный пост: что это вообще такое и как с этим начать работать. Обратите внимание – этот пост тех, кто не знает, что такое макросы и никогда с ними не работал
Первым делом нужно включить вкладку «Разработчик». По умолчанию в Excel ее спрятали, чтобы не взорвать мозг юзерам. Идем в Параметры -> Настройка ленты -> Основные вкладки -> Разработчик (поставить галочку).

Теперь идем в эту вкладку, нажимаем «Записать макрос» выбираем имя жмакаем «ок». Все, теперь любые действия в Excel надежным образом записываются.

Давайте теперь что-то сделаем. На пример поменяем заливку ячейки А1, в ячейку A2 напишем значение «Мама, я программист», а в ячейке А3 пропишем формулу текущей даты «=Сегодня()»

Останавливаем запись макроса. Нажимаем иконку «Макросы», выбираем наш макрос как мы его обозвали, нажимаем кнопку «изменить».

Появляется окно Microsoft Visual Basic for Applications. Кстати оно также вызывается комбинацией клавиш (Alt + F11) У меня почему-то вызывается только левым Altом, а правым нет, видимо намекая на то что для написания макросов лучше иметь 2 руки (хотя я и одной нажать могу). Появился редактор языка VBA – это язык, который написан специально под офис чтобы на нем писать макросы. В основном окне видим саму эту запись, которую автоматически сделал Excel.
Sub Макрос2()
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range(«A2»).Select
ActiveCell.FormulaR1C1 = «Мама, я программист»
Range(«A3»).Select
ActiveCell.FormulaR1C1 = «=TODAY()»
Range(«A4»).Select
End Sub
Такой инструмент автоматической записи называется макрорекордер, по началу он хорошо помогает вообще понять, что происходит. Теперь давайте разберемся как выглядит записанный макрос (записанный макрос у автора этой статьи может различаться с записанным макросом у вас поскольку форма записи с макроса зависит от последовательности нажатий, способах ввода информации и криворукости пользователь, в любом случае автор этой статьи снимает с себя всю ответственность за любые действия которые привели или могут привести к изменению годовых отчетов, искажению пространственное – временного континуума и прочих непредвиденных вымираний.)
Теперь давайте разбираться что делает этот макрос
Sub Макрос2()
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
(Весь этот кусок от начала говорит нам о том, что с тем элементом что был выделен ранее происходит некоторое дерьмо, в том числе изменение цвета. Вот там, где Color = 255. Все остальное это параметры заливки, которые по итогу не менялись, но макрорекордер решил их тоже записать, на всякий. Это связано с внутренними особенностями работы excel как я понял. Вообще привыкайте к тому что макрорекордер пишет много того что потом вообще можно удалить. Конструкция With – End With позволяет делать несколько действий с одним объектом, на пример выше берется объект Selection.Interior, то есть фон выбранной области и ряду параметров этой заливки назначаются конкретные значения. То есть With нужен для облегчения записи кода, чтобы Selection.Interior не писать вначале каждой строчки.
Range(«A2»).Select –выделяем ячейку «A2»
ActiveCell.FormulaR1C1 = «Мама, я программист» – пишем в ячейку значение
Range(«A3»).Select – выделяем ячейку «А3»
ActiveCell.FormulaR1C1 = «=TODAY()» –пишем в ячейку формулу
Range(«A4»).Select – зачем то выделяем ячейку А4.
End Sub
Теперь при создании нового листа и запуске этого макроса он будет делать все то же самое.
Тут стоит понимать, что половину того что записал макрос можно опустить, так как нам важен результат, а не путь по которому к этому результату пришли, а макрорекордер записывает именно путь. На пример вместо всей конструкции With можно записать
так как мы точно знаем, что хотим поменять только цвет в ячейке А1. Также вместо того чтобы выделять ячейку, а потом в активной ячейке писать формулу можно сразу записать нужное значение в ячейку
Range(“A2”).Value = ”Мама, я программист”
или писать формулу как в третей ячейке
С формулами и значениями лично мне не понятно, как excel их интерпретирует, но в макрорекордре он записывает любой ввод в ячейку как ввод формулы. Благо лично у меня при написании макросов не возникает необходимости писать формулы в ячейки. На пример вместо вставки формулы как это было выше можно написать Range(“A3”).Value = Date(), тогда макрос вставит сразу текущую дату в ячейку как значение.
Опытные макроделы пишут макросы сразу без их записи макрорекордером, но это полезный инструмент для самостоятельного изучения при написании макросов: если не знаешь, что как делается в VBА то запускаешь и делаешь, потом смотришь что он там написал.
Теперь давайте напишем какой ни будь полезный макрос, я буду писать строчки и как можно подробнее их комментировать. Комментарии от программы отделяются символом «‘», он ставится вначале комментария. Прошу учесть, что я самоучка и многого не знаю, и просто напишу так ка делаю это сам, возможно есть более изящные решения. Напоминаю, что это просто ознакомительный опус для тех, кто не в зуб ногой.
Sub Colorization()
‘начало нашего макроса и его название
Dim x As Integer
‘объявляем переменную х типа интеджер, это тип для целых чисел от -32 768 до 32 767 (2 байта),
‘она нам нужна для перебора ячеек
For x = 1 To ActiveSheet.UsedRange.Rows.Count
‘перебираем х от 1 до конца использованной части листа, то есть не весь лист, а там где есть данные.
‘Тут цикл For повторяется от этой строки до строки Next x, которая прописана ниже
If Cells(x, 1).Value = «красный» Then Cells(x, 1).Interior.Color = RGB(255, 0, 0)
‘если значение в ячейке равно «красный» то закрашиваем ячейку в красный цвет. Функция If выполняет часть
‘после Then если условие между If и Then верно. Так как у нас необходимое действие занимает одну
‘строку можно писать в таком виде, если же действий несколько применяется конструкция:
‘If … Then
‘…
‘…
‘End If
If Cells(x, 1).Value = «зеленый» Then Cells(x, 1).Interior.Color = RGB(0, 255, 0)
‘как выше только в зеленый цвет
If Cells(x, 1).Value = «синий» Then Cells(x, 1).Interior.Color = RGB(0, 0, 255)
‘в синий цвет
Next x ‘берем следующее значение х, конец цикла For, который мы начали выше
End Sub ‘конец макроса
Как работает этот макрос: берет первый столбец, сначала 1 ячейку, смотрит что в ней написано, и если это равно «красный», «зеленый» или «синий», то красит фон ячейки в этот цвет, если нет по пропускает. Потом берет вторую и т. д. до конца активной части текущего листа.
Для проверки работы макроса нам нужен лист, где в первом столбце будут случайным образом прописаны цвета «красный», «зеленый», «синий». Запускаем макрос – когда он отработает ячейки будут раскрашены:

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