Приветствуем, дорогие читатели! Вы тратите часы на однообразное копирование, форматирование и чистку данных в Excel? Пора делегировать эту работу машине. Рассказываем о макросах на VBA, которые станут вашим личным цифровым ассистентом. Никакой магии — только простой код, который вы скопируете за минуту.
Что такое макрос и зачем он вам?
Если коротко: макрос — это записанная или написанная вами программа внутри Excel. Вы нажимаете одну кнопку (или комбинацию клавиш), и он выполняет занудную последовательность действий: от простого оформления таблицы до сложной обработки данных.
Важно: Чтобы это работало, сохраните файл как «Книга Excel с поддержкой макросов (*.xlsm)».
Как вставить код?
- Нажмите Alt + F11 — откроется редактор VBA.
- В меню выберите Insert → Module.
- Вставьте в поле нужный код из статьи.
- Вернитесь в Excel (Alt + Q), настройте кнопку на панели быстрого доступа или запускайте через Alt + F8.
Готовы к суперспособностям? Поехали.
Макрос 1: Супер-форматирование таблицы за клик
Задача: Превратить сырой набор данных в аккуратную, читаемую таблицу с чередующимися строками и фильтрами.
Код:
Sub FormatTableLikeAPro()
Dim rng As Range
Set rng = Selection.CurrentRegion ' Берём текущий диапазон данных
With rng
.Borders.LineStyle = xlContinuous ' Добавляем границы
.Font.Name = "Calibri" ' Меняем шрифт
.RowHeight = 20 ' Стандартная высота строк
.HorizontalAlignment = xlCenter ' Выравнивание по центру
End With
' Заливаем шапку цветом
rng.Rows(1).Interior.Color = RGB(91, 155, 213) ' Красивый синий
rng.Rows(1).Font.Color = RGB(255, 255, 255) ' Белый текст
rng.Rows(1).Font.Bold = True
' Чередуем цвет строк для лёгкости чтения
Dim i As Long
For i = 2 To rng.Rows.Count Step 2
rng.Rows(i).Interior.Color = RGB(248, 248, 248) ' Светло-серый
Next i
' Добавляем фильтры
rng.Rows(1).AutoFilter
MsgBox "Таблица отформатирована!", vbInformation
End Sub
Что делает: Выделите любую ячейку внутри ваших данных, запустите макрос — и получите готовый, профессионально выглядящий отчет.
Макрос 2: Мгновенная сводка по выделению
Задача: Узнать сумму, среднее, количество чисел в выделенных ячейках — без писания формул.
Код:
Sub QuickSummary()
Dim sumVal, avgVal, countVal
If WorksheetFunction.Count(Selection) > 0 Then
sumVal = WorksheetFunction.Sum(Selection)
avgVal = WorksheetFunction.Average(Selection)
countVal = WorksheetFunction.Count(Selection)
MsgBox "Сумма: " & sumVal & vbCrLf & _
"Среднее: " & Format(avgVal, "0.00") & vbCrLf & _
"Кол-во чисел: " & countVal, _
vbOKOnly, "Сводка по выделению"
Else
MsgBox "Выделите диапазон с числами!", vbExclamation
End If
End Sub
Что делает: Выделите любые ячейки с числами и запустите макрос. Появится аккуратное окошко со статистикой. Идеально для быстрого анализа.
Макрос 3: Объединить данные из множества столбцов
Задача: Быстро склеить текст из нескольких колонок (например, Фамилию, Имя и Отчество) с нужным разделителем.
Код:
Sub MergeColumnsWithSeparator()
Dim sep As String
sep = InputBox("Введите разделитель (например, пробел, запятая):", "Разделитель", " ")
If sep = "" Then Exit Sub
Dim lastRow As Long, i As Long
lastRow = Cells(Rows.Count, Selection.Column).End(xlUp).Row
For i = 1 To lastRow
'Склеиваем ячейки из первых трёх колонок, начиная с выделенной
Cells(i, Selection.Column).Offset(0, 3).Value = _
Cells(i, Selection.Column).Value & sep & _
Cells(i, Selection.Column).Offset(0, 1).Value & sep & _
Cells(i, Selection.Column).Offset(0, 2).Value
Next i
MsgBox "Данные объединены в следующем столбце!", vbInformation
End Sub
Что делает: Выделите первую колонку из трёх, которые нужно склеить (например, столбец A с фамилиями). Макрос спросит про разделитель (пробел, дефис) и запишет результат в соседний столбец. Больше никаких ручных конкатенаций!
Макрос 4: Спаситель от дубликатов 2.0
Задача: Не просто удалить повторы, а найти и выделить их цветом перед удалением — для контроля.
Код:
Sub FindAndKillDuplicates()
Dim rng As Range
Set rng = Selection
'Шаг 1: Сначала подсветим дубликаты жёлтым
rng.FormatConditions.AddUniqueValues
rng.FormatConditions(rng.FormatConditions.Count).SetFirstPriority
rng.FormatConditions(1).DupeUnique = xlDuplicate
rng.FormatConditions(1).Interior.Color = vbYellow
'Шаг 2: Спрашиваем, удалять ли
Dim answer As VbMsgBoxResult
answer = MsgBox("Дубликаты выделены жёлтым. Удалить их?", vbYesNo + vbQuestion, "Подтверждение")
If answer = vbYes Then
rng.RemoveDuplicates Columns:=1, Header:=xlYes
rng.FormatConditions.Delete
MsgBox "Дубликаты удалены!", vbInformation
Else
MsgBox "Удаление отменено. Дубликаты остались выделенными.", vbExclamation
End If
End Sub
Что делает: Выделите столбец и запустите. Дубликаты станут жёлтыми. Макрос спросит вас, нужно ли их удалять. Вы контролируете процесс и не удалите ничего по ошибке.
Бонус: Как сделать кнопку для макроса в самом Excel?
- На вкладке Разработчик (как её добавить, ищите в Google) нажмите Вставить → Элемент управления → Кнопка.
- Нарисуйте её на листе.
- Выберите нужный макрос из списка.
- Щёлкните по надписи на кнопке и переименуйте её, например, в «Форматировать!».
Итог: Эти макросы — ваш базовый арсенал для войны с рутиной. Начните с первого, попробуйте второй. Вы быстро почувствуете, как освобождается время, которое лучше потратить на мысли, а не на клики.
А какой макрос стал бы для вас палочкой-выручалочкой? Делитесь в комментариях — самые интересные идеи разберём в следующих статьях!
Было полезно? Ставь лайк и подписывайся, дальше ещё больше интересных и полезных лайфхаков!