Разделы:
Информатика
Практическая работа 1. «Годовая температура»
Порядок работы:
- Откройте Excel.
- Переименуйте «Лист1» в лист «Температура».
- Составьте таблицу «Годовая температура»
Месяц | Средняя температура |
Январь | -5 |
Февраль | -6 |
Март | 0 |
Апрель | 2 |
Май | 10 |
Июнь | 15 |
Июль | 18 |
Август | 20 |
Сентябрь | 18 |
Октябрь | 6 |
Ноябрь | 3 |
Декабрь | -9 |
- В ячейку Е3 поместите значение среднегодовой температуры, рассчитав ее по формуле СРЗНАЧ(В3:D3)
- Запишите Ваши действия в макрос, назвав его «СрГодТемп».
- Привяжите макрос к графическому объекту (например, кнопка):
Отформатируйте ее и назначьте ей макрос «СрГодТемп».
- Справа от показателя температуры нарисуйте графический объект (кнопку) и назначьте ему макрос, который будет очищать содержимое ячейки Е3.
- Проверьте работу кнопок «Средне-годовая t » и «Очистить».
- Самостоятельно выполните создание кнопок и макросов для подсчета и очистки:
- Максимальной годовой температуры;
- Минимальной годовой температуры;
- Средняя температура по временам года (зимой, весной, летом, осенью)
- Создать кнопку «Очистить всё» для очистки всех расчетов.
Ваша работа должна выглядеть следующим образом:
Практическая работа 2. «Протяженность границ РФ» – Приложение 1.
Практическая работа 3. «Тест на визуальный Интеллект» – Приложение 2.
18.03.2012
В этом уроке я покажу Вам самые популярные макросы в VBA Excel, которые вы сможете использовать для оптимизации своей работы. VBA — это язык программирования, который может использоваться для расширения возможностей MS Excel и других приложений MS Office. Это чрезвычайно полезно для пользователей MS Excel, поскольку VBA может использоваться для автоматизации вашей работы и значительно увеличить Вашу эффективность. В этой статье Вы познакомитесь с VBA и я вам покажу некоторые из наиболее полезных, готовых к использованию примеров VBA. Вы сможете использовать эти примеры для создания собственных скриптов, соответствующих Вашим потребностям.
Вам не нужен опыт программирования, чтобы воспользоваться информаций из этой статьи, но вы должны иметь базовые знания Excel. Если вы еще учитесь работать с Excel, я бы рекомендовал Вам прочитать статью 20 формул Excel, которые вам нeобходимо выучить сейчас, чтобы узнать больше о функциональных возможностях Excel.
Я подготовил для вас несколько самых полезных примеров VBA Excel с большой функциональностью, которую вы сможете использовать для оптимизации своей работы. Чтобы их использовать, вам необходимо записать их в файл. Следующий параграф посвящен установке макроса Excel. Пропустите эту часть, если вы уже знакомы с этим.
Table of Contents
Как включить макросы в Excel
В Excel нажмите комбинацию клавиш alt + F11. Это приведет вас к редактору VBA в MS Excel. Затем щелкните правой кнопкой мыши папку Microsoft Excel Objects слева и выберите Insert => Module. Это место, где сохраняются макросы. Чтобы использовать макрос, вам нужно сохранить документ Excel как макрос. Из табуляции File => Save as, выберите Save as macro-enabled Workbok (расширение .xlsm) Теперь пришло время написать свой первый макрос!
1. Копирование данных из одного файла в другой.
Очень полезный макрос, поскольку он показывает, как скопировать ряд данных изнутри vba и как создать и назвать новую книгу. Вы можете изменить этот макрос в соответствии с вашими собственными требованиями:
Sub CopyFiletoAnotherWorkbook() Sheets("Example 1").Range("B4:C15").Copy Workbooks.Add ActiveSheet.Paste Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:="C:TempMyNewBook.xlsx" Application.DisplayAlerts = True End Sub
2. Отображение скрытых строк
Иногда большие файлы Excel можно содержать скрытые строки для большей ясности И для лучшего удобства пользователей. Вот один макрос, который отобразит все строки из активной рабочей таблицы:
Sub ShowHiddenRows() Columns.EntireColumn.Hidden = False Rows.EntireRow.Hidden = False End Sub
3. Удаление пустых строк и столбов
Пустые строки в Excel — может быть проблемой для обработки данных. Вот как избавиться от них:
Sub DeleteEmptyRowsAndColumns() Dim MyRange As Range Dim iCounter As Long Set MyRange = ActiveSheet.UsedRange For iCounter = MyRange.Rows.Count To 1 Step -1 If Application.CountA(Rows(iCounter).EntireRow) = 0 Then Rows(iCounter).Delete End If Next iCounter For iCounter = MyRange.Columns.Count To 1 Step -1 If Application.CountA(Columns(iCounter).EntireColumn) = 0 Then Columns(iCounter).Delete End If Next iCounter End Sub
4. Нахождение пустых ячеек
Sub FindEmptyCell() ActiveCell.Offset(1, 0).Select Do While Not IsEmpty(ActiveCell) ActiveCell.Offset(1, 0).Select Loop End Sub
#### 5. Заполнение пустых ячеек
Как упоминалось ранее, пустые ячейки препятствуют обработке данных и созданию сводных таблиц. Вот один примерный код, который заменяет все пустые ячейки на 0. Этот макрос имеет очень большое приложение, потому что Вы можете использовать его для поиска и замены результатов N/A, а также других символов, таких как точки, запятые или повторяющиеся значения:
Sub FindAndReplace() Dim MyRange As Range Dim MyCell As Range Select Case MsgBox("Can't Undo this action. " & _ "Save Workbook First?", vbYesNoCancel) Case Is = vbYes ThisWorkbook.Save Case Is = vbCancel Exit Sub End Select Set MyRange = Selection For Each MyCell In MyRange If Len(MyCell.Value) = 0 Then MyCell = 0 End If Next MyCell End Sub
#### 6. Сортировка данных
Следующий макрос сортирует по возрастанию все числа из столбца активной ячейки. Просто дважды нажмите любую ячейку из столбца, который вы хотите отсортировать.
NB: Здесь нам нужно поставить этот код в Sheet1 (папка Microsoft Excel Objects), а не в Module1 (папка Modules):
Private Sub Worksheet_BeforeDoubleClick (ByVal Target as Range, Cancel As Boolean) Dim LastRow As Long LastRow = Cells (Rows.Count, 1) .End (xlUp) .Row Rows ("6:" & LastRow) .Sort _ Key1: = Cells (6, ActiveCell.Column), _ Order1: = xlAscending End Sub
#### 7. Удаление пустых пространств
Иногда данные в книге содержат дополнительные пробелы (whitespace charachters), которые могут мешать анализу данных и коррумпировать формулы. Вот один макрос, который удалит все пробелы из предварительно выбранного диапазона ячеек:
Sub TrimTheSpaces() Dim MyRange As Range Dim MyCell As Range Select Case MsgBox("Can't Undo this action. " & _ "Save Workbook First?", vbYesNoCancel) Case Is = vbYes ThisWorkbook.Save Case Is = vbCancel Exit Sub End Select Set MyRange = Selection For Each MyCell In MyRange If Not IsEmpty(MyCell) Then MyCell = Trim(MyCell) End If Next MyCell End Sub
#### 8. Выделение дубликатов цветом
Иногда в нескольких столбцах, которые мы хотели бы осветить, есть повторяющиеся значения. Этот макрос делает именно это:
Sub HighlightDuplicates() Dim MyRange As Range Dim MyCell As Range Set MyRange = Selection For Each MyCell In MyRange If WorksheetFunction.CountIf(MyRange, MyCell.Value) > 1 Then MyCell.Interior.ColorIndex = 36 End If Next MyCell End Sub
#### 9. Выделение десяти самых высоких чисел
Этот код будет отображать десять самых высоких чисел из набора ячеек:
Sub TopTen() Selection.FormatConditions.AddTop10 Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1) .TopBottom = xlTop10Top .Rank = 10 .Percent = False End With With Selection.FormatConditions(1).Font .Color = -16752384 .TintAndShade = 0 End With With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 13561798 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False End Sub
Вы можете легко настроить код, чтобы выделить различное количество чисел.
#### 10. Выделение данных больших чем данные число
Когда вы запустите этот код, появится окно. Вам надо написать число, которое вы хотите сравнить с выбранными ячейками.
Sub HighlightGreaterThanValues() Dim i As Integer i = InputBox("Enter Greater Than Value", "Enter Value") Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:=i Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1) .Font.Color = RGB(0, 0, 0) .Interior.Color = RGB(31, 218, 154) End With End Sub
Вы тоже можете настроить этот код, чтобы выделить более низкие чисел.
#### 11. Выделение ячеек комментариями
Простой макрос, который выделяет все ячейки, содержащие комментарии:
Sub HighlightCommentCells() Selection.SpecialCells(xlCellTypeComments).Select Selection.Style= "Note" End Sub
#### 12. Выделение ячеек со словами с ошибками
Это очень полезно, когда вы работаете с функциями, которые принимают строки, однако кто-то ввел строку с ошибкой, и ваши формулы не работают. Вот как решить эту проблему:
Sub ColorMispelledCells() For Each cl In ActiveSheet.UsedRange If Not Application.CheckSpelling(Word:=cl.Text) Then _ cl.Interior.ColorIndex = 28 Next cl End Sub
13. Создание сводной таблицы
Вот как создать сводную таблицу в MS Excel (версия 2007). Особенно полезно, когда вы делаете индивидуальный отчет каждый день. Вы можете оптимизировать создание сводной таблицы следующим образом:
Sub PivotTableForExcel2007() Dim SourceRange As Range Set SourceRange = Sheets("Sheet1").Range("A3:N86") ActiveWorkbook.PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:=SourceRange, _ Version:=xlPivotTableVersion12).CreatePivotTable _ TableDestination:="", _ TableName:="", _ DefaultVersion:=xlPivotTableVersion12 End Sub
14. Отправка активного файла по электронной почте
Мой любимый код VBA. Он позволяет вам прикреплять и отправлять файл, с которым вы работаете, с предопределенным адресом электронной почты, заголовком сообщения и телом сообщения! Сначала Вам нужно сделать референцию в Excel на Microsoft Outlook (в редакторе Excel VBA, нажмите tools => references и выберите Microsoft Outlook).
Sub SendFIleAsAttachment() Dim OLApp As Outlook.Application Dim OLMail As Object Set OLApp = New Outlook.Application Set OLMail = OLApp.CreateItem(0) OLApp.Session.Logon With OLMail .To = "admin@datapigtechnologies.com; mike@datapigtechnologies.com" .CC = "" .BCC = "" .Subject = "This is the Subject line" .Body = "Hi there" .Attachments.Add ActiveWorkbook.FullName .Display End With Set OLMail = Nothing Set OLApp = Nothing End Sub
15. Вставка всех графиков Excel в презентацию PowerPoint
Очень удобный макрос, который позволяет вам добавлять все ваши графики Excel в презентацию Powerpoint одним щелчком мыши:
Sub SendExcelFiguresToPowerPoint() Dim PP As PowerPoint.Application Dim PPPres As PowerPoint.Presentation Dim PPSlide As PowerPoint.Slide Dim i As Integer Sheets("Slide Data").Select If ActiveSheet.ChartObjects.Count < 1 Then MsgBox "No charts existing the active sheet" Exit Sub End If Set PP = New PowerPoint.Application Set PPPres = PP.Presentations.Add PP.Visible = True For i = 1 To ActiveSheet.ChartObjects.Count ActiveSheet.ChartObjects(i).Chart.CopyPicture _ Size:=xlScreen, Format:=xlPicture Application.Wait (Now + TimeValue("0:00:1")) ppSlideCount = PPPres.Slides.Count Set PPSlide = PPPres.Slides.Add(SlideCount + 1, ppLayoutBlank) PPSlide.Select PPSlide.Shapes.Paste.Select PP.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True PP.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True Next i Set PPSlide = Nothing Set PPPres = Nothing Set PP = Nothing End Sub
16. Вставка таблицы Excel в MS Word
Таблицы Excel обычно помещаются внутри текстовых документов. Вот один автоматический способ экспорта таблицы Excel в MS Word:
Sub ExcelTableInWord() Dim MyRange As Excel.Range Dim wd As Word.Application Dim wdDoc As Word.Document Dim WdRange As Word.Range Sheets("Revenue Table").Range("B4:F10").Cop Set wd = New Word.Application Set wdDoc = wd.Documents.Open _ (ThisWorkbook.Path & "" & "PasteTable.docx") wd.Visible = True Set WdRange = wdDoc.Bookmarks("DataTableHere").Rangе On Error Resume Next WdRange.Tables(1).Delete WdRange.Paste WdRange.Tables(1).Columns.SetWidth _ (MyRange.Width / MyRange.Columns.Count), wdAdjustSameWidth wdDoc.Bookmarks.Add "DataTableHere", WdRange Set wd = Nothing Set wdDoc = Nothing Set WdRange = Nothing End Sub
17. Извлечение слов из текста
Мы можем использовать формулы, если хотим извлечь определенное количество символов. Но что, если мы хотим извлечь только одно слово из предложения или диапазон слов в ячейке? Для этого мы можем сами создать функцию Excel с помощью VBA. Это одна из самых удобных функций VBA, поскольку она позволяет создавать собственные формулы, которые отсутствуют в MS Excel. Давайте продолжим и создадим две функции: findword() и findwordrev():
Function FindWord(Source As String, Position As Integer) As String On Error Resume Next FindWord = Split(WorksheetFunction.Trim(Source), " ")(Position - 1) On Error GoTo 0 End Function Function FindWordRev(Source As String, Position As Integer) As String Dim Arr() As String Arr = VBA.Split(WorksheetFunction.Trim(Source), " ") On Error Resume Next FindWordRev = Arr(UBound(Arr) - Position + 1) On Error GoTo 0 End Function
Отлично, мы уже создали две новые функции в Excel! Теперь попробуйте использовать их в Excel. Функция = FindWordRev (A1,1) берет последнее слово из ячейки A1. Функция = FindWord (A1,3) берет третье слово из ячейки A1 и т. Д.
18. Защита данных в MS Excel
Иногда мы хотим защитить данных нашего файла, чтобы только мы могли его изменять. Вот как это сделать с VBA:
Sub ProtectSheets() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets ws.Protect Password:="1234" Next ws End Sub
Поздравления! Поскольку вы все еще читаете это, вы действительно заинтересованы в изучении VBA. Как вы уже сами видели, язык программирования VBA чрезвычайно полезен и может сэкономить нам много времени. Надеюсь, вы нашли эту информацию полезной и использовали ее, чтобы стать мастером MS Excel, VBA и компьютерных наук в целом.
© 2018 Атанас Йонков
Литература:
1. ExcelChamps.com: Top 100 Useful Excel Macro [VBA] Codes Examples.
2. Michael Alexander, John Walkenbach (2012). 101 Ready-To-Use Excel Macros.
3. BG Excel.info: 14 ready-to-use Macros for Excel.
в приложении
Лекция: «Создание макросов в приложении MS Ехсеl».
План лекции для студентов II курса:
- Понятие макроса.
- Запись простых макросов.
- Выполнение макросов.
- Назначение макроса для графическич изображений.
- Удаление макросов из списка макросов.
- Ограниченность макросов.
Понятие макроса.
Основное назначение макросов — это автоматизация работы пользователя.
Макрос — это имеющая имя последовательность заданных пользователем команд, и действий хранящаяся в форме программы на языке Visual Basic for Application (VВА), которую может выполнить
приложение.
На сегодняшний день Visual Basic for Application (VВА) — один из самых простых в изучении и применении языков программирования для автоматизации приложений, входящих в пакет Microsoft Offic.
Запись макросов в приложении Ехсеl:
Для работы с макросами в приложении Ехсеl имеется специальная панель.
Меню: Вид- Панель инструментов — Visual Basic.
Рисунок 1
Общий алгоритм записи макроса:
- Нажать на кнопку «Запись макроса» на панели Visual Basic
- В диалоговом окне «Запись макроса» дать имя макросу.
Первым символом имени макроса должна быть буква. В имени макроса не допускается использование пробелов.
Рисунок 2
- Выполнить действия, которые нужно записать.
- Нажать кнопку «Остановить запись» на панели Visual Basic.
Задание I
Рассмотрим процедуру записи макросов на примере очень простого макроса, который изменяет шрифт и цвет в выделенном диапазоне ячеек. Эти действия в Ехсеl можно выполнить многими различными способами (например, применение стилей, автоформатирования и т.д.), этот пример продемонстрирует последовательность действий пользователя, необходимые для записи макроса).
Рисунок 3
1. В ячейку А4 введите ваше имя, в ячейку А5 введите фамилию, в ячейку А6 — город, где вы родились, в ячейку А7 — название страны.
2. Установите курсор в ячейке А4.
3. На панели Visual Basic нажмите кнопку «Запись макроса» Рисунок 4
4. Введите название макроса «ЦветШрифт» и нажмите клавишу «ОК». На экране появится панель инструментов «Остановить запись» Рисунок 5
ВНИМАНИЕ! КАЖДОЕ ВАШЕ ДЕЙСТВИЕ ЗАПИСЫВАЕТСЯ.
5. Выполните команду Формат – Ячейки — Шрифт — Размер 11- Цвет красный — ОК.
6. Щелкните на кнопке «Остановить запись» на панели Visual Basic. Запись макроса завершена.
Выполнение макросов.
При выполнении макроса приложение Ехсеl повторяет те же действия, которые вы выполнили в процессе его создания. Продолжим работу с созданным макросом.
1.Установить курсор в ячейку А4.
2.Выполнить команду Сервис-Макрос-Макросы
Рисунок 6
3.Выделите макрос ЦветШрифт и Выполнить.
4.Аналогично с ячейками А3 и А4.
Назначение макроса графическим изображениям.
Продолжим работу с заданием I.
1. Используя панель Рисование, нарисуйте на листе любую автофигуру.
2.Щелкните правой кнопкой мыши на изображении и в открывшемся контекстном меню выберите команду Назначить макрос. Отобразится диалоговое окно Назначить макрос объекту.
3. Выберите макрос «ЦветШрифт» и подтвердите выполнение операции.
4. Щелкните вне графического изображения, чтобы снять выделение с объекта.
5. Введите число и проверьте выполнение макроса.
Рисунок 7
Удаление макросов из списка макросов:
Для того, чтобы удалить макрос из списка макросов диалогового окна Макросы надо:
1. Выполнить команду Сервис — Макрос — Макросы.
2. Выделить макрос, подлежащий удалению и щелкнуть по кнопке «Удалить».
3. Подтвердить выполнение операции в специальном окне, которое появится.
Ограниченность макросов
В Ехсеl многие процедуры можно выполнить с помощью макросов, но макросы имеют и ограничения. С помощью макросов нельзя выполнить различные действия в зависимости от содержимого ячейки, нельзя вызвать некоторые диалоговые окна Ехсе1, например, сохранить документ, нельзя отобразить и использовать пользовательские формы ввода данных.
Эти ограничения приводят к необходимости создания программ на VВА.
Задания для самостоятельного выполнения.
1.Введите в диапазон F1:F5 любые числа. Создайте макрос для очистки диапазона F1:F5. С помощью панели инструментов «Рисование» создайте кнопку с надписью «Очистить». Назначьте кнопке созданный макрос.
2. Введите в диапазон С2:С6 фамилии ваших друзей, а в диапазон D2:D6 занесите их телефоны.
Создайте две кнопки с названиями «Выделенное скопировать» и «Вставить». По нажатию на первую кнопку выделенный диапазон должен копироваться в буфер обмена. По нажатию на вторую кнопку информация из буфера обмена должна выводиться в текущую ячейку.
Задание II. Текст по столбцам
В столбец А введите исходные данные:
Рисунок 8
Рисунок 9
Необходимо номера и телефоны разнести по разным столбцам.
В Ехсеl существует специальная команда для выполнения этой операции
Данные — Текст по столбцам.
Технология работы:
- Выделите все ячейки столбца А, где занесены исходные данные;
- Выполните команду Данные-Текст по столбцам, появится диалоговое окно.
В этом окне укажите формат данных –« с разделителями». Нажмите кнопку «Далее». - Во втором диалоговом окне укажите символом – разделителем является «пробел» Нажмите кнопку «Далее».
- В третьем окне установите для каждого столбца данных формат данных
( текстовой) и «Поместить в – щелкните по нужной ячейки ( =$C$1 )»- первый столбец, (=$D$1) – второй столбец – «Готово»
Создайте макрос для разбора данных по ячейкам. Привяжите макрос к автофигуре. Создайте макрос для очистки ячеек, в которые заносятся разобранные данные.
ЗаданиеIII. Подведение промежуточных итогов с применением макросов.
Повторим Ехсеl, подведем промежуточные итоги, используя возможности программы, затем запишем макросы, которые будут автоматически, а не вручную подводить промежуточные итоги и убирать их с листа.
Рисунок10.
Технология работы.
- Откройте лист «Итоги»
- В столбце «Сумма» значение рассчитайте по формуле
- Отсортируйте таблицу по столбцу «Товар».
В процессе подготовки отчетов часто требуется подводить итоги. Возможности Ехсel позволяют автоматически вносить промежуточные итоги в таблицы, не задавая вручную области или формулы для них. Иногда требуется выделять и показывать на экране только часть информации из созданного отчета. В зависимости от цели отчета, в него может быть включена полная информация рабочего листа, только промежуточные и общие итоги или только общие итоги.
Рассмотрим использование команды «Итоги» на нашем примере. Подсчитаем, на какую сумму было продано отдельно ксероксов и отдельно факсов.
1.Установим курсор на любую ячейку отсортированной таблицы.
2.Выполним команду Данные-Итоги. В появившемся диалоговом окне «Промежуточные итоги» в строке При каждом изменении в выберем из открывшегося списка название графы «Товары», в строке Операция — функцию Сумма, в строке Добавить итоги по — выберем название графы «Сумма» — ОК
Создание макросов.
Установите курсор на исходную таблицу. Если таблица не отсортирована ,отсортируйте по полю «Товар» Данные-Сортировка.
1.Для создания 1 макроса активизируйте любую ячейку таблицы и MacroRecorde с помощью команды Сервис-Макрос-Начать запись. Назначьте имя макроса «Итоги»- ОК
2.Выполним команду Данные-Итоги
В диалоговом окне выберете в строке
При каждом изменении в выберем из открывшегося списка название графы «Товары», в строке Операция — функцию Сумма, в строке Добавить итоги по — выберем название графы «Сумма» — ОК
3.Активизируйте опцию Итоги под данным. Нажмите клавишу ОК
Остановите запись макроса, нажав на кнопку Остановить запись.
Просмотрите записанную программу. Для этого выполните команду Сервис-Макрос-Макросы. Выделите макрос «Итоги» и нажмите кнопку Изменить. Это вызовет появление главного окна редактора VВА с текстом записанного макроса .
4. Для создания 2-ого макроса «Убрать промежуточные итоги»:
Активизируйте MacroRecorde с помощью команды Сервис-Макрос-Начать запись. Появится диалоговое окно «Запись макроса». Назначить имя макроса «Убратьитоги» Установите курсор в исходную таблицу. Выполните команду Данные—Итоги. В появившемся окне щелкнуть по кнопке «Убрать все». Остановите запись макроса, нажав на кнопку Остановить запись.
На листе «Итоги» создадим кнопки и привяжем к ним созданные макросы .
Подведение итогов урока:
- Как автоматизировать действия в приложениях.
- Дать понятие Макроса.
- Перечислить порядок записи простых Макросов
- Выполнение Макросов.
- Назначение Макроса графическим объектам.
- Ограниченность Макросов.
- Попробуйте создать Макросы в Microsoft Word.
#Руководства
- 23 май 2022
-
0
Как с помощью макросов автоматизировать рутинные задачи в Excel? Какие команды они выполняют? Как создать макрос новичку? Разбираемся на примере.
Иллюстрация: Meery Mary для Skillbox Media
Рассказывает просто о сложных вещах из мира бизнеса и управления. До редактуры — пять лет в банке и три — в оценке имущества. Разбирается в Excel, финансах и корпоративной жизни.
Макрос (или макрокоманда) в Excel — алгоритм действий в программе, который объединён в одну команду. С помощью макроса можно выполнить несколько шагов в Excel, нажав на одну кнопку в меню или на сочетание клавиш.
Обычно макросы используют для автоматизации рутинной работы — вместо того чтобы выполнять десяток повторяющихся действий, пользователь записывает одну команду и затем запускает её, когда нужно совершить эти действия снова.
Например, если нужно добавить название компании в несколько десятков документов и отформатировать его вид под корпоративный дизайн, можно делать это в каждом документе отдельно, а можно записать ход действий при создании первого документа в макрос — и затем применить его ко всем остальным. Второй вариант будет гораздо проще и быстрее.
В статье разберёмся:
- как работают макросы и как с их помощью избавиться от рутины в Excel;
- какие способы создания макросов существуют и как подготовиться к их записи;
- как записать и запустить макрос начинающим пользователям — на примере со скриншотами.
Общий принцип работы макросов такой:
- Пользователь записывает последовательность действий, которые нужно выполнить в Excel, — о том, как это сделать, поговорим ниже.
- Excel обрабатывает эти действия и создаёт для них одну общую команду. Получается макрос.
- Пользователь запускает этот макрос, когда ему нужно выполнить эту же последовательность действий ещё раз. При записи макроса можно задать комбинацию клавиш или создать новую кнопку на главной панели Excel — если нажать на них, макрос запустится автоматически.
Макросы могут выполнять любые действия, которые в них запишет пользователь. Вот некоторые команды, которые они умеют делать в Excel:
- Автоматизировать повторяющиеся процедуры.
Например, если пользователю нужно каждый месяц собирать отчёты из нескольких файлов в один, а порядок действий каждый раз один и тот же, можно записать макрос и запускать его ежемесячно.
- Объединять работу нескольких программ Microsoft Office.
Например, с помощью одного макроса можно создать таблицу в Excel, вставить и сохранить её в документе Word и затем отправить в письме по Outlook.
- Искать ячейки с данными и переносить их в другие файлы.
Этот макрос пригодится, когда нужно найти информацию в нескольких объёмных документах. Макрос самостоятельно отыщет её и принесёт в заданный файл за несколько секунд.
- Форматировать таблицы и заполнять их текстом.
Например, если нужно привести несколько таблиц к одному виду и дополнить их новыми данными, можно записать макрос при форматировании первой таблицы и потом применить его ко всем остальным.
- Создавать шаблоны для ввода данных.
Команда подойдёт, когда, например, нужно создать анкету для сбора данных от сотрудников. С помощью макроса можно сформировать такой шаблон и разослать его по корпоративной почте.
- Создавать новые функции Excel.
Если пользователю понадобятся дополнительные функции, которых ещё нет в Excel, он сможет записать их самостоятельно. Все базовые функции Excel — это тоже макросы.
Все перечисленные команды, а также любые другие команды пользователя можно комбинировать друг с другом и на их основе создавать макросы под свои потребности.
В Excel и других программах Microsoft Office макросы создаются в виде кода на языке программирования VBA (Visual Basic for Applications). Этот язык разработан в Microsoft специально для программ компании — он представляет собой упрощённую версию языка Visual Basic. Но это не значит, что для записи макроса нужно уметь кодить.
Есть два способа создания макроса в Excel:
- Написать макрос вручную.
Это способ для продвинутых пользователей. Предполагается, что они откроют окно Visual Basic в Еxcel и самостоятельно напишут последовательность действий для макроса в виде кода.
- Записать макрос с помощью кнопки меню Excel.
Способ подойдёт новичкам. В этом варианте Excel запишет программный код вместо пользователя. Нужно нажать кнопку записи и выполнить все действия, которые планируется включить в макрос, и после этого остановить запись — Excel переведёт каждое действие и выдаст алгоритм на языке VBA.
Разберёмся на примере, как создать макрос с помощью второго способа.
Допустим, специальный сервис автосалона выгрузил отчёт по продажам за три месяца первого квартала в формате таблиц Excel. Эти таблицы содержат всю необходимую информацию, но при этом никак не отформатированы: колонки слиплись друг с другом и не видны полностью, шапка таблицы не выделена и сливается с другими строками, часть данных не отображается.
Скриншот: Skillbox Media
Пользоваться таким отчётом неудобно — нужно сделать его наглядным. Запишем макрос при форматировании таблицы с продажами за январь и затем применим его к двум другим таблицам.
Готовимся к записи макроса
Кнопки для работы с макросами в Excel находятся во вкладке «Разработчик». Эта вкладка по умолчанию скрыта, поэтому для начала разблокируем её.
В операционной системе Windows это делается так: переходим во вкладку «Файл» и выбираем пункты «Параметры» → «Настройка ленты». В открывшемся окне в разделе «Основные вкладки» находим пункт «Разработчик», отмечаем его галочкой и нажимаем кнопку «ОК» → в основном меню Excel появляется новая вкладка «Разработчик».
В операционной системе macOS это нужно делать по-другому. В самом верхнем меню нажимаем на вкладку «Excel» и выбираем пункт «Параметры…».
Скриншот: Skillbox Media
В появившемся окне нажимаем кнопку «Лента и панель».
Скриншот: Skillbox Media
Затем в правой панели «Настроить ленту» ищем пункт «Разработчик» и отмечаем его галочкой. Нажимаем «Сохранить».
Скриншот: Skillbox Media
Готово — вкладка «Разработчик» появилась на основной панели Excel.
Скриншот: Skillbox Media
Чтобы Excel смог сохранить и в дальнейшем использовать макрос, нужно пересохранить документ в формате, который поддерживает макросы. Это делается через команду «Сохранить как» на главной панели. В появившемся меню нужно выбрать формат «Книга Excel с поддержкой макросов».
Скриншот: Skillbox Media
Перед началом записи макроса важно знать об особенностях его работы:
- Макрос записывает все действия пользователя.
После старта записи макрос начнёт регистрировать все клики мышки и все нажатия клавиш. Поэтому перед записью последовательности лучше хорошо отработать её, чтобы не добавлять лишних действий и не удлинять код. Если требуется записать длинную последовательность задач — лучше разбить её на несколько коротких и записать несколько макросов.
- Работу макроса нельзя отменить.
Все действия, которые выполняет запущенный макрос, остаются в файле навсегда. Поэтому перед тем, как запускать макрос в первый раз, лучше создать копию всего файла. Если что-то пойдёт не так, можно будет просто закрыть его и переписать макрос в созданной копии.
- Макрос выполняет свой алгоритм только для записанного диапазона таблиц.
Если при записи макроса пользователь выбирал диапазон таблицы, то и при запуске макроса в другом месте он выполнит свой алгоритм только в рамках этого диапазона. Если добавить новую строку, макрос к ней применяться не будет. Поэтому при записи макроса можно сразу выбирать большее количество строк — как это сделать, показываем ниже.
Для начала записи макроса перейдём на вкладку «Разработчик» и нажмём кнопку «Записать макрос».
Скриншот: Skillbox Media
Появляется окно для заполнения параметров макроса. Нужно заполнить поля: «Имя макроса», «Сохранить в», «Сочетание клавиш», «Описание».
Скриншот: Skillbox Media
«Имя макроса» — здесь нужно придумать и ввести название для макроса. Лучше сделать его логически понятным, чтобы в дальнейшем можно было быстро его найти.
Первым символом в названии обязательно должна быть буква. Другие символы могут быть буквами или цифрами. Важно не использовать пробелы в названии — их можно заменить символом подчёркивания.
«Сохранить в» — здесь нужно выбрать книгу, в которую макрос сохранится после записи.
Если выбрать параметр «Эта книга», макрос будет доступен при работе только в этом файле Excel. Чтобы макрос был доступен всегда, нужно выбрать параметр «Личная книга макросов» — Excel создаст личную книгу макросов и сохранит новый макрос в неё.
«Сочетание клавиш» — здесь к уже выбранным двум клавишам (Ctrl + Shift в системе Windows и Option + Cmd в системе macOS) нужно добавить третью клавишу. Это должна быть строчная или прописная буква, которую ещё не используют в других быстрых командах компьютера или программы Excel.
В дальнейшем при нажатии этих трёх клавиш записанный макрос будет запускаться автоматически.
«Описание» — необязательное поле, но лучше его заполнять. Например, можно ввести туда последовательность действий, которые планируется записать в этом макросе. Так не придётся вспоминать, какие именно команды выполнит этот макрос, если нужно будет запустить его позже. Плюс будет проще ориентироваться среди других макросов.
В нашем случае с форматированием таблицы заполним поля записи макроса следующим образом и нажмём «ОК».
Скриншот: Skillbox Media
После этого начнётся запись макроса — в нижнем левом углу окна Excel появится значок записи.
Скриншот: Skillbox Media
Пока идёт запись, форматируем таблицу с продажами за январь: меняем ширину всех столбцов, данные во всех ячейках располагаем по центру, выделяем шапку таблицы цветом и жирным шрифтом, рисуем границы.
Важно: в нашем случае у таблиц продаж за январь, февраль и март одинаковое количество столбцов, но разное количество строк. Чтобы в случае со второй и третьей таблицей макрос сработал корректно, при форматировании выделим диапазон так, чтобы в него попали не только строки самой таблицы, но и строки ниже неё. Для этого нужно выделить столбцы в строке с их буквенным обозначением A–G, как на рисунке ниже.
Скриншот: Skillbox Media
Если выбрать диапазон только в рамках первой таблицы, то после запуска макроса в таблице с большим количеством строк она отформатируется только частично.
Скриншот: Skillbox Media
После всех манипуляций с оформлением таблица примет такой вид:
Скриншот: Skillbox Media
Проверяем, все ли действия с таблицей мы выполнили, и останавливаем запись макроса. Сделать это можно двумя способами:
- Нажать на кнопку записи в нижнем левом углу.
- Перейти во вкладку «Разработчик» и нажать кнопку «Остановить запись».
Скриншот: Skillbox Media
Готово — мы создали макрос для форматирования таблиц в границах столбцов A–G. Теперь его можно применить к другим таблицам.
Запускаем макрос
Перейдём в лист со второй таблицей «Февраль_2022». В первоначальном виде она такая же нечитаемая, как и первая таблица до форматирования.
Скриншот: Skillbox Media
Отформатируем её с помощью записанного макроса. Запустить макрос можно двумя способами:
- Нажать комбинацию клавиш, которую выбрали при заполнении параметров макроса — в нашем случае Option + Cmd + Ф.
- Перейти во вкладку «Разработчик» и нажать кнопку «Макросы».
Скриншот: Skillbox Media
Появляется окно — там выбираем макрос, который нужно запустить. В нашем случае он один — «Форматирование_таблицы». Под ним отображается описание того, какие действия он включает. Нажимаем «Выполнить».
Скриншот: Skillbox Media
Готово — вторая таблица с помощью макроса форматируется так же, как и первая.
Скриншот: Skillbox Media
То же самое можно сделать и на третьем листе для таблицы продаж за март. Более того, этот же макрос можно будет запустить и в следующем квартале, когда сервис автосалона выгрузит таблицы с новыми данными.
Научитесь: Excel + Google Таблицы с нуля до PRO
Узнать больше
ФЕДЕРАЛЬНОЕ
АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО
ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ДОНСКОЙ
ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра
«Информатика»
СОЗДАНИЕ
МАКРОСОВ-ФУНКЦИЙ В EXCEL
Методические
указания к выполнению лабораторных
работ
по
дисциплине «Информационные технологии»
для
студентов технических специальностей
Ростов-на-Дону
2008
Составители:
д. т. н., проф. Б. В. Соболь, к. ф.-м. н., доц.
И. М. Пешхоев
Создание
макросов-функций в Excel:
Методические указания к выполнению
лабораторных работ по дисциплине
«Информационные технологии» для
студентов технических специальностей.
— Ростов н/Д: Издательский центр ДГТУ,
2008. — 16 с.
Методические
указания предназначены для проведения
лабораторных работ по дисциплине
«Информационные технологии» для
специальностей технического профиля.
Предлагается набор заданий к лабораторным
занятиям и краткие методические указания
к их выполнению. Целью лабораторных
работ является использование макросов
Excel
для решения задач, часто встречающихся
в инженерных расчетах.
Печатается
по решению методической комиссии
факультета «Информатика и вычислительная
техника»
Научный
редактор доцент
Г. И. Каныгин
©
Издательский центр ДГТУ, 2008.
Лабораторная
работа № 1
Тема:
Программирование макросов для функций,
задаваемых с условиями.
Цель
работы: Научиться использовать макросы
Excel
для упрощения вычислений.
Форма
отчета: Выполнение индивидуального
зачетного задания.
Примеры
выполнения лабораторной работы
Пример
1.
Вычислить для произвольно заданного
значения переменной x
значение функции
Решение
с помощью формулы Excel.
Создадим новый файл в программе Excel.
Оформление решения показано в таблице
1.
На
Лист1 в ячейках A1
и B1
введем обозначения x
и y.
Присвоим
ячейке A2
имя x.
Для этого выполним команду «Вставка —
Имя — Присвоить — x».
Пусть
значение переменной x
равно 0,5. Запишем число 0,5 в ячейке A2,
а значение функции y
вычислим в ячейке B2.
Для этого введем в B2
формулу
=ЕСЛИ(x<=1;x^3+1;ЕСЛИ(x<=3;SIN(x);EXP(-x)*x))
Таблица
1
A |
B |
|
1 |
x |
y |
2 |
0,5 |
=ЕСЛИ(x<=1;x^3+1;ЕСЛИ(x<=3;SIN(x);EXP(-x)*x)) |
В
результате вычисления в ячейке B2
появится значение 1,125.
Введем
в ячейку A2
значение 1,5. Тогда в B2
появится значение 0,997494987. Если введем
в ячейку A2
значение 3,5, то в B2
появится значение 0,105690842.
Решение
с помощью макроса Excel.
Создадим
в программе Excel
пользовательскую функцию y(x)
для вычисления данной функции, пользуясь
встроенным языком Visual
Basic.
Приведем
алгоритм создания пользовательcкой
функции-макроса:
1)
Выполним команду меню «Сервис — Макрос
— Редактор
Visual
Basic».
Откроется окно «Microsoft
Visual
Basic».
2)
Выполним команду меню «Insert
— Module»
и введём текст программы-функции
(Комментарий после апострофа вводить
не надо)
Function
y(x)
‘ Заголовок описания функции y(x)
If
x <= 1 Then ‘ если
x <= 1 то
y
= x ^ 3 + 1 ‘ y = x ^ 3 + 1
ElseIf
x
<= 3 Then
‘ иначе если x
<= 3 то
y
= Sin(x) ‘ y = Sin(x)
Else
‘ иначе
y
= Exp(-x) * x ‘ y = Exp(-x) * x
End
If
‘ конец оператора если
End
Function
‘ конец описания функции
Теперь
в ячейках любого листа данной книги
(файла) программы Excel
можно в формулах использовать созданную
функцию.
Например,
введем в ячейки С2, С3 и С4 соответственно
формулы =y(0,5),
=y(1,5),
=y(3,5).
В этих ячейках получим значения 1,125,
0,997495, 0,105691.
Пример
2.
Построить таблицу значений и график
функции из примера 2 на отрезке
с шагом 0,2.
Решение
с использованием макроса.
Мы будем использовать макрос-функцию
y(x),
созданную в примере 1, поэтому откроем
файл примера 1 и перейдем на Лист2.
В
ячейках A1
и B1
введем обозначения x
и y.
Введем
в A2,
A3
значения 0 и 0,2. Выделим ячейки A2:A3
и протянем маркер заполнения (правый
нижний угол) до ячейки A12.
Введем
в B2
формулу =y(A2).
Протянем ячейку B2
маркером заполнения вниз до B12.
Оформление решения показано в таблице
2.
Таблица
2
A |
B |
|
1 |
x |
y |
2 |
0 |
1 |
3 |
0,2 |
1,008 |
4 |
0,4 |
1,064 |
5 |
0,6 |
1,216 |
6 |
0,8 |
1,512 |
7 |
1 |
2 |
8 |
1,2 |
0,932039 |
9 |
1,4 |
0,98545 |
10 |
1,6 |
0,999574 |
11 |
1,8 |
0,973848 |
12 |
2 |
0,909297 |
Выделим
диапазон A1:B12
и щелкнем указателем мыши на панели
инструментов ярлык «Мастер диаграмм».
Выберем тип «Точечная» и кнопку «Готово».
Построить
таблицу значений и график данной функции
в указанном диапазоне с заданным шагом.
Вариант задания выбрать из таблицы 3.
Таблица
3
№ варианта |
Функция |
Отрезок |
Шаг |
1 |
|
[0; |
0,1 |
2 |
|
[1; |
0,2 |
3 |
|
[0; |
0,3 |
4 |
|
[1; |
0,2 |
5 |
|
[0; |
0,1 |
6 |
|
[2; |
0,25 |
Продолжение
табл. 3
№ варианта |
Функция |
Отрезок |
Шаг |
7 |
|
[3; |
0,25 |
8 |
|
[0; |
0,1 |
9 |
|
[1; |
0,4 |
10 |
|
[0; |
0,05 |
11 |
|
[1; |
0,4 |
12 |
|
[0; |
0,2 |
13 |
|
[2; |
0,3 |
Окончание
табл. 3
№ варианта |
Функция |
Отрезок |
Шаг |
14 |
|
[0; |
0,4 |
15 |
|
[1; |
0,5 |
16 |
|
[0; |
0,1 |
17 |
|
[1; |
0,2 |
18 |
|
[0; |
0,3 |
19 |
|
[0; |
0,2 |
20 |
|
[0; |
0,1 |
Лабораторная
работа № 2
Тема:
Программирование макросов для функций,
параметрами и/или значениями которых
являются массивы.
Цель
работы: Научиться использовать макросы
Excel
для упрощения вычислений с матрицами
и векторами.
Форма
отчета: Выполнение индивидуального
зачетного задания.
Пример
выполнения лабораторной работы
Пример
3. Вычислить
таблицу значений вектор-функции
U(t)
= U(x,
y,
z),
где x
= x(t)
= t
2,
y
= y(t)
= sin
t,
z
= z(t)
= cos
t,
для
значений переменной t
= 0; 0,1; …, 1.
Решение
с помощью макроса.
Создадим макрос-функцию U(t),
которая вычисляет значение данной
вектор-функции.
1)
Выполним команду меню «Сервис — Макрос
— Редактор
Visual
Basic».
Откроется окно «Microsoft
Visual
Basic».
2)
Выполним команду меню «Insert
— Module»
и введём текст следующей программы-функции
Option
Base
1 ‘ Нижнее значение индекса в массивах
равно 1
Function
U(t)
Dim
uu(3)
‘ Описание вектора из трех
элементов
x
= t
^ 2: uu(1)
= x
‘ вычисление компонент вектор-функции
y
= Sin(t): uu(2) = y
z
= Cos(t): uu(3) = z
U
= uu
‘ присваивание имени U
функции вектора uu
End
Function
3)
Перейдем из редактора Visual
Basic
в Excel
и введем в ячейках A1:D1
обозначения, как показано в табл. 4.
Таблица
4
A |
B |
C |
D |
|
1 |
t |
x |
y |
z |
2 |
0 |
0 |
0 |
0 |
3 |
0,1 |
0 |
0,01 |
0,099833 |
4 |
0,2 |
0 |
0,04 |
0,198669 |
5 |
0,3 |
0 |
0,09 |
0,29552 |
6 |
0,4 |
0 |
0,16 |
0,389418 |
7 |
0,5 |
0 |
0,25 |
0,479426 |
8 |
0,6 |
0 |
0,36 |
0,564642 |
9 |
0,7 |
0 |
0,49 |
0,644218 |
10 |
0,8 |
0 |
0,64 |
0,717356 |
11 |
0,9 |
0 |
0,81 |
0,783327 |
12 |
1 |
0 |
1 |
0,841471 |
Введем
в ячейки A2,
A3
значения 0 и 0,1. Выделим ячейки A2:A3
и маркером заполнения протянем вниз до
A12.
Выделим
ячейки B2:D2,
введем формулу =U(A2) и удерживая нажатыми
клавиши Ctrl
и Shift
нажмем Enter.
В ячейках B2:D2
появятся числовые значения.
Выделим
ячейки B2:D2
и маркером заполнения протянем вниз до
строки B12:D12.
Пример
4. Вычислить
суммы элементов строк матрицы, содержащей
4 строки и 3 столбца (табл. 5).
Таблица
5
1 |
-1 |
9 |
2 |
2 |
4 |
3 |
3 |
1 |
4 |
5 |
3 |
Решение
с помощью встроенных функций Excel.
Создадим
файл программы Excel.
Запишем
элементы данной матрицы в диапазоне
A1:C4
(табл. 6).
В
ячейку D1
введем формулу =СУММ(A1:C1).
Выделим
ячейку D1
и протянем маркером заполнения вниз до
ячейки D4.
В столбце D1:D4
получим суммы элементов соответствующих
строк матрицы.
Решение
с помощью макроса.
Создадим макрос-функцию Sum_str(x),
которая для заданной матрицы x,
содержащей M
строк и N
столбцов, вычисляет вектор-столбец из
M
элементов, содержащий суммы элементов
соответствующих строк матрицы.
1)
Выполним команду меню «Сервис — Макрос
— Редактор
Visual
Basic».
Откроется окно «Microsoft
Visual
Basic».
2)
Выполним команду меню «Insert
— Module»
и введём текст следующей программы-функции
Option
Base 1
Function
Sum_str(x)
Dim
y()
Dim
M As Integer, N As Integer
M
= x.Rows.Count
N
= x.Columns.Count
ReDim
y(M)
For
i = 1 To M:
y(i)
= 0: For j = 1 To N: y(i) = y(i) + x(i, j): Next j
Next
i
Sum_str
= Application.Transpose(y)
End
Function
3)
Выделим диапазон ячеек E1:E4,
введем формулу =Sum_str(A1:C4) и удерживая
нажатыми клавиши Ctrl
и Shift
нажмем Enter.
В ячейках E1:E4
появятся числовые значения, совпадающие
со значениями в D1:D4.
Таблица
6
A |
B |
C |
D |
E |
|
1 |
1 |
-1 |
9 |
9 |
9 |
2 |
2 |
2 |
4 |
8 |
8 |
3 |
3 |
3 |
1 |
7 |
7 |
4 |
4 |
5 |
3 |
12 |
12 |
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #