Найти в Дзене

Must-have макросы VBA для Excel, которые упростят вам жизнь

Приветствуем, дорогие читатели! Вы тратите часы на однообразное копирование, форматирование и чистку данных в Excel? Пора делегировать эту работу машине. Рассказываем о макросах на VBA, которые станут вашим личным цифровым ассистентом. Никакой магии — только простой код, который вы скопируете за минуту. Если коротко: макрос — это записанная или написанная вами программа внутри Excel. Вы нажимаете одну кнопку (или комбинацию клавиш), и он выполняет занудную последовательность действий: от простого оформления таблицы до сложной обработки данных. Важно: Чтобы это работало, сохраните файл как «Книга Excel с поддержкой макросов (*.xlsm)». Готовы к суперспособностям? Поехали. Задача: Превратить сырой набор данных в аккуратную, читаемую таблицу с чередующимися строками и фильтрами. Код: Sub FormatTableLikeAPro()
Dim rng As Range
Set rng = Selection.CurrentRegion ' Берём текущий диапазон данных
With rng
.Borders.LineStyle = xlContinuous ' Добавляем границы
.Fon
Оглавление

Приветствуем, дорогие читатели! Вы тратите часы на однообразное копирование, форматирование и чистку данных в Excel? Пора делегировать эту работу машине. Рассказываем о макросах на VBA, которые станут вашим личным цифровым ассистентом. Никакой магии — только простой код, который вы скопируете за минуту.

Что такое макрос и зачем он вам?

Если коротко: макрос — это записанная или написанная вами программа внутри Excel. Вы нажимаете одну кнопку (или комбинацию клавиш), и он выполняет занудную последовательность действий: от простого оформления таблицы до сложной обработки данных.

Важно: Чтобы это работало, сохраните файл как «Книга Excel с поддержкой макросов (*.xlsm)».

Как вставить код?

  1. Нажмите Alt + F11 — откроется редактор VBA.
  2. В меню выберите Insert → Module.
  3. Вставьте в поле нужный код из статьи.
  4. Вернитесь в 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

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

Макрос 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

Макрос 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

Макрос 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

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

-5

Бонус: Как сделать кнопку для макроса в самом Excel?

  1. На вкладке Разработчик (как её добавить, ищите в Google) нажмите Вставить → Элемент управления → Кнопка.
  2. Нарисуйте её на листе.
  3. Выберите нужный макрос из списка.
  4. Щёлкните по надписи на кнопке и переименуйте её, например, в «Форматировать!».
-6

Итог: Эти макросы — ваш базовый арсенал для войны с рутиной. Начните с первого, попробуйте второй. Вы быстро почувствуете, как освобождается время, которое лучше потратить на мысли, а не на клики.

А какой макрос стал бы для вас палочкой-выручалочкой? Делитесь в комментариях — самые интересные идеи разберём в следующих статьях!

Было полезно? Ставь лайк и подписывайся, дальше ещё больше интересных и полезных лайфхаков!