Excel макрос для заполнения таблиц

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

Создание и удаление умной таблицы

Создание умной таблицы

Создается умная таблица Excel с помощью следующего кода:

ActiveSheet.ListObjects.Add(xlSrcRange, Range(«$A$1:$L$15»), , xlNo).Name _

= «МояТаблица1»

В данном примере:

ActiveSheet — лист, на котором создается таблица, может быть любой лист рабочей книги Excel.

Range(«$A$1:$L$15») — диапазон, который преобразуется в таблицу. Можно использовать и такую форму: Range(Cells(1, 1), Cells(15, 12)), где индексы строк и столбцов можно заменить переменными.

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

МояТаблица1 — имя, присваиваемое создаваемой таблице. Имя должно быть без пробелов: при указании в коде VBA названия таблицы с пробелами, во время его выполнения Excel заменит пробелы знаками подчеркивания (по крайней мере, так происходит в Excel 2016).

Таблица будет создана со стилем по умолчанию (TableStyleMedium2 в Excel 2016).

Стиль умной таблицы

Присвоение стиля таблице (изменение стиля) осуществляется с помощью свойства TableStyle объекта ListObjects:

ActiveSheet.ListObjects(«МояТаблица1»).TableStyle = «TableStyleMedium15»

Свойство TableStyle может принимать следующие значения:

  • TableStyleLight (светлый) с индексом от 1 до 21 (в Excel 2016);
  • TableStyleMedium (средний) с индексом от 1 до 28 (в Excel 2016);
  • TableStyleDark (темный) с индексом от 1 до 11 (в Excel 2016).

Например, TableStyleLight5, TableStyleMedium24, TableStyleDark8.

Чтобы отменить стиль таблицы в коде VBA, необходимо свойству TableStyle присвоить пустую строку:

ActiveSheet.ListObjects(«МояТаблица1»).TableStyle = «»

Этому коду соответствует выбор в разделе «Конструктор» на ленте инструментов Excel самого первого значка стилей в разделе «Светлый».

Добавление строки итогов

Строка итогов умной таблицы добавляется следующим образом:

ActiveSheet.ListObjects(«МояТаблица1»).ShowTotals = True

Удаляется строка итогов умной таблицы так:

ActiveSheet.ListObjects(«МояТаблица1»).ShowTotals = False

Удаление умной таблицы

Удалить умную таблицу очень просто:

ActiveSheet.ListObjects(«МояТаблица1»).Delete

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

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

Для создания такой таблицы необходимо:

  • определить диапазон, если он заранее не известен (иногда для этого может понадобиться определить номер последней заполненной строки);
  • добавить границы ячеек;
  • отформатировать строку заголовков;
  • добавить строку итогов, если она необходима.

Подробнее о создании пользовательской таблицы в Примере 2.

Примеры создания таблиц

Задание для примеров

Набор данных для создания таблиц

Набор данных для примеров создания таблиц

Допустим, на лист Excel переданы данные для заполнения табличной части товарного чека со следующими условиями:

  • в табличной части 5 граф: № п/п, Наименование, Количество, Цена и Сумма;
  • сколько наименований добавил пользователь неизвестно.

Нам необходимо:

  • определить количество строк;
  • добавить строку заголовков;
  • отобразить сетку (границы ячеек);
  • добавить строку итогов.

Таблицу будем оформлять двумя способами: путем создания умной и пользовательской таблиц.

Пример 1 — умная таблица

Упаковываем набор данных из задания в умную таблицу:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

Sub test1()

‘Объявляем переменную для присвоения ей количества строк

Dim a As Long

‘Определяем количество строк

a = Cells(1, 1).CurrentRegion.Rows.Count

‘Создаем умную таблицу с добавлением строки заголовков

ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(1, 1),Cells(a, 5)), , xlNo).Name _

= «ТоварныйЧек1»

‘Изменяем названия граф

Cells(1, 1) = «№ п/п»

Cells(1, 2) = «Наименование»

Cells(1, 3) = «Количество»

Cells(1, 4) = «Цена»

Cells(1, 5) = «Сумма»

‘Добавляем строку итогов

ActiveSheet.ListObjects(«ТоварныйЧек1»).ShowTotals = True

‘Стиль оставляем по умолчанию

End Sub

Результат выполнения кода Примера 1 получится такой:

Умная таблица из заданного набора данных

Умная таблица из заданного набора данных

Пример 2 — «обычная» таблица

Упаковываем набор данных из задания в пользовательскую таблицу:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

Sub test2()

‘Объявляем переменную для присвоения ей количества строк

Dim a As Long

‘Определяем количество строк

a = Cells(1, 1).CurrentRegion.Rows.Count

‘Добавляем строку заголовков

Cells(1, 1).EntireRow.Insert

‘Указываем названия граф

Cells(1, 1) = «№ п/п»

Cells(1, 2) = «Наименование»

Cells(1, 3) = «Количество»

Cells(1, 4) = «Цена»

Cells(1, 5) = «Сумма»

‘Добавляем сетку

Range(Cells(1, 1), Cells(a + 1, 5)).Borders.LineStyle = True

‘Добавляем строку итогов

Cells(a + 2, 4) = «Итого:»

With Cells(a + 2, 5)

.FormulaR1C1 = «=SUM(R[-« & a & «]C:R[-1]C)»

.Borders.LineStyle = True

.Font.Bold = True

End With

‘Выделяем заголовки жирным шрифтом и

‘применяем автоподстройку ширины столбцов

With Range(Cells(1, 1), Cells(1, 5))

.Font.Bold = True

.EntireColumn.AutoFit

End With

End Sub

Результат выполнения кода Примера 2 получится такой:

Пользовательская таблица из заданного набора данных

Пользовательская таблица из заданного набора данных

Если решите поэкспериментировать с моим кодом, добавьте любые данные в пять колонок на активном листе Excel, количество строк может быть любым, в пятой графе должны быть числа.


О работе с умной таблицей (обращение к ячейкам, строкам и столбцам; добавление и удаление строк и столбцов) рассказано в статье VBA Excel. Работа с умной таблицей


В этом уроке я покажу Вам самые популярные макросы в 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.

Заполнение таблицы данными из таблиц других листов

Искра

Дата: Среда, 13.11.2013, 23:31 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Доброго времени суток!

Это моя первая сложная работа с макросами. Части поставленной задачи не могу разобрать. Помогите, пожалуйста, записать код макроса на следующую таблицу. На листах 1 и 2 есть данные, которые постоянно пополняются. На листе 3 должна формироваться таблица с объединенными данными с этих двух листов по номеру заказа. ФИО могут отличаться на этих двух листах, тогда по ячейкам в обобщенной таблице факта и плана может быть «пусто».

Еще на листе 4 есть таблица данных, из которой также по данным номера заказа будет формироваться таблица на листе 5. Из всплывающего списка в ячейке А2 будет выбираться номер заказа, и по этому номеру будет заполняться таблица. К датам легко применима формула СУММАЕСЛИ, но! К заказчику и № договора ее применить нельзя. Может быть есть другая формула, которую можно применить, или же макросом записать такое действие?

Буду благодарна Вашей помощи!!!

К сообщению приложен файл:

__.xlsm
(13.4 Kb)

Сообщение отредактировал ИскраСреда, 13.11.2013, 23:33

 

Ответить

nilem

Дата: Четверг, 14.11.2013, 08:51 |
Сообщение № 2

Группа: Авторы

Ранг: Старожил

Сообщений: 1612


Репутация:

563

±

Замечаний:
0% ±


Excel 2013, 2016

Привет
с листами 4 и 5 — непонятно. А с 1-3 попробуйте так
[vba]

Код

Sub ertert()
Dim x, y, i&, j&
With Sheets(«Sheet1»)
     x = .Range(«A1:D» & .Cells(Rows.Count, 1).End(xlUp).Row).Value
End With: x(1, 4) = «Факт»
With CreateObject(«Scripting.Dictionary»)
     .CompareMode = 1
     For i = 1 To UBound(x)
         .Item(x(i, 1) & «~» & x(i, 2)) = i
     Next i
     With Sheets(«Sheet2»)
         y = .Range(«A2:D» & .Cells(Rows.Count, 1).End(xlUp).Row).Value
     End With
     For i = 1 To UBound(y)
         If .Exists(y(i, 1) & «~» & y(i, 2)) Then
             x(.Item(y(i, 1) & «~» & y(i, 2)), 4) = y(i, 3)
         Else
             j = j + 1
             y(j, 1) = y(i, 1): y(j, 2) = y(i, 2)
             y(j, 3) = «»: y(j, 4) = y(i, 3)
         End If
     Next i
End With
With Sheets(«Sheet3»).Range(«A1»)
     .CurrentRegion.ClearContents
     .Resize(UBound(x), 4).Value = x
     .Item(UBound(x) + 1, 1).Resize(j, 4).Value = y
     With .CurrentRegion
         .Sort Key1:=.Cells(1, 1), Order1:=xlAscending, Header:=xlYes
     End With
End With
End Sub

[/vba]
зеленая кнопка в файле

К сообщению приложен файл:

_ertert.xlsm
(24.6 Kb)


Яндекс.Деньги 4100159601573

 

Ответить

KuklP

Дата: Четверг, 14.11.2013, 09:21 |
Сообщение № 3

Группа: Проверенные

Ранг: Старожил

Сообщений: 2369


Репутация:

486

±

Замечаний:
0% ±


2003-2010


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

Сообщение отредактировал KuklPЧетверг, 14.11.2013, 09:22

 

Ответить

Искра

Дата: Понедельник, 02.12.2013, 22:55 |
Сообщение № 4

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

nilem, благодарю! Наконец-то я вернулась к этому макросу… Есть такой момент, что макрос заполняет таблицу просто всеми данными, а не по фильтру номера заказа ((((((((( Сейчас немного изменила таблицу конечную, чтобы примерно понимать, как фильтр должен быть… Прошу помощи, если есть возможность!!!

К сообщению приложен файл:

5908477.xlsm
(10.4 Kb)

 

Ответить

nilem

Дата: Вторник, 03.12.2013, 09:15 |
Сообщение № 5

Группа: Авторы

Ранг: Старожил

Сообщений: 1612


Репутация:

563

±

Замечаний:
0% ±


Excel 2013, 2016

проверяйте


Яндекс.Деньги 4100159601573

 

Ответить

Гость

Дата: Вторник, 03.12.2013, 14:33 |
Сообщение № 6

Ого! Всё работает!!! Благодарю от души!!! Буду изучать его работу))))

 

Ответить

Искра

Дата: Четверг, 27.02.2014, 11:43 |
Сообщение № 7

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Доброго времени суток, уважаемые участники данного форума и в частности автор nilem!!
С моим файлом немного усложнилась задача. Макрос прекрасно работает, когда в ячейке А2 на листе 3 вписываем число. Но сейчас в данной ячейке будут данные из списка заказов, сформированного с помощью «проверки данных». Также в листах 1 и 2 по столбцам А данные внесены формулами. И макрос логично «ругается» на ячейку А2 листа 3 с range.value. Не могу понять, как это исправить, чтобы макрос работал в этом случае.Прикрепляю файл примером, как это выглядит. Надеюсь на Вашу помощь.

Сообщение отредактировал ИскраЧетверг, 27.02.2014, 13:21

 

Ответить

Искра

Дата: Среда, 05.03.2014, 12:41 |
Сообщение № 8

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Разобралась сама)))
Все оказалось просто:
Dim x, y (), I&, j&, nz& — где nz убираем &

 

Ответить

severyanin

Дата: Среда, 23.03.2016, 14:29 |
Сообщение № 9

Группа: Пользователи

Ранг: Новичок

Сообщений: 14


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

подсобите аналогичная табличка но добавлен отбор. по группам и периодам. спасиб.
[moder]Читаем Правила форума, создаём свою тему. Эта тема закрыта[/moder]

К сообщению приложен файл:

77.rar
(30.4 Kb)

Сообщение отредактировал PelenaСреда, 23.03.2016, 14:33

 

Ответить

Содержание

  1. Способы записи макросов в Excel
  2. Создание макросов
  3. Создать макрос в Excel с помощью макрорекордера
  4. Написание макросов в Excel
  5. Настройка разрешения для использования макросов в Excel
  6. Вариант 1: Автоматическая запись макросов
  7. Запуск макроса
  8. Редактирование макроса
  9. Создание кнопки для запуска макросов в панели инструментов
  10. Создание графической кнопки на листе Excel
  11. Чтобы записать макрос, следует:
  12. Отображение вкладки “Разработчик” в ленте меню
  13. Абсолютная и относительная запись макроса
  14. Расширение файлов Excel, которые содержат макросы
  15. Что нельзя сделать с помощью макрорекодера?
  16. Редактор Visual Basic
  17. Запускаем выполнение макроса
  18. Корректируем макрос

Макрос записывается двумя способами: автоматически и вручную. Воспользовавшись первым вариантом, вы просто записываете определенные действия в Microsoft Excel, которые выполняете в данный момент времени. Потом можно будет воспроизвести эту запись. Такой метод очень легкий и не требует знания кода, но применение его на практике довольно ограничено. Ручная запись, наоборот, требует знаний программирования, так как код набирается вручную с клавиатуры. Однако грамотно написанный таким образом код может значительно ускорить выполнение процессов.

Создание макросов

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

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

Создать макрос в Excel с помощью макрорекордера

Для начала проясним, что собой представляет макрорекордер и при чём тут макрос.

Макрорекордер – это вшитая в Excel небольшая программка, которая интерпретирует любое действие пользователя в кодах языка программирования VBA и записывает в программный модуль команды, которые получились в процессе работы. То есть, если мы при включенном макрорекордере, создадим нужный нам ежедневный отчёт, то макрорекордер всё запишет в своих командах пошагово и как итог создаст макрос, который будет создавать ежедневный отчёт автоматически.

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

  • Записать макрорекордер может только то, что может пощупать, а значит записывать действия он может только в том случае, когда используются кнопки, иконки, команды меню и всё в этом духе, такие варианты как сортировка по цвету для него недоступна;
  • В случае, когда в период записи была допущена ошибка, она также запишется. Но можно кнопкой отмены последнего действия, стереть последнюю команду которую вы неправильно записали на VBA;
  • Запись в макрорекордере проводится только в границах окна MS Excel и в случае, когда вы закроете программу или включите другую, запись будет остановлена и перестанет выполняться.

Для включения макрорекордера на запись необходимо произвести следующие действия:

  • в версии Excel от 2007 и к более новым вам нужно на вкладке «Разработчик» нажать кнопочку «Запись макроса»
  • в версиях Excel от 2003 и к более старым (они еще очень часто используются) вам нужно в меню «Сервис» выбрать пункт «Макрос» и нажать кнопку «Начать запись».

Следующим шагом в работе с макрорекордером станет настройка его параметров для дальнейшей записи макроса, это можно произвести в окне «Запись макроса», где:

  • поле «Имя макроса» — можете прописать понятное вам имя на любом языке, но должно начинаться с буквы и не содержать в себе знаком препинания и пробелы;
  • поле «Сочетание клавиш» — будет вами использоваться, в дальнейшем, для быстрого старта вашего макроса. В случае, когда вам нужно будет прописать новое сочетание горячих клавиш, то эта возможность будет доступна в меню «Сервис» — «Макрос» — «Макросы» — «Выполнить» или же на вкладке «Разработчик» нажав кнопочку «Макросы»
  • поле «Сохранить в…» — вы можете задать то место, куда будет сохранен (но не послан) текст макроса, а это 3 варианта:
    • «Эта книга» — макрос будет записан в модуль текущей книги и сможет быть выполнен только в случае, когда данная книга Excel будет открыта;
    • «Новая книга» — макрос будет сохранен в тот шаблон, на основе которого в Excel создается пустая новая книга, а это значит, что макрос станет доступен во всех книгах, которые будут создаваться на этом компьютере с этого момента;
    • «Личная книга макросов» — является специальной книгой макросов Excel, которая называется «Personal.xls» и используется как специальное хранилище-библиотека макросов. При старте макросы из книги «Personal.xls» загружаются в память и могут быть запущены в любой книге в любой момент.

  • поле «Описание» — здесь вы можете описать, что и как должен делать макрос, для чего он создавался и какие функции несет, это чисто информативное поле, что называется на память.

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

Написание макросов в Excel

Код макроса Excel написанный на языке Visual Basic for Application (VBA), а его выполняет инструмент приложения, к которому он присоединен. Большинство этих инструментов не доступно на уровне окна программы Excel. Как написать макрос.

Теперь продемонстрируем на примере информацию о том, как писать, редактировать и выполнять код макроса.

Чтобы написать макрос:

  1. Откройте рабочую книгу Excel, в которой необходимо использовать макрос: «РАЗРАБОТЧИК»-«Код»-«Visual Basic». Или нажмите комбинацию горячих клавиш ALT+F11.
  2. Перед началом работы в редакторе следует сделать простую настройку. Выберите инструмент в редакторе Visual Basic: «Tools»-«Options». И на вкладке «Editor» активируйте опцию «Require Variable Declaration». Это позволит реализовать автоматическое заполнение инструкций Options Explicit в начале каждого ново созданного кода. А в поле ввода «Tab Width:» укажите значение 2 вместо 4-х. Это позволит уменьшить ширину кода. Данная настройка редактора распространяется на все листы, но в границах одной рабочей книги.
  3. Выберите инструмент: «Insert»-«Module» чтобы создать новый стандартный модуль для макросов. В появившемся окне модуля под текстом Option Explicit введите следующий код макроса:
  4. SubMyMakros()
    DimpolzovatelAs String
    Dimdata_segodnyaAs Date
    polzovatel = Application.UserName
    data_segodnya = Now
    MsgBox"Макрос запустил пользователь: "& polzovatel & vbNewLine & data_segodnya
    End Sub

  5. Нажмите на кнопку в редакторе «Run Macro» или клавишу F5 на клавиатуре. В появившемся окне «Macros» нажмите на кнопку «Run», чтобы посмотреть результат работы макроса.

Примечание. Если в главном меню отсутствует закладка «РАЗРАБОТЧИК», тогда ее необходимо активировать в настройках: «ФАЙЛ»-«Параметры»-«Настроить ленту». В правом списке «Основные вкладки:» активируйте галочкой опцию «Разработчик» и нажмите на кнопку ОК.

Настройка разрешения для использования макросов в Excel

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

Вариант 1: Автоматическая запись макросов

Прежде чем начать автоматическую запись макросов, нужно включить их в программе Microsoft Excel. Для этого воспользуйтесь нашим отдельным материалом.

Подробнее: Включение и отключение макросов в Microsoft Excel

Когда все готово, приступаем к записи.

  1. Перейдите на вкладку «Разработчик». Кликните по кнопке «Запись макроса», которая расположена на ленте в блоке инструментов «Код».
  2. Открывается окно настройки записи макроса. Тут можно указать любое имя для него, если установленное по умолчанию вас не устраивает. Главное, чтобы имя это начиналось с буквы, а не с цифры, а также в названии не должно быть пробелов. Мы оставили название по умолчанию – «Макрос1».
  3. Тут же при желании можно установить сочетание клавиш, при нажатии на которые макрос будет запускаться. Первой клавишей обязательно должна быть Ctrl, а вторую пользователь устанавливает самостоятельно. Мы в качестве примера установили клавишу М.
  4. Далее следует определить, где будет храниться макрос. По умолчанию он расположен в этой же книге (файле), но при желании можно установить хранение в новой книге или в отдельной книге макросов. Мы оставим значение по умолчанию.
  5. В самом нижнем поле можно оставить любое подходящее по контексту описание макроса, но это делать не обязательно. Когда все настройки выполнены, жмем на кнопку «OK».
  6. После этого все ваши действия в данной книге (файле) Excel будут записываться в макрос до тех пор, пока вы сами не остановите запись.
  7. Для примера запишем простейшее арифметическое действие: сложение содержимого трех ячеек (=C4+C5+C6).
  8. Когда алгоритм был выполнен, щелкаем на кнопку «Остановить запись». Эта кнопка преобразовалась из кнопки «Запись макроса» после включения записи.

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

Для проверки того, как работает записанный макрос, выполним несколько простых действий.

  1. Кликаем в том же блоке инструментов «Код» по кнопке «Макросы» или жмем сочетание клавиш Alt + F8.
  2. После этого открывается окно со списком записанных макросов. Ищем макрос, который мы записали, выделяем его и кликаем на кнопку «Выполнить».
  3. Можно поступить еще проще и не вызывать даже окно выбора макросов, так как на первом этапе мы задали сочетание клавиш для быстрого вызова макроса. В нашем случае это Ctrl + М. Жмем данную комбинацию на клавиатуре, после чего он запускается.
  4. Как видим, он выполнил в точности все те действия, которые были записаны ранее.

Редактирование макроса

Естественно, при желании вы можете корректировать созданный макрос, чтобы всегда поддерживать его в актуальном состоянии и исправлять некоторые неточности, допущенные во время процесса записи.

  1. Снова щелкаем на кнопку «Макросы». В открывшемся окне выбираем нужный и кликаем по кнопке «Изменить».
  2. Открывается «Microsoft Visual Basic» (VBE) – среда, где происходит их редактирование.
  3. Запись каждого макроса начинается с команды Sub, а заканчивается командой End Sub. Сразу же после Sub указывается имя макроса. Оператор Range("…").Select указывает выбор ячейки. Например, при команде «Range(«C4»).Select» выбирается ячейка «C4». Оператор ActiveCell.FormulaR1C1 используется для записи действий в формулах и других расчетов.
  4. Попытаемся немного изменить макрос, дописав выражение:

    Range("C3").Select
    ActiveCell.FormulaR1C1 = "11"

  5. Выражение ActiveCell.FormulaR1C1 = "=R[-3]C+R[-2]C+R[-1]C" заменим на ActiveCell.FormulaR1C1 = "= R[-4]C+R[-3]C+R[-2]C+R[-1]C".
  6. Закрываем редактор и запускаем макрос. Как видим, вследствие введенных нами изменений была добавлена дополнительная ячейка с данными. Она также была включена в расчет общей суммы.
  7. В случае если макрос слишком большой, его выполнение может занять значительное время, но внесением ручного изменения в код мы можем ускорить процесс. Добавляем команду Application.ScreenUpdating = False. Она позволит сохранить вычислительные мощности, а значит, ускорить работу. Это достигается путем отказа от обновления экрана во время выполнения вычислительных действий. Чтобы возобновить обновление после выполнения макроса, в его конце пишем команду Application.ScreenUpdating = True.
  8. Добавим также команду Application.Calculation = xlCalculationManual в начало кода, а в его конец дописываем Application.Calculation = xlCalculationAutomatic. Этим мы сначала отключаем автоматический пересчет результата после каждого изменения ячеек, а в конце макроса – включаем. Таким образом, Excel подсчитает результат только один раз, а не будет его постоянно пересчитывать, чем сэкономит время.

Создание кнопки для запуска макросов в панели инструментов

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

  1. Кнопка в панели инструментов в MS Excel 2003 и более старше. Вам нужно в меню «Сервис» в пункте «Настройки» перейти на доступную вкладку «Команды» и в окне «Категории» выбрать команду «Настраиваемая кнопка» обозначена жёлтым колобком или смайликом, кому как понятней или удобней. Вытащите эту кнопку на свою панель задач и, нажав правую кнопку мыши по кнопке, вызовите ее контекстное меню, в котором вы сможете отредактировать под свои задачи кнопку, указав для нее новую иконку, имя и назначив нужный макрос.
  2. Кнопка в панели вашего быстрого доступа в MS Excel 2007 и более новее. Вам нужно клацнуть правой кнопкой мышки на панели быстрого доступа, которое находится в верхнем левом углу окна MS Excel и в открывшемся контекстном меню выбираете пункт «Настройка панели быстрого доступа». В диалоговом окне настройки вы выбираете категорию «Макросы» и с помощью кнопки «Добавить» вы переносите выбранный со списка макрос в другую половинку окна для дальнейшего закрепления этой команды на вашей панели быстрого доступа.

Создание графической кнопки на листе Excel

Данный способ доступен для любой из версий MS Excel и заключается он в том, что мы вынесем кнопку прямо на наш рабочий лист как графический объект. Для этого вам нужно:

  • В MS Excel 2003 и более старше переходите в меню «Вид», выбираете «Панель инструментов» и нажимаете кнопку «Формы».
  • В MS Excel 2007 и более новее вам нужно на вкладке «Разработчик» открыть выпадающее меню «Вставить» и выбрать объект «Кнопка».

После всего этого вы должны нарисовать кнопку на вашем листе при зажатой левой кнопке мыши. После окончания процесса рисования включится автоматически окошко, где вам нужно будет выбрать тот макрос, который обязан, выполнятся при нажатии на вашей кнопке.

Чтобы записать макрос, следует:

  1. Войти во вкладку «разработчик».
  2. Выбрать запись макроса.
  3. Выбрать имя макроса (в имени нельзя использовать пробелы и дефисы);
  4. Можно выбрать сочетание клавиш, при нажатии которых будет начинаться запись макроса;
  5. Выбрать место сохранения:

— при сохранении в «Эта книга» макрос будет работать только в текущем документе;

— при сохранении в «Личная книга» макрос будет работать во всех документах на Вашем компьютере.

  1. Можно добавить описание макроса, оно поможет Вам вспомнить, какие действия совершает макрос.
  2. Нажать «Ок».
  3. Если вы не указали сочетание клавиш, запись начнется сразу после нажатия кнопки «Ок».
  4. Когда идет запись, Вы должны совершать требуемую последовательность действий.
  5. Когда закончите, нажимайте кнопку остановить запись.

Записанные макросы отображаются в книге макросов.

Чтобы их посмотреть следует нажать кнопку «макросы». В появившемся окне появится список макросов. Выберете нужный макрос и нажмите «Выполнить».

Макросы, находящиеся в книге можно редактировать. Для этого нужно выбрать макрос и нажать кнопку «Изменить». При нажатии на кнопку «Изменить» откроется редактор макросов с записанным на языке VBA скриптом.

Отображение вкладки “Разработчик” в ленте меню

Перед тем как записывать макрос, нужно добавить на ленту меню Excel вкладку “Разработчик”. Для этого выполните следующие шаги:

  1. Щелкните правой кнопкой мыши по любой из существующих вкладок на ленте и нажмите «Настроить ленту». Он откроет диалоговое окно «Параметры Excel».
  2. В диалоговом окне «Параметры Excel» у вас будут параметры «Настроить ленту». Справа на панели «Основные вкладки» установите флажок «Разработчик».
  3. Нажмите «ОК».

В результате на ленте меню появится вкладка “Разработчик”

Абсолютная и относительная запись макроса

Вы уже знаете про абсолютные и относительные ссылки в Excel? Если вы используете абсолютную ссылку для записи макроса, код VBA всегда будет ссылаться на те же ячейки, которые вы использовали. Например, если вы выберете ячейку A2 и введете текст “Excel”, то каждый раз – независимо от того, где вы находитесь на листе и независимо от того, какая ячейка выбрана, ваш код будет вводить текст “Excel” в ячейку A2.

Если вы используете параметр относительной ссылки для записи макроса, VBA не будет привязываться к конкретному адресу ячейки. В этом случае программа будет “двигаться” относительно активной ячейки. Например, предположим, что вы уже выбрали ячейку A1, и вы начинаете запись макроса в режиме относительной ссылки. Теперь вы выбираете ячейку A2, вводите текст Excel и нажмите клавишу Enter. Теперь, если вы запустите этот макрос, он не вернется в ячейку A2, вместо этого он будет перемещаться относительно активной ячейки. Например, если выбрана ячейка B3, она переместится на B4, запишет текст “Excel” и затем перейдет к ячейке K5.

Теперь давайте запишем макрос в режиме относительных ссылок:

  1. Выберите ячейку A1.
  2. Перейдите на вкладку “Разработчик”.
  3. В группе “Код” нажмите кнопку “Относительные ссылки”. Он будет подсвечиваться, указывая, что он включен.
  4. Нажмите кнопку “Запись макроса”.
  5. В диалоговом окне “Запись макроса” введите имя для своего макроса. Например, имя “ОтносительныеСсылки”.
  6. В опции “Сохранить в” выберите “Эта книга”.
  7. Нажмите “ОК”.
  8. Выберите ячейку A2.
  9. Введите текст “Excel” (или другой как вам нравится).
  10. Нажмите клавишу Enter. Курсор переместиться в ячейку A3.
  11. Нажмите кнопку “Остановить запись” на вкладке “Разработчик”.

Макрос в режиме относительных ссылок будет сохранен.

Теперь сделайте следующее.

  1. Выберите любую ячейку (кроме A1).
  2. Перейдите на вкладку “Разработчик”.
  3. В группе “Код” нажмите кнопку “Макросы”.
  4. В диалоговом окне “Макрос” кликните на сохраненный макрос “ОтносительныеСсылки”.
  5. Нажмите кнопку “Выполнить”.

Как вы заметите, макрос записал текст “Excel” не в ячейки A2. Это произошло, потому что вы записали макрос в режиме относительной ссылки. Таким образом, курсор перемещается относительно активной ячейки. Например, если вы сделаете это, когда выбрана ячейка B3, она войдет в текст Excel – ячейка B4 и в конечном итоге выберет ячейку B5.

Вот код, который записал макрорекодер:

 Sub ОтносительныеСсылки() ' ' ОтносительныеСсылки Макрос ' ' ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "Excel" ActiveCell.Offset(1, 0).Range("A1").Select End Sub 

Обратите внимание, что в коде нет ссылок на ячейки B3 или B4. Макрос использует Activecell для ссылки на текущую ячейку и смещение относительно этой ячейки.

Не обращайте внимание на часть кода Range(«A1»). Это один из тех случаев, когда макрорекодер добавляет ненужный код, который не имеет никакой цели и может быть удален. Без него код будет работать отлично.

Расширение файлов Excel, которые содержат макросы

Когда вы записываете макрос или вручную записываете код VBA в Excel, вам необходимо сохранить файл с расширением файла с поддержкой макросов (.xlsm).

До Excel 2007 был достаточен один формат файла – .xls. Но с 2007 года .xlsx был представлен как стандартное расширение файла. Файлы, сохраненные как .xlsx, не могут содержать в себе макрос. Поэтому, если у вас есть файл с расширением .xlsx, и вы записываете / записываете макрос и сохраняете его, он будет предупреждать вас о сохранении его в формате с поддержкой макросов и покажет вам следующее диалоговое окно:

Если вы выберете “Нет”, Excel сохранить файл в формате с поддержкой макросов. Но если вы нажмете “Да”, Excel автоматически удалит весь код из вашей книги и сохранит файл как книгу в формате .xlsx. Поэтому, если в вашей книге есть макрос, вам нужно сохранить его в формате .xlsm, чтобы сохранить этот макрос.

Что нельзя сделать с помощью макрорекодера?

Макро-рекордер отлично подходит для вас в Excel и записывает ваши точные шаги, но может вам не подойти, когда вам нужно сделать что-то большее.

  • Вы не можете выполнить код без выбора объекта. Например, если вы хотите, чтобы макрос перешел на следующий рабочий лист и выделил все заполненные ячейки в столбце A, не выходя из текущей рабочей таблицы, макрорекодер не сможет этого сделать. В таких случаях вам нужно вручную редактировать код.
  • Вы не можете создать пользовательскую функцию с помощью макрорекордера. С помощью VBA вы можете создавать пользовательские функции, которые можно использовать на рабочем листе в качестве обычных функций.
  • Вы не можете создавать циклы с помощью макрорекордера. Но можете записать одно действие, а цикл добавить вручную в редакторе кода.
  • Вы не можете анализировать условия: вы можете проверить условия в коде с помощью макрорекордера. Если вы пишете код VBA вручную, вы можете использовать операторы IF Then Else для анализа условия и запуска кода, если true (или другой код, если false).

Редактор Visual Basic

В Excel есть встроенный редактор Visual Basic, который хранит код макроса и взаимодействует с книгой Excel. Редактор Visual Basic выделяет ошибки в синтаксисе языка программирования и предоставляет инструменты отладки для отслеживания работы и обнаружения ошибок в коде, помогая таким образом разработчику при написании кода.

Запускаем выполнение макроса

Чтобы проверить работу записанного макроса, нужно сделать следующее:

  1. В той же вкладке (“Разработчик”) и группе “Код” нажимаем кнопку “Макросы” (также можно воспользоваться горячими клавишами Alt+F8).
  2. В отобразившемся окошке выбираем наш макрос и жмем по команде “Выполнить”.Примечание: Есть более простой вариант запустить выполнение макроса – воспользоваться сочетанием клавиш, которое мы задали при создании макроса.
  3. Результатом проверки будет повторение ранее выполненных (записанных) действий.

Корректируем макрос

Созданный макрос можно изменить. Самая распространенная причина, которая приводит к такой необходимости – сделанные при записи ошибки. Вот как можно отредактировать макрос:

  1. Нажимаем кнопку “Макросы” (или комбинацию Ctrl+F8).
  2. В появившемся окошке выбираем наш макрос и щелкаем “Изменить”.
  3. На экране отобразится окно редактора “Microsoft Visual Basic”, в котором мы можем внести правки. Структура каждого макроса следующая:
    • открывается с команды “Sub”, закрывается – “End Sub”;
    • после “Sub” отображается имя макроса;
    • далее указано описание (если оно есть) и назначенная комбинация клавиш;
    • команда “Range(“…”).Select” возвращает номер ячейки. К примеру, “Range(“B2″).Select” отбирает ячейку B2.
    • В строке “ActiveCell.FormulaR1C1” указывается значение ячейки или действие в формуле.
  4. Давайте попробуем скорректировать макрос, а именно, добавить в него ячейку B4 со значением 3. В код макроса нужно добавить следующие строки:
    Range("B4").Select
    ActiveCell.FormulaR1C1 = "3"
  5. Для результирующей ячейки D2, соответственно, тоже нужно изменить начальное выражение на следующее:
    ActiveCell.FormulaR1C1 = "=RC[-2]*R[1]C[-2]*R[2]C[-2]".Примечание: Обратите внимание, что адреса ячеек в данной строке (ActiveCell.FormulaR1C1) пишутся в стиле R1C1.
  6. Когда все готово, редактор можно закрывать (просто щелкаем на крестик в правом верхнем углу окна).
  7. Запускаем выполнение измененного макроса, после чего можем заметить, что в таблице появилась новая заполненная ячейка (B4 со значением “3”), а также, пересчитан результат с учетом измененной формулы.
  8. Если мы имеем дело с большим макросом, на выполнение которого может потребоваться немало времени, ручное редактирование изменений поможет быстрее справиться с задачей.
    • Добавив в конце команду Application.ScreenUpdating = False мы можем ускорить работу, так как во время выполнения макроса, изменения на экране отображаться не будут.
    • Если потребуется снова вернуть отображение на экране, пишем команду: Application.ScreenUpdating = True.
  9. Чтобы не нагружать программу пересчетом после каждого внесенного изменения, в самом начале пишем команду Application.Calculation = xlCalculationManual, а в конце – Application.Calculation = xlCalculationAutomatic. Теперь вычисление будет выполняться только один раз.

Источники

  • https://lumpics.ru/how-to-create-a-macro-in-excel/
  • https://MicroExcel.ru/sozdanie-makrosov/
  • http://topexcel.ru/kak-sozdat-makros-v-excel/
  • https://exceltable.com/vba-macros/kak-napisat-makros
  • https://office-guru.ru/excel/samouchitel-po-rabote-s-makrosami-v-excel-449.html
  • http://RuExcel.ru/simple-macros/
  • https://micro-solution.ru/excel/vba/first-macros

Программы, надстройки и макросы для обработки таблиц Excel (преобразование и форматирование таблиц, создание новых таблиц из исходных)

  • Надстройка FillDocuments для MS Excel: общие сведения

    Предназначение программы: заполнение множества документов данными из Excel нажатием одной кнопки.
    Для работы программы требуется таблица Excel с данными для подстановки, и папка с шаблоном (шаблонами) документов.
    В качестве шаблонов можно использовать файлы Word и Excel.
    На выходе получаются заполненные файлы исходного…

  • Логотип надстройки Unification

    Программа «Прайс лист», выполненная в виде надстройки для Excel, позволяет легко автоматизировать обработку прайс-листов.
    Вспомните ситуацию: поставщики в очередной раз прислали свои прайс-листы в Excel — конечно, в совершенно разных форматах — и вам нужно объединить данные из всех этих файлов в одну таблицу. А составители этих таблиц будто специально хотели усложнить вам жизнь…

  • Сравнение столбцов в Excel, и подстановка значений в таблицу

    Программа предназначена для сравнения и подстановки значений в таблицах Excel.
    Если вам надо сравнить 2 таблицы (по одному столбцу, или по нескольким),
    и для совпадающих строк скопировать значения выбранных столбцов из одной таблицы в другую,
    надстройка «Lookup» поможет сделать это нажатием одной кнопки.
     
    То же самое можно сделать при помощи формулы =ВПР(), но:

    формулы…

  • Обработка данных из файлов Excel - отображение информации на индикаторе состояния


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

    функцию FilenamesCollection для получения списка файлов в папке

    функцию GetFolder для вывода диалогового окна выбора папки с запоминанием выбранной папки

    прогресс-бар для отображения…

  • Форма для выбора создаваемых полей, и настройки их параметров


    Программа предназначена для автоматизации процесса создания форм ввода и редактирования данных из таблиц Excel.
    Сейчас реализована лишь малая часть программы.
    Но уже сейчас программа достаточно точно распознаёт типы полей таблицы, и для полей типа «выпадающий список» и «поле с маской ввода» формирует список значений и маску ввода соответственно.
    Как будет свободное время -…

  • Скриншот программы формирования договоров купли-продажи


    Программа предназначена для формирования (заполнения) договоров купли-продажи.
     
    Исходными данными выступает таблица сделок, и шаблон договора, в который при помощи формул подставляются значения из заданной строки таблицы сделок.
    Для запуска программы достаточно нажать зеленую кнопку — и сразу же начнётся формирование договоров (файлов Excel из одного листа) в автоматически созданной папке…


  • Макрос предназначен для создания текстовых файлов в кодировке UTF-8.
    Исходными данными является таблица Excel из 12 столбцов.
    Сначала, макрос создаёт папку для будущих текстовых файлов.
    Папка создаётся в том же каталоге, где расположена книга Excel.
    Далее, для каждой строки таблицы, макрос формирует подпапку,
    используя в качестве её названия текст из 7-го столбца таблицы.
    И потом, когда папка…

  • Данный макрос предназначен для поиска адресов электронной почты на листе Excel, с последующим выводом найденных адресов на отдельный лист.
    В прикреплённом файле, на первом листе («исходные данные»), ячейки заполнены неструктурированной информацией (смесь фамилий, адресов почты, прочей ненужной информации)
    Макрос вычленяет из текста ячеек адреса электронной почты, и выводит все найденные…

  • Скриншот надстройки поиска по всем листам Excel


    Надстройка SearchText предназначена для поиска заданного текста в книге Excel, с выводом результатов поиска на отдельный лист.
     
    При запуске надстройка формирует панель инструментов, с которой осуществляется запуск всех макросов:

    В Excel 2007 и 2010 панель инструментов можно найти на вкладке «Надстройки»:

    Надстройка SearchText является расширенной версией надстройки для…

  • Скриншот программы сравнения прайс-листов Excel


    Программа предназначена для сравнения цен конкурентов из их прайсов с прайс-листом вашей организации.

    ВНИМАНИЕ: Недавно разработана многофункциональная программа для обработки прайс-листов

    Новая программа объединения и обработки прайс-листов доступна на сайте для скачивания и тестирования на различных наборах прайс-листов.

    Исходными данными для программы являются:

    ваш прайс…

  • К примеру, есть у вас несколько десятков (или сотен) текстовых файлов с подобным содержимым:
    (количество файлов, и количество строк данных в каждом файле не ограничено)
    1c04;1J0-698-151-G;1 комплект тормозных накладок;1J0698151G;1J0698151G;5;1
    1c04;1H0698151A;Тормозные колодки;1H0698151A;1H0698151A;1;1
    1c04;1K0-698-151-B;Тормозные колодки;1K0698151B;1K0698151B;2;1
    А надо из всего этого…

  • Шаблон договора в Word, заполняемого макросом из Excel

    Программа предназначена для автоматизации формирования договоров комиссии и купли автотранспортного средства.
    В качестве исходных данных выступают:

    таблица Excel с реквизитами создаваемых документов
    папка с шаблонами договоров (в формате dot)

    В исходной таблице Excel занесены все необходимые исходные данные для заполнения бланков договоров, а также, при помощи пользовательских формул (UDF),…

  • Главное меню программы по работе с базой данных «Преподаватели»


    База данных «Преподаватели» предназначена для автоматизации работы администрации учебных заведений.

    Программа обеспечивает выполнение всех необходимых операций по приему документов, поиску и анализу информации, составлению отчетов.

    Эта база данных представляюет собой урезанную и немного изменённую версию программы АИСС СПК.

    Программа обеспечивает:

    Хранение полной…

  • Программа для загрузки цен с Яндекс.Маркета


    Программа предназначена для поиска минимальных цен на товары в Яндекс.Маркете
    UPDATE: Продажа программы прекращена 14 мая 2015 года, ввиду нерентабельности техподдержки
    (это единственная из моих программ, где я не могу гарантировать работоспособность, — т.к. всё зависит от Яндекса, который часто меняет сайт, и вводит ограничения типа капчи).
    Техподдержка программы тоже прекращена в полном…

  • Создание списка файлов из папки со значениями ячеек из этих файлов

    Макрос FilenamesWithValues предназначен для получения списка файлов Excel из заданной папки, и загрузки значений из каждого найденного файла.
    В отдельной ячейке задаётся путь к папке, которая будет просмотрена в поисках файлов Excel.
    При формировании списка файлов проставляются гиперссылки на найденные файлы, указывается дата создания файла.
    Из каждого файла загружаются значения с…

  • Форма редактирования и просмотра заказа


    Программа предназначена для работы с заказами, оформляемыми менеджерами на выставках.

    Основные функции программы:

    создание (заполнение) новых заказов

    редактирование существующих заказов

    объединение нескольких заказов в один

    формирование заявки на продукцию на основании данных их сформированных заказов

    Для каждого заказа предусмотрен выбор клиента из базы данных (если клиент…

  • АИСС "Абитуриент" - форма ввода данных абитуриента


    Программа АИСС «СПК» предназначена для автоматизации работы приемной комиссии колледжей и техникумов.

    АИСС обеспечивает выполнение всех необходимых операций по приему документов, поиску и анализу информации, составлению отчетов.

    Назначением программы является автоматизация труда работника приёмной комиссии учебного заведения.

    Программа обеспечивает:

    Хранение полной…


  • Если ваш макрос выдаёт ошибку при использовании метода SpecialCells — возможно, причина в установленной защите листа Excel.
    Почему разработчики Microsoft отключили работу этой функции на защищённых листах — не совсем понятно, но мы попробуем обойти это ограничение.
     

    Итак, нам надо получить все заполненные ячейки из некого диапазона листа Excel. 
    Обычно для этого используется вызов…

  • Отправка почты из Excel при помощи TheBAT!


    Если вам нужно рассылать письма из Excel,
    воспользуйтесь готовым решением в виде надстройки FillDocuments
    Ознакомьтесь с возможностями и способами рассылки писем из Excel,
    а также с инструкцией по настройке рассылки через TheBAT

    Макроc предназначен для автоматизированной рассылки почты из Excel.
    Для рассылки используется почтовая программа TheBAT!
    (подразумевается, что эта программа на…


  • Надстройка предназначена для выполнения множественных замен в выделенном диапазоне ячеек.
     

    После запуска надстройки, появляется панель инструментов из 3 кнопок:

    Кнопка «Выполнить все замены» — выполняет замены в выделенном диапазоне ячеек

    Кнопка «Изменить список замен» — отображает лист настроек, где в первом столбце находится список заменяемых…

  • Функция UniqueValues возвращает коллекцию, содержащую уникальные непустые значения из диапазона ячеек (или массива)
    Function UniqueValues(ByVal arr) As Collection
    ‘ функция получает в качестве параметра массив любой размерности
    ‘ возвращает коллекцию уникальных НЕПУСТЫХ значений
    Set UniqueValues = New Collection: On Error Resume Next
    For Each v In arr
    v = Trim(v): If Len(v…

  • Скриншот программы загрузки данных с официального сайта для размещения информации о государственных (муниципальных) учреждениях

    Программа выполняет поиск организаций по ИНН на официальном сайте для размещения информации о государственных (муниципальных) учреждениях bus.gov.ru, и заносит данные о найденных организациях в таблицу Excel.

    Смотрите также парсер сайта bus.gov.ru,который создаёт в Excel таблицу со списком организаций с этого сайта по выбранному региону и сферам деятельности.

    На скриншоте красным цветом…


  • Функция GetValue предназначена для получения данных из закрытой книги Excel
    Использовать такой способ имеет смысл только в том случае, если из большого файла надо получить значения только нескольких ячеек (или одного диапазона ячеек), и при этом точно известно расположение на листе интересующих нас ячеек, и имена листов
    Пример использования функции:
    Sub ПримерИспользования_GetValue()
    p =…

  • Результат объединения данных из файлов Excel


    Программа предназначена для загрузки списка товаров из актов о приеме-передаче основных средств.
    Поддерживаются акты по формам № ОС-3.1 и № ОС-3.3, возможно добавить поддержку актов других форм (в формате Excel).
    При запуске макроса, выводится диалоговое окно выбора папки, после чего, в выбранной папке, производится поиск всех файлов Excel.
    Для каждого из найденных файлов Excel, программа…


  • Данный макрос автоматизирует процесс переключения раскладки клавиатуры (смену языков ввода) при работе с таблицами в Excel.

    К примеру, вы заносите данные в таблицу, где в некоторые столбцы требуется вводить русские слова (фамилия, имя, и т.п.), а в другие столбцы — английские (марка и модель авто, и т.д.)

    Чтобы каждый раз не переключать раскладку вручную — можно воспользоваться WinAPI…

  • Часто бывает, что надо получить данные из другой, открытой вместе с используемой, книги Excel.
    Данная функция помогает получить ссылку на другую, открытую в текущий момент, книгу:
    Sub ПримерИспользования_GetAnotherWorkbook()
    Dim WB As Workbook
    Set WB = GetAnotherWorkbook
    If Not WB Is Nothing Then
    MsgBox «Выбрана книга: » & WB.FullName, vbInformation
    Else…

  • Результат транслитерации выделенного диапазона ячеек


    Надстройка для транслитерации или кодирования (замены символов их кодами) выделенного диапазона ячеек Excel
    При запуске надстройки в Excel формируется панель инструментов, при помощи которой можно выполнять следующие действия:

    Нажатием кнопки RU->EN выполнить транслитерацию выделенного диапазона ячеек

    Нажатием кнопки EN->RU выполнить транслитерацию выделенного диапазона ячеек

    В…

  • Поиск трасс и просмотр ресурсов оборудования


    Программный комплекс, предназначенный для автоматизации учёта и администрирования сети связи телефонной или телекоммуникационной компании.

    Программа позволяет хранить и редактировать базу данных объектов (в виде файлов Excel), просматривать существующие трассы и формировать новые.

     

    Особенность программы — возможность учёта и администрирования узлов связи с нестандартными…

  • Форма ввода данных о новом пациенте

    Программа позволяет сформировать отчёты по базе данных больницы.
    Кроме того, реализован ввод данных в базу о новых пациентах.

     


  • Функция TextFile2Array предназначена для преобразования файла CSV в двумерный массив
    Очень часто при работе с текстовыми файлами (и, в частности, с файлами CSV) приходится их загружать на лист Excel, предварительно производя фильтрацию данных в этом файле.
    Чтобы упростить весь процесс — от выбора файла CSV в диалоговом окне, до разбиения загруженного из файла текста в двумерный массив, и была…

  • Форма подбора соответствия для модели ноутбука


    Программа предназначена для формирования прайс-листов на ноутбуки с соответствии с требованиями интернет-каталога Onliner.by

    Основные функции программы:

    (учитываются цены фирм-конкурентов, цены onliner.by и надбавка фирмы)

    загрузка каталога ноутбуков (названия, характеристики, цены) с сайта onliner.by в файл Excel, и обновление этого каталога

    назначение соответствий моделей…

  • Составление расписания занятий в Excel


    Программа предназначена для составления учебного расписания.
    На отдельных листах хранится список преподавателей вуза, список групп и занятий у этих групп по дням недели.
    Макрос делает выборку по всем преподавателям (или по выбранному преподавателю),
    фильтрует по заданной группе (курсу), если не выбрана опция «все курсы»,
    сортирует по времени начала занятия, группирует по дню…

  • Форма ввода и редактирования заявок


    Система учёта заявок предназначена для автоматизации ввода, редактирования и учёта заданий на заказ запасных частей для автомобилей.

    Программа позволяет производить поиск по базе данных, и распечатку информации о выбранном заказе.

    Эта база данных представляет собой урезанную и немного изменённую версию программы АИСС СПК.

  • Результат преобразования массива функцией ExtendArray


    Программа предназначена для обработки таблиц с тарифами на междугородную и международную телефонную связь.

    Присутствует опция выгрузки обработанной таблицы в файл формата XML.

    При запуске программы (которая выполнена в виде надстройки Excel) формируется дополнительная панель инструментов:

    Формируемый надстройкой XML-файл имеет такую структуру:

  • Результат формирования задания на производство

    Программа предназначена для формирования заданий на производство.
    Исходными данными выступают таблицы Excel и файлы XML.
    При конвертации таблиц происходит обработка данных и перестановка столбцов.
    При запуске программа формирует панель инструментов с 6 кнопками — для обработки файлов различной структуры.

  • Вид объединённого прайс-листа автозапчастей


    Программа предназначена для формирования единого прайс-листа автозапчастей на основании нескольких исходных прайсов различной структуры.

    ВНИМАНИЕ: Описанная в данной статье программа послужила прототипом для новой, многофункциональной программы, где пользователь сам может настраивать обработку прайс-листов

    Новая программа объединения и обработки прайс-листов доступна на сайте для…

  • Форма настроек параметров создаваемого прайса


    Макрос формирует прайс-лист для отправки клиенту.
    Исходными данными являются позиции из основного прайс-листа фирмы.
    При формировании нового прайса учитывается бонус продавца, а также коэффициенты дохода и доставки.
     

    Помимо этого простейшего макроса, у нас на сайте есть множество других программ для работы с прайс-листами.
    Например, для сбора данных из прайсов разных поставщиков…

  • Результат обработки объявлений - таблица на листе Excel

    Программа предназначена для преобразования файлов формата .HTM с объявлениями о продаже недвижимости (файлы являются результатом сохранения веб-страниц с сайтов публикации объявлений) в формат Microsoft Excel.
    Программа производит анализ текста объвлений, распознаёт значения площади и этажности, отделяет второстепенные данные (комментарий) из текста объявления, преобразует различные форматы цен (…

  • Результат преобразования массива функцией ExtendArray


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

    (пример работы функции можно увидеть на прикреплённом изображении)

    В своей работе ExtendArray использует функцию…

  • Скриншот программы подготовки документов, и результат её работы (документ ПДФ)


    Программа предназначена для предпечатной подготовки, и последующего вывода на печать (на виртуальный ПДФ принтер) документов Excel.
     
    Программа позволяет:

    подгонять файлы, выгруженные из 1С, под печать на одной странице

    изменять ориентацию страницы для счетов-фактур

    вставлять реквизиты (фамилии, информацию о доверенностях) в специально выделенные для этого ячейки

    вставлять…

  • Программное формирование оглавления Книги заявок


    Программа предназначена для работы с заявками на оборудование.

    Цели программы:

    автоматизация составления и редактирования заявок

    преобразование имеющихся заявок в виде отдельных файлов Excel различной структуры к единому виду

    формирование отчётов по категориям и типам заявок

    стандартизация печатной формы заявок

    разграничение доступа на работу с базой данных заявок

     …

  • Внешний вид программы для выборки ключевых слов Webstat


    Данная программа предназначена для выборки выражений по заданным «минус словам»
    В качестве базы используется выгрузка из файлов формата csv, данные загружаются в столбец «A» (далее БАЗА).
    В столбец «E» заносятся слова которые нужно найти в БАЗЕ. При нажатии на кнопку «Добавить минус слова» происходит выборка вхождений заданных шаблонов…


  • Макрос предназначен для экспорта выделенного диапазона ячеек книги Excel в код HTML.
     

    Смотрите также надстройку для экспорта таблицы или выделенного диапазона ячеек в HTML

    Результат (HTML код таблицы) помещается в буфер обмена.
    Первая строка выделенного диапазона ячеек считается заголовком таблицы (обрамляется тегами <th> вместо <td>)
     
    Например, мы имеем…

  • Sub ПримерИспользования()
    ‘ задаём полный путь к обрабатываемому файлу
    ПутьКФайлу$ = ThisWorkbook.Path & «» & «Contract.XLS»
     
    Application.ScreenUpdating = False ‘ отключаем обновление экрана
    arr = LoadArrayFromWorkbook(ПутьКФайлу$, «a2», 30) ‘ загружаем данные

    ‘ выводим результаты в окно Immediate
    Debug.Print «…

  • Формирование отчётов по предприятиям нефтегазодобывающей промышленности


    Программа предназначена для сбора данных из отчётов нефтедобывающих компаний.
     
    Исходными данными выступают файлы оперативной отчётности следующих типов:

    Добыча

    Переработка

    Сбыт

    Сервис

    Анализ

    На распределение

     
    Во втором столбце таблицы перечислены названия компаний, чьи отчеты программа будет обрабатывать,
    а в строке заголовка — список месяцев, данные по по…


  • Надстройка предназначена для быстрой конвертации выделенного диапазона ячеек в HTML код для вставки на сайт.
    При запуске надстройки, формируется панель инструментов (на ленте, на вкладке Надстройки)
    с 2 кнопками: экспорт в HTML всей таблицы, или только выделенного диапазона ячеек

     
    Файл надстройки, — во вложении к статье.
    Программа корректно обрабатывает объединённые ячейки.
    Количество…

  • Клавиша:
    Ctrl + T
    Макрос:
    Создание Текстовых Файлов

    Клавиша:
    Ctrl + 4
    Макрос:
    Окраска Объединённых Ячеек

    Клавиша:
    Ctrl + 5
    Макрос:
    Окраска Всех Объединённых Ячеек

    Клавиша:
    Ctrl + G
    Макрос:
    Объединение Значений Из Ячеек

    Клавиша:
    Ctrl + Shift + G
    Макрос:
    Разъединение Значений Из Ячеек

    Клавиша:
    Ctrl + Shift + D
    Макрос:
    Поиск Дубликатов В Книге

    Клавиша:
    Ctrl + Shift + O
    Макрос:…

  • Диалоговое окно выбора обрабатываемого оттиска

    Программа предназначена для расчёта твердости металла (сплава) по изображению оттиска, выполненного на специальном оборудовании (с многократным увеличением)
    В качестве исходных данных выступает 24-битное изображение в формате BMP, на основании результатов обработки которого (считывается массив, содержащий цвета отдельных пикселей) и производятся все дальнейшие вычисления.
    Сначала из массива…

  • Форма выбора мероприятий для формирования отчёта


    Программа предназначена для вывода отчёта по мероприятиям налоговой инспекции.
     

    Исходные данные для обработки расположены на других листах того же файла Excel: 

    перечень мероприятий налогового контроля, проведенных в отношении контрагентов

    поручения об истребовании документов (информации)

    запросы в кредитные организации о предоставлении сведений по операциям на счетах…

  • Внешний вид программы для облегчения регистрации, приема на работу и увольнения иностранных рабочих


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

    Доверенность (doc)

    Заявление на…

  • Вид программно создаваемой сводной таблицы и диаграммы


    Макрос предназначен для создания сводной таблицы и диаграммы для отчёта по трафику.

    В качестве исходных данных выступает таблица со статистикой доступа в интернет — сформированная программой создания отчётов по статистике

    Создаваемая сводная диаграмма позволяет легко проанализировать причины перерасхода трафика, а сводная таблица предоставляет детализированный отчёт по каждому сайту.

    При…

  • Отчёт по ликвидности портфелей ценных бумаг


    Программа предназначена для обработки отчётов управления по сделкам с ценными бумагами

    Основные функции программы:

    Создание новых отчётов управления (за следующий квартал) на основании текущих отчётов

    Внесение изменений и дополнений в существующие отчёты

    Формирование сводной таблицы по вкладам для оценки роста, а также коэффициентов ликвидности и версификации вкладов

    Обработка…

  • Результат объединения отчётов из 1С


    Программа предназначена для объединения однотипных отчётов, сформированных программой 1С
    Обрабатываемые отчёты (файлы Excel) хранятся в одной папке, и имеют структуру, изображенную на скриншоте:

    В итоговой таблице, загруженные строки группируются (объединяются) при совпадении значений в 2 полях — «модель» и «название»,
    при этом количество в объединяемых…

  • Промежуточные результаты отработки котировок

    Результат загрузки котировок из внешних файлов

    Программа позволяет загружать котировки различных валют из файлов формата .HTM, и анализировать их при различных параметрах анализа.
    Все котировки разбиваются на отдельные блоки (временные диапазоны для разбивки задаются на форме настроек), и анализ производится по каждому блоку в отдельности.
    Есть возможность исключить из расчётов данные за пятницу.
    Изменение параметров вычисления значений BS…

  • Пример обрабатываемого текстового файла, содержащего данные о компьютере


    Программа предназначена для выборки данных из текстовых файлов, которые были сгенерированны инвентаризационной программой
    В качестве исходных данных для макроса используются текстовые файлы, в которых находится информация о конфигурации компьютеров
    (на каждый компьютер приходится по 3 файла).
    Работу макроса можно разделить на следующие этапы:

    Выбор папки с данными по всем компьютерам…

  • Скриншот программы обработки котировок в формате CSV


    Программа служит для преобразования тиковых значений котировок в свечи необходимого периода
    Исходный файл в формате .csv получается в результате выгрузки (экспорта) котировок с сайта www.finam.ru (Фьючерсы ФОРТС),
    и содержит большое количество строк (записей) — около 1 миллиона за 1 день.
    В исходном файле CSV имеется таблица  со следующими столбцами:
    <TICKER> <PER> <DATE…

  • Таблица с заполненными данными по клиентам


    Программа предназначена для вывода информации о скором наступлении события
    Каждый раз при открытии файла (и автоматической активации макроса), происходит проверка разницы между текущей датой, и датой окончания действия полиса
    (столбец номер 7 на скриншоте).
    Если эта разница находится в пределах 10 дней (параметр можно менять по своему усмотрению), то на отдельный лист выводится ссылка на…

  • Скриншот формируемого отчёта с характеристиками серверов


    Программа предназначена для формирования отчёта по серверам компании (список технических характеристик, IP адресов, установленного программного обеспечения)
    В качестве исходных данных для программы имеется выгрузка из Help Desk системы Acme в формате XLS, но этот отчёт, хоть и содержит все необходимые данные, крайне неудобен для анализа и дальнейшей обработки:

    Программа производит поиск…

  • Процесс анализа рисков инвестиционных проектов


    Программа предназначена для анализа ожидаемой доходности различных портфелей

    (рассматриваются всевозможные комбинации проектов)

    При помощи формул типа =СЛЧИС() на листах с характеристиками проектов генерируются различные комбинации исходных значений, на основании которых формулами рассчитывается доходность проекта.

    Методом Монте-Карло формируются массивы значений (по одному массиву для…

  • Настройка шаблона писем для рассылки детализации звонков


    Программа предназначена для создания отчётов по детализации телефонных звонков (междугородная и международная связь), последующей упаковки созданных детализаций в ZIP архив, и автоматизированной рассылки сформированных писем абонентам.
    При запуске программа ищет в заданной папке исходные файлы с детализацией (упакованные в ZIP файлы DBF), и на основании из этих файлов формирует (по шаблону, с…

  • Запуск формирования списков игр

    Таблица "Полные данные ставок"

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

  • Скриншот листа коммерческого предложения - описание, фото и карта рекламной конструкции


    Программа предназначена для формирования коммерческих предложений по наружной рекламе.
    В качестве исходных данных выступает файл Excel со списком рекламных объектов.

    Список объектов должен содержать следующую информацию (в отдельных столбцах):

    адрес рекламной конструкции (щита)

    сторона рекламного щита или перетяжки (А, Б, В, и т.п.)

    ссылки на фото и карту рекламной конструкции
    (…

  • Итоговая таблица объёмов холодного и горячего водоснабжения


    Программа предназначена для формирования таблицы Excel для расчёта суммы оплаты за услуги ЖКХ (холодного и горячего водоснабжения)
    В качестве исходных данных выступает таблица, в которой занесены показания счётчиков (расход горячей и холодной воды)
    Макрос производит поиск клиентов в исходной таблице (по номеру лицевого счёта), и подставляет данные по этому клиенту в итоговую таблицу.
     
    Вы…

  • Форма вывода результатов проверки на совпадения

    Программа позволяет в процессе ввода новых данных в таблицу Excel отслеживать наличие совпадений с записями из «черного списка», расположенного на отдельном листе.
     

    Особенности данной программы:

    поиск частичных совпадений (адреса могут совпадать лишь частично, при сравнении файмилий не учитываются 2 последних буквы, и т.д.)
    можно изменить «точность» совпадения — в…

  • Внешний вид таблицы источника для создания маркеров


    Программа предназначена для создания маркировальных этикеток для идентификации груза
    В качестве исходных данных используется таблица (на скриншоте) имеющая следующие поля:

    НАИМЕНОВАНИЕ ТОВАРА

    КОД ТНВЭД

    КОЛИЧЕСТВО

    ЕД. ИЗМ.

    ВЕС НЕТТО

    ВЕС БРУТТО

    МЕСТА

    ТИП УПАКОВКИ

    ОБЪЕМ

    ТОРГОВАЯ МАРКА

    ПРОИЗВОДИТЕЛЬ

    ФОТО

    ЗАВОДСКАЯ МАРКИРОВКА

    МАРКИРОВКА

    НОМЕР ЗАЯВКИ…

  • сквитовка первой продажи и первой покупки в таблице сделок


    Программа позволяет выполнить сквитовку первой продажи и первой покупки в таблице сделок

    В результате работы программы таблица сделок принимает вид, показанный на скриншоте.

    Исходными данными выступает таблица сделок в таком формате:

    Для проверки корректности работы программы она формирует лог-файл примерно такого содержания:
    ========= Обработка строки 1 ===================
    Текущее…

  • Перенос выделенных строк в файлы на сервере

    Надстройка позволяет одним щелчком мыши выполнить копирование выделенных строк в один из файлов, расположенных в специальной папке на сервере или локальном компьютере.
    Надстройка при запуске добавляет несколько пунктов в контекстное меню ячейки (см. скриншот)
    При закрытии (отключении) надстройки дополнительные пункты контекстного меню исчезают.
    В коде указываются настройки программы:
    ‘…

  • Макрос обработки номеров телефонов

    Надстройка PhoneNumbers предназначена для обработки номеров телефонов в таблице Excel, в выводом найденный (распознанных) номеров в отдельный столбец
    Основное предназначение: Извлечение номеров телефонов из Excel файла.
    Пример исходных данных и результата можно посмотреть в прикреплённом файле Excel (на первом листе — что есть изначально, на втором — то, что получается…

  • Результат работы программы

    Скриншот основной формы программы


    Программа позволяет искать в выбранной папке изображения, основываясь на содержимом ячеек таблицы Excel, и производить вставку найденных изображений в соседние ячейки.

    Реализовано:

    сжатие вставляемых изображений

    поиск картинок в подпапках

    установка выбранного пользователем размера для вставляемых изображений

    отображение состояния обработки файла (прогресс-бар)

     
    При вставке…

  • Пример созданного оглавления прайс-листов отелей


    Надстройка предназначена для формирования оглавления прайс-листов, расположенных на отдельных листах книги Excel.

    При запуске программа формирует панель инструментов:

    Особенности программы:

    группировка строк каждого прайс-листа

    формирование обратных ссылок с прайс-листов на оглавление

     

  • Форма выбора источника и получателя данных при копировании информации в файлах Excel

    Программа предназначена для импорта данных из одного файла Excel (проект разработки нефтяных месторождений) в другой файл (форма отчета).
    Макрос выполнен в виде надстройки для Excel, добавляющей в меню приложения кнопку «Скопировать» для запуска формы.
    На форме выбираются исходное и конечное поля, нажимается кнопка «Перенести данные», — и программа, сопоставляя столбцы двух файлов, производит…

  • Результат обработки веб-запросов

    Программа предназначена для получения данных с сайта Национального рейтингового агенства.
    Исходными данными является столбец с гиперссылками.
    Результат выводится на отдельный лист.
     
    Собираемые программой данные содержат следующую информацию:

    Суммарные брокерские операции
    Совокупные обороты
      Собственный Капитал
    Прибыль
    Обороты с облигациями
    Обороты с муниципальными облигациями…

  • Форма выбора полей для переноса данных

    Программа предназначена для переноса информации из файла формы в файл проекта.
    После выбора и загрузки формы пользователь выбирает поля для переноса, и указывает, в какую позицию проекта необходимо поместить данные.
    При необходимости осуществляется конвертация валют с учётом текущего курса доллара.


  • Программа предназначена для еженедельного формирования плана проверок торговых точек.
     

    Функции программы:

    выборка из базы данных заданного числа случайных торговых точек, в соответствии с настройками для каждой группы

    формирование таблицы (файл Excel) со списком выбранных объектов по шаблону

    рассылка созданного файла (в архиве ZIP) по заданному списку адресов электронной…

  • Исходный вид таблицы, и результат преобразования


    Программа предназначена для формирования таблицы, содержащей имена файлов игр для сотовых телефонов.
    В исходной таблице содержатся данные о всех моделях сотовых телефонов различных брендов.
    Цель макроса — сформировать список имён файлов .jar для новой игры, дополнив его столбцами с производителем и моделью аппарата.

Понравилась статья? Поделить с друзьями:
  • Excel макрос для выпадающего списка
  • Excel макрос для вызова формы
  • Excel макрос для выделения ячейки
  • Excel макрос для всех файлов в папке
  • Excel макрос для впр по