Программа подстановки данных из одного файла в другой (замена функции ВПР). Макрос для поиска данных в таблице excel
Макрос для поиска ячеек в Excel с выпадающим списком и условным форматированием
В данном примере написаны исходные коды VBA-макросов для проверки ячеек на наличие выпадающих списков (или любых средств, созданных инструментом «проверка данных»). А также код макроса для проверки и получения доступа к ячейкам, которые содержат условное форматирование.
Макрос поиска ячейки с выпадающим списком
Допустим у нас имеется таблица Excel сформированная в результате экспорта журнала фактур из истории взаиморасчетов с клиентами фирмы, как показано ниже на рисунке:
Нам необходимо найти все выпадающие списки или определить каким ячейкам присвоена проверка вводимых данных, создана инструментом: «ДАННЫЕ»-«Работа с данными»-«Проверка данных».
В программе Excel по умолчанию есть встроенный инструмент для поиска ячеек с проверкой правил вводимых значений. Чтобы его использовать следует выбрать: ГЛАВНАЯ»-«Редактирование»-«Найти и выделить»-«Выделить группу ячеек». В появившемся диалоговом окне следует отметить опцию «проверка данных» и нажать на кнопку ОК. Но как всегда более гибким решением является написание своего специального макроса. Ведь в такие случаи всегда можно усовершенствовать инструмент и дописать много других полезных функций. А этот код макроса послужит прекрасным началом программы.
Откройте редактор макросов Visual Basic (ALT+F11) и создайте новый модуль выбрав в редакторе инструмент: «Insert»-«Module». В созданный модуль введите VBA код макроса:
Sub ProvDan() Dim i As Long Dim diapaz1 As Range Dim diapaz2 As RangeSet diapaz1 = Application.Range(ActiveSheet.Range("A1"), _ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))On Error Resume Next For i = 1 To diapaz1.Count If IsError(diapaz1(i).Validation.Type) Then Else If diapaz2 Is Nothing Then Set diapaz2 = diapaz1(i) Else Set diapaz2 = Application.Union(diapaz2, diapaz1(i)) End If End If NextOn Error GoTo 0If diapaz2 Is Nothing ThenMsgBox "Ненайдено ниодной ячейки!"Else diapaz2.Select MsgBox "Найдено: " & diapaz2.Count & " ячеек!"End IfEnd SubВ результате выделились 14 ячеек в столбце G, для которых включена проверка данных в стиле выпадающего списка:
В данном коде мы сначала выделяем все ячейки на текущем листе с помощью инструкции:
Cells.Select
После, определяем диапазон ячеек на листе, который использует исходная таблица и с которыми будет работать наш макрос. Чтобы определить диапазон таблицы на рабочем листе Excel, мы могли бы использовать свойство UsedRange при создании экземпляра объекта Range в переменной diapaz1. Данное свойство охватывает только непустые ячейки, а это может быть даже несмежный диапазон. Но таблица может содержать пустые ячейки для, которых присвоена проверка ввода значений. Чтобы наш макрос не игнорировал пустые ячейки внутри таблицы мы определяем смежный (неразрывный) диапазон, который начинается с ячейки A1 и заканчивается последней используемой ячейкой на рабочем листе Excel.
Set diapaz1 = Application.Range(ActiveSheet.Range("A1"), ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))
Последняя ячейка находиться наиболее отдаленно от ячейки A1 (в данном примере – это G15) и была использована на листе (это обязательное условие). При чем использована в прямом смысле, она может даже не содержать значения, но иметь измененный числовой формат, другой цвет фона, другие границы, объединение и т.п. Чтобы найти последнюю используемую ячейку на листе стандартными средствами Excel, выберите инструмент: «ГЛАВНАЯ»-«Редактирование»-«Найти и выделить»-«Выделить группу ячеек».
В появившемся окне следует выбрать опцию «последнюю ячейку». А после просто нажать ОК. Курсор клавиатуры сразу переместиться на последнюю используемую ячейку на рабочем листе Excel.
Можно даже при создании экземпляра объекта Range в переменной diapaz1 использовать диапазон целого листа. Для этого просто замените выше описанную инструкцию на:
Set diapaz1 = Selection
Так на первый взгляд даже проще, но тогда макрос будет проверять все ячейки на листе и потребует больше ресурсов. Особенно если мы при изменении этой инструкции не удалим инструкцию выделения всех ячеек на листе Excel. Таким кодом макроса, можно существенно снизить производительность работы программы Excel при его выполнении. Поэтому так делать не рекомендуется. Проверяйте ячейки только те, которые были использованы на листе. Так вы получите в десятки раз меньший диапазон и выше производительность макроса.
Далее в коде макроса перед циклом прописана инструкция для выключения обработки ошибок, выполняемых в коде.
On Error Resume Next
Но после конца цикла обработка ошибок снова включается.
On Error GoTo 0
Внутри цикла проверяться по отдельности все ячейки на наличие включенной проверки вводимых значений инструментом «Проверка данных». Если ячейка содержит проверку вводимых значений?
If IsError(diapaz1(i).Validation.Type) Then
Тогда она присоединяется к диапазону ячеек, находящихся в переменной diapaz2.
Set diapaz2 = Application.Union(diapaz2, diapaz1(i))
В конце кода выделяется несмежный диапазон переменной diapaz2, который включает в себя все выпадающие списки на текущем рабочем листе Excel. И сразу же выводиться сообщение о количестве найденных и выделенных ячеек в этом же диапазоне.
MsgBox "Найдено: " & diapaz2.Count & " ячеек!"
Макрос поиска ячейки с условным форматированием
Некоторые ячейки в исходной таблице содержат условное форматирование, а пользователю Excel необходимо их все найти и выделить. Очень часто нельзя визуально определить присвоено ли ячейке условное форматирование или нет. Чтобы найти и выделить ячейки с условным форматированием в Excel можно воспользоваться встроенным инструментом. Просто необходимо выбрать опцию в меню: «ГЛАВНАЯ»-«Редактирование»-«Найти и выделить»-«Выделить группу ячеек».
В появившемся окне отмечаем опцию «условные форматы» и нажимаем кнопку ОК.
Но если мы хотим получить доступ к каждой выделенной ячейки и проделать с ними какие-либо операции, тогда следует воспользоваться более гибким инструментом. А конкретнее написать макрос. В данном примере мы напишем макрос, который будет автоматически выделять и считать количество ячеек с условным форматированием.
Снова откройте редактор Visual Basic (ALT+F11) и в уже созданный модуль добавьте новый код для нового макроса:
Sub ProvFormat() Dim i As Long Dim diapaz1 As Range Dim diapaz2 As RangeSet diapaz1 = Application.Range(ActiveSheet.Range("A1"), _ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell)) For i = 1 To diapaz1.Count If diapaz1(i).FormatConditions.Count > 0 Then If diapaz2 Is Nothing Then Set diapaz2 = diapaz1(i) Else Set diapaz2 = Application.Union(diapaz2, diapaz1(i)) End If End If NextIf diapaz2 Is Nothing ThenMsgBox "Ненайдено ниодной ячейки!"Else diapaz2.Select MsgBox "Найдено: " & diapaz2.Count & " ячеек!"End IfEnd SubВ результате будут выделены все соответствующие ячейки и отобразиться сообщение с информацией о их количестве:
В этом макросе уже нет необходимости отключать контроль ошибок в процессе выполнения инструкций внутри цикла.
Проверка ячеек на наличие условного форматирования выполняется с помощью свойства Cuont для объекта FormatConditions. Если данное свойство возвращает значение 0, то для текущей ячейки не применялось ни одно условное форматирование.
Разобравшись и поняв принцип действия этих макросов, пользователь теперь может получать доступ к определенной группе чек и выполнять с ними различные действия. Просто нужно изменить макрос под свои потребности и вместе где прописана инструкция для вывода сообщения о количестве выделенных определенных групп ячеек прописать свои собственные инструкции.
exceltable.com
Программы и макросы Excel в категории Поиск в Excel
Программа предназначена для сравнения и подстановки значений в таблицах Excel. Если вам надо сравнить 2 таблицы (по одному столбцу, или по нескольким), и для совпадающих строк скопировать значения выбранных столбцов из одной таблицы в другую, надстройка «Lookup» поможет сделать это нажатием одной кнопки. То же самое можно сделать при помощи формулы =ВПР(), но: формулы...
Наверняка, вы сталкивались с ситуацией, когда необходимо производить поиск некоторого значения по всей книге Excel (искать частичное совпадение на всех листах активной книги) Штатными средствами Excel вывести поле для поиска на панель инструментов не удаётся, а вызывать каждый раз диалоговое окно нажатием комбинации клавиш Ctrl + F не всегда удобно. На помощь придёт эта...
Макрос запрашивает строку для поиска, после чего ищет введенный текст в первом столбце листа, и подсвечивает результаты поиска. При запуске макроса появляется диалоговое окно (InputBox), позволяющее задать текст для поиска. Макрос подсвечивает красным цветом внутри ячейки текст, совпадающий с искомым (+ выделяет найденное полужирным начертанием) Перед началом поиска, цвет всех ячеек...
В данной статье показаны 2 способа быстрого поиска значений в двумерных массивах. Поскольку искомое значение может встретиться в нескольких строках обрабатываемого двумерного массива, оба способа получают на выходе отфильтрованный двумерный массив. Способы формирования отфильтрованных массивов - разные: первый способ использует функцию ArrAutofilterEx второй способ - функцию ...
Данный макрос предназначен для поиска адресов электронной почты на листе Excel, с последующим выводом найденных адресов на отдельный лист. В прикреплённом файле, на первом листе ("исходные данные"), ячейки заполнены неструктурированной информацией (смесь фамилий, адресов почты, прочей ненужной информации) Макрос вычленяет из текста ячеек адреса электронной почты, и выводит все...
Надстройка SearchText предназначена для поиска заданного текста в книге Excel, с выводом результатов поиска на отдельный лист. При запуске надстройка формирует панель инструментов, с которой осуществляется запуск всех макросов: В Excel 2007 и 2010 панель инструментов можно найти на вкладке «Надстройки»: Надстройка SearchText является расширенной версией надстройки для...
Программа предназначена для сравнения цен конкурентов из их прайсов с прайс-листом вашей организации. ВНИМАНИЕ: Недавно разработана многофункциональная программа для обработки прайс-листов Новая программа объединения и обработки прайс-листов доступна на сайте для скачивания и тестирования на различных наборах прайс-листов. Исходными данными для программы являются: ваш прайс...
Надстройка предназначена для выполнения множественных замен в выделенном диапазоне ячеек. После запуска надстройки, появляется панель инструментов из 3 кнопок: Кнопка «Выполнить все замены» - выполняет замены в выделенном диапазоне ячеек Кнопка «Изменить список замен» - отображает лист настроек, где в первом столбце находится список заменяемых...
Программа АИСС «СПК» предназначена для автоматизации работы приемной комиссии колледжей и техникумов. АИСС обеспечивает выполнение всех необходимых операций по приему документов, поиску и анализу информации, составлению отчетов. Назначением программы является автоматизация труда работника приёмной комиссии учебного заведения. Программа обеспечивает: Хранение полной...
Надстройка SearchExcel предназначена для поиска заданного текста во всех столбцах текущего листа Excel, с выводом результатов поиска на отдельный лист. При запуске надстройка формирует панель инструментов, с которой осуществляется запуск всех макросов: Надстройка SearchExcel является упрощённой версией надстройки для поиска на всех листах книги Excel Смотрите также надстройку для...
База данных «Преподаватели» предназначена для автоматизации работы администрации учебных заведений. Программа обеспечивает выполнение всех необходимых операций по приему документов, поиску и анализу информации, составлению отчетов. Эта база данных представляюет собой урезанную и немного изменённую версию программы АИСС СПК. Программа обеспечивает: Хранение полной...
Если ваш макрос выдаёт ошибку при использовании метода SpecialCells - возможно, причина в установленной защите листа Excel. Почему разработчики Microsoft отключили работу этой функции на защищённых листах - не совсем понятно, но мы попробуем обойти это ограничение. Итак, нам надо получить все заполненные ячейки из некого диапазона листа Excel. Обычно для этого используется вызов...
Функция производит поиск текстового значения в заданном диапазоне листа, и возвращает диапазон, содержащий все найденные ячейки Взято с сайта Чипа Пирсона: cpearson.com/excel/FindAll.aspx Function FindAll(SearchRange As Range, _ FindWhat As Variant, _ Optional LookIn As XlFindLookIn = xlValues, _ Optional LookAt As XlLookAt = xlWhole, _...
Макрос предназначен для поиска текста из выделенных ячеек в поисковой системе Google. Функция поиска доступна из контекстного меню ячеек: Как вы можете видеть на скриншоте, есть возможность выбора браузера. На выбор представлены наиболее популярные браузеры: Internet Explorer, Mozilla Firefox, Opera, и Google Chrome. В макрос намеренно введено ограничение на количество ячеек, текст...
Система учёта заявок предназначена для автоматизации ввода, редактирования и учёта заданий на заказ запасных частей для автомобилей. Программа позволяет производить поиск по базе данных, и распечатку информации о выбранном заказе. Эта база данных представляет собой урезанную и немного изменённую версию программы АИСС СПК.
Программа позволяет в процессе ввода новых данных в таблицу Excel отслеживать наличие совпадений с записями из "черного списка", расположенного на отдельном листе. Особенности данной программы: поиск частичных совпадений (адреса могут совпадать лишь частично, при сравнении файмилий не учитываются 2 последних буквы, и т.д.) можно изменить "точность" совпадения - в...
Программа предназначена для формирования таблицы Excel для расчёта суммы оплаты за услуги ЖКХ (холодного и горячего водоснабжения) В качестве исходных данных выступает таблица, в которой занесены показания счётчиков (расход горячей и холодной воды) Макрос производит поиск клиентов в исходной таблице (по номеру лицевого счёта), и подставляет данные по этому клиенту в итоговую таблицу. Вы...
excelvba.ru
Поиск на листе Excel, примеры использования Find на VBA
Поиск какого-либо значения в ячейках Excel довольно часто встречающаяся задача при программировании какого-либо макроса. Решить ее можно разными способами. Однако, в разных ситуациях использование того или иного способа может быть не оправданным. В данной статье я рассмотрю 2 наиболее распространенных способа.
Поиск перебором значений
Довольно простой в реализации способ. Например, найти в колонке "A" ячейку, содержащую "123" можно примерно так:
Sheets("Данные").Select For y = 1 To Cells.SpecialCells(xlLastCell).Row If Cells(y, 1) = "123" Then Exit For End If Next y MsgBox "Нашел в строке: " + CStr(y)Минусами этого так сказать "классического" способа являются: медленная работа и громоздкость. А плюсом является его гибкость, т.к. таким способом можно реализовать сколь угодно сложные варианты поиска с различными вычислениями и т.п.
Поиск функцией Find
Гораздо быстрее обычного перебора и при этом довольно гибкий. В простейшем случае, чтобы найти в колонке A ячейку, содержащую "123" достаточно такого кода:
Sheets("Данные").Select Set fcell = Columns("A:A").Find("123") If Not fcell Is Nothing Then MsgBox "Нашел в строке: " + CStr(fcell.Row) End IfВкратце опишу что делают строчки данного кода: 1-я строка: Выбираем в книге лист "Данные"; 2-я строка: Осуществляем поиск значения "123" в колонке "A", результат поиска будет в fcell; 3-я строка: Если удалось найти значение, то fcell будет содержать Range-объект, в противном случае - будет пустой, т.е. Nothing.
Полностью синтаксис оператора поиска выглядит так:
Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
What - Строка с текстом, который ищем или любой другой тип данных Excel
After - Ячейка, после которой начать поиск. Обратите внимание, что это должна быть именно единичная ячейка, а не диапозон. Поиск начинается после этой ячейки, а не с нее. Поиск в этой ячейке произойдет только когда весь диапозон будет просмотрен и поиск начнется с начала диапазона и до этой ячейки включительно.
LookIn - Тип искомых данных. Может принимать одно из значений: xlFormulas (формулы), xlValues (значения), или xlNotes (примечания).
LookAt - Одно из значений: xlWhole (полное совпадение) или xlPart (частичное совпадение).
SearchOrder - Одно из значений: xlByRows (просматривать по строкам) или xlByColumns (просматривать по столбцам)
SearchDirection - Одно из значений: xlNext (поиск вперед) или xlPrevious (поиск назад)
MatchCase - Одно из значений: True (поиск чувствительный к регистру) или False (поиск без учета регистра)
MatchByte - Применяется при использовании мультибайтных кодировок: True (найденый мультибайтный символ должен соответствовать только мультибайтному символу) или False (найденый мультибайтный символ может соответствовать однобайтному символу)
SearchFormat - Используется вместе с FindFormat. Сначала задается значение FindFormat (например, для поиска ячеек с курсивным шрифтом так: Application.FindFormat.Font.Italic = True), а потом при использовании метода Find указываем параметр SearchFormat = True. Если при поиске не нужно учитывать формат ячеек, то нужно указать SearchFormat = False.
Чтобы продолжить поиск, можно использовать FindNext (искать "далее") или FindPrevious (искать "назад").
Примеры поиска функцией Find
Пример 1: Найти в диапозоне "A1:A50" все ячейки с текстом "asd" и поменять их все на "qwe"
With Worksheets(1).Range("A1:A50") Set c = .Find("asd", LookIn:=xlValues) Do While Not c Is Nothing c.Value = "qwe" Set c = .FindNext(c) Loop End WithОбратите внимание: Когда поиск достигнет конца диапазона, функция продолжит искать с начала диапазона. Таким образом, если значение найденной ячейки не менять, то приведенный выше пример зациклится в бесконечном цикле. Поэтому, чтобы этого избежать (зацикливания), можно сделать следующим образом:
Пример 2: Правильный поиск значения с использованием FindNext, не приводящий к зацикливанию.
With Worksheets(1).Range("A1:A50") Set c = .Find("asd", lookin:=xlValues) If Not c Is Nothing Then firstResult = c.Address Do c.Font.Bold = True Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstResult End If End WithВ ниже следующем примере используется другой вариант продолжания поиска - с помощью той же функции Find с параметром After. Когда найдена очередная ячейка, следующий поиск будет осуществляться уже после нее. Однако, как и с FindNext, когда будет достигнут конец диапазона, Find продолжит поиск с его начала, поэтому, чтобы не произошло зацикливания, необходимо проверять совпадение с первым результатом поиска.
Пример 3: Продолжение поиска с использованием Find с параметром After.
With Worksheets(1).Range("A1:A50") Set c = .Find("asd", lookin:=xlValues) If Not c Is Nothing Then firstResult = c.Address Do c.Font.Bold = True Set c = .Find("asd", After:=c, lookin:=xlValues) Loop While Not c Is Nothing And c.Address <> firstResult End If End WithСледующий пример демонстрирует применение SearchFormat для поиска по формату ячейки. Для указания формата необходимо задать свойство FindFormat.
Пример 4: Найти все ячейки с шрифтом "курсив" и поменять их формат на обычный (не "курсив")
lLastRow = Cells.SpecialCells(xlLastCell).Row lLastCol = Cells.SpecialCells(xlLastCell).Column Application.FindFormat.Font.Italic = True With Worksheets(1).Range(Cells(1, 1), Cells(lLastRow, lLastCol)) Set c = .Find("", SearchFormat:=True) Do While Not c Is Nothing c.Font.Italic = False Set c = .Find("", After:=c, SearchFormat:=True) Loop End WithПримечание: В данном примере намеренно не используется FindNext для поиска следующей ячейки, т.к. он не учитывает формат (статья об этом: https://support.microsoft.com/ru-ru/kb/282151)
Коротко опишу алгоритм поиска Примера 4. Первые две строки определяют последнюю строку (lLastRow) на листе и последний столбец (lLastCol). 3-я строка задает формат поиска, в данном случае, будем искать ячейки с шрифтом Italic. 4-я строка определяет область ячеек с которой будет работать программа (с ячейки A1 и до последней строки и последнегостолбца). 5-я строка осуществляет поиск с использованием SearchFormat. 6-я строка - цикл пока результат поиска не будет пустым. 7-я строка - меняем шрифт на обычный (не курсив), 8-я строка продолжаем поиск после найденной ячейки.
Хочу обратить внимание на то, что в этом примере я не стал использовать "защиту от зацикливания", как в Примерах 2 и 3, т.к. шрифт меняется и после "прохождения" по всем ячейкам, больше не останется ни одной ячейки с курсивом.
Свойство FindFormat можно задавать разными способами, например, так:
With Application.FindFormat.Font .Name = "Arial" .FontStyle = "Regular" .Size = 10 End WithСледующий пример - применение функции Find для поиска последней ячейки с заполненными данными. Использованные в Примере 4 SpecialCells находит последнюю ячейку даже если она не содержит ничего, но отформатирована или в ней раньше были данные, но были удалены.
Пример 5: Найти последнюю колонку и столбец, заполненные данными
Set c = Worksheets(1).UsedRange.Find("*", SearchDirection:=xlPrevious) If Not c Is Nothing Then lLastRow = c.Row: lLastCol = c.Column Else lLastRow = 1: lLastCol = 1 End If MsgBox "lLastRow=" & lLastRow & " lLastCol=" & lLastColВ этом примере используется UsedRange, который так же как и SpecialCells возвращает все используемые ячейки, в т.ч. и те, что были использованы ранее, а сейчас пустые. Функтция Find ищет ячейку с любым значением с конца диапазона.
При поиске можно так же использовать шаблоны, чтобы найти текст по маске, следующий пример это демонстрирует.
Пример 6: Выделить красным шрифтом ячейки, в которых текст начинается со слова из 4-х букв, первая и последняя буквы "т", при этом после этого слова может следовать любой текст.
With Worksheets(1).Cells Set c = .Find("т??т*", LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then firstResult = c.Address Do c.Font.Color = RGB(255, 0, 0) Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstResult End If End WithДля поиска функцией Find по маске (шаблону) можно применять символы: * - для обозначения любого количества любых символов; ? - для обозначения одного любого символа; ~ - для обозначения символов *, ? и ~. (т.е. чтобы искать в тексте вопросительный знак, нужно написать ~?, чтобы искать именно звездочку (*), нужно написать ~* и наконец, чтобы найти в тексте тильду, необходимо написать ~~)
www.codernotes.ru
Макрос для создания сводной таблицы в Excel
Excel предоставляет широкие возможности для сбора, хранения и обработки большого объема данных. Однако с уверенностью можно сказать, что данные – это еще не все. Важно также способность и наличие возможности группировки значений данных, чтобы можно было получать какую-то информацию и презентовать ее в удобный вид для визуального анализа. Именно для реализации решений такого рода задач и служат сводные таблицы Excel. А если для создания сводных таблиц использовать макрос, получим неограниченные возможности.
Создание сводных таблиц макросом
Источник информации для сводных таблиц всегда один и тот же – база данных. Набор данных образующих базу для обработки в Excel может быть не только на листах рабочей книги, а также и во внешних источниках.
Для описания способа создания сводных таблиц средствами процедур VBA будет использоваться таблица, которая содержит данные по месяцам о оборотах семи магазинов фирмы за последние несколько лет деятельности.
Тестовая база для примера состоит из сгруппированных данных в 21 строке. Благодаря использованию сводных таблиц можно в читабельный вид презентовать изменение данных и извлечь соответственные результаты анализа.
Список данных по каждому месяцу определенного года содержит информацию о размере оборотов в отдельных магазинах фирмы. В таблице включен режим автофильтра, чтобы упростить на сколько возможно предварительный визуальный анализ данных.
С помощью макроса VBA создадим из этого большого объема данных читабельный и удобный для визуального анализа отчет в виде сводной таблице. Нам нужна сводная таблица отчета, в котором без труда можно прочитать интересующую нас информацию без визуального анализа сотен строк в исходной базе данных.
В данном примере создание сводной таблицы VBA-макросом будет достаточно простым. Простота решения будет достигнута за счет симуляции использования подобных параметров и действий, которые предоставляет к распоряжению мастер сводных таблиц в Excel. Используя экземпляр объекта PivotCaches запишем настройки своей сводной таблицы присвоив ей определенное имя. Это позволит потом непосредственно ссылаться на сводную таблицу в любой части кода. Для создания сводной таблицы используя макрос будем использовать метод PivotTableWizard. На этом же шаге будем использовать возможности объекта PivotFields, в котором определим структуру сводной таблицы с учетом исходных данных источника.
Написание кода макросов в Excel всегда начинается с открытия VBA-редактора (ALT+F11): «РАЗРАБОТЧИК»-«Код»-«Visual Basic».
Затем создадим модуль где будет храниться исходный код. Для этого выберите инструмент в редакторе VBA: «Insert»-«Module». В появившемся окне модуля введите следующий VBA-код макроса:
Sub CreateTableM()ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="Лист1!A1:D21").CreatePivotTable TableDestination:="", TableName:="ТаблицаМ"With ActiveSheet.Name = "Анализ".PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)End WithWith ActiveSheet.PivotTables("ТаблицаМ").SmallGrid = True.PivotFields("Оборот").Orientation = xlDataField.PivotFields("Год").Orientation = xlPageField.PivotFields("Месяц").Orientation = xlRowField.PivotFields("Магазины").Orientation = xlColumnFieldEnd WithEnd SubТеперь достаточно лишь запустить макрос выбрав инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«CreateTableM»-«Выполнить»:
В результате будет автоматически сгенерированная сводная таблица с помощью макроса.
Описание VBA-кода макроса для создания сводной таблицы Excel
Данный исходный код макроса позволяет автоматически сгенерировать сводную таблицу, такую же как показано на рисунке 4. Первая строка кода выглядит весьма необычно, но жизненно необходима для дальнейшей работы программы. Она содержит набор базовых параметров для коллекции PivotCaches, которые будут применены к создаваемой сводной таблице. В первом свойстве SourceType объявляется источник для загрузки данных в бедующую сводную таблицу. Параметр xlDatabase говорит нам о том, что исходные данные берутся с рабочего листа Excel.
Используя свойство SourceData задаем ссылку на диапазон ячеек, в котором находиться исходные данные предназначенные для последующей обработки. Указывая адрес ссылки в форме Лист1!A1:D21, мы определяем целый диапазон таблицы с исходными данными включая ее заголовки столбцов. Оба свойства (SourceType и SourceData) являются здесь аргументами для метода Add, который выполняет функцию сбора информации – аналогично инструкциям выполняемых при работе с мастером сводных таблиц. Функция создания сводной таблицы реализуется методом .CreatePivotTable, для которого так же необходимо указать следующие параметры.
Свойство TanleDestination позволяет установить место для вставки будущей сводной таблицы. Если есть необходимость вставить таблицу в конкретном месте выбранного листа, тогда следует указать здесь адрес ячейки для вставки. А если же необходимо создать сводную таблицу на новом листе, тогда достаточно указать пустую строку (“”) в качестве параметра. С помощью свойства TableName присваиваем внутреннее имя будущей таблицы, в данном примере это «ТаблицаМ». Обратите внимание, что название таблицы отличается от названия листа, в котором она будет находится. Благодаря присвоению внутреннего имени для создаваемой таблицы, появляется возможность отличать ее от многих других таблиц. Но самое главное преимущество – это возможность непосредственно ссылаться к таблице через имя, вместо того чтобы каждый раз указывать место и диапазон, где будет находиться сводная таблица.
Далее с помощью инструкции конструктора With собираем блок инструкций методов, свойств и параметров структуры. Все дальнейшие опции будут реализованы внутри свойства ActiveSheet. То есть будут касаться листа, в котором будет создана сводная таблица.
Свойством Name мы определяем имя для нового листа – в данном примере это имя «Анализ». Если нужно задать для нового листа имя такое же как у новой сводной таблицы (Таблица М), тогда эту задачу лучше всего реализовать именно на данном этапе написания кода макроса.
В следующей строке определяем место на новом листе, где будет сгенерирована сводная таблица. Указывая для параметра TanleDestination свойство:
ActiveSheet.Cells(3,1)
Так мы определяем, что таблица будет сгенерирована в третьей строке и в первом столбце листа. То есть в ячейке A3. Эти строки кода определяют базовую информацию о сводной таблице. Закрываем конструктор инструкцией End With.
Читайте также: Макрос для настройки полей и форматирования сводной таблицы.В следующих строках кода можно определить в каких полях должны находиться отобранные данные из исходной таблицы. Эта часть исходного кода должна начинаться с очередной инструкции конструктора With и заканчиваться инструкцией End With. А внутри конструктора указываться все параметры полей сводной таблицы.
exceltable.com
Программа подстановки данных из одного файла в другой (замена функции ВПР)
Программа предназначена для сравнения и подстановки значений в таблицах Excel.
Если вам надо сравнить 2 таблицы (по одному столбцу, или по нескольким),и для совпадающих строк скопировать значения выбранных столбцов из одной таблицы в другую,надстройка «Lookup» поможет сделать это нажатием одной кнопки.
То же самое можно сделать при помощи формулы =ВПР(), но:
- формулы могут тормозить работу с файлом при пересчёте, если объём данных большой (много строк или столбцов)
- если источник данных или файл, в который подставляются данные, каждый раз новый, — требуется время на прописывание или редактирование формул
- если с файлами работают люди, «далёкие» от Excel, - их проще обучить нажимать одну кнопку, чем объяснять им, как прописывать эти формулы
- иногда нужны дополнительные возможности (не учитывать заданные слова и символы при сравнении, выделять цветом изменения, копировать недостающие строки, и т.д.)
В настройках программы можно задать:
- где искать сравниваемые файлы (использовать уже открытый файл, загружать файл по заданному пути, или же выводить диалоговое окно выбора файла)
- с каких листов брать данные (варианты: активный лист, лист с заданным номером или названием)
- какие столбцы сравнивать (можно задать несколько столбцов)
- значения каких столбцов надо копировать в найденные строки (также можно указать несколько столбцов)
- каким цветом подсвечивать совпавшие и ненайденные строки (для каждого из 2 файлов)
- исключаемые при сравнении символы и фразы
Справка по надстройке Lookup
excelvba.ru
Макросы для фильтра сводной таблицы в Excel
Используя макросы, можно быстро и автоматически управлять структурой сводных таблиц. В данном примере будут описаны процессы фильтрации и скрытия столбцов значений в сводных отчетах Excel.
Как сделать фильтр в сводной таблице макросом
Чтобы получить данные для одного из 4-х магазинов фирмы, достаточно лишь открыть выпадающий список со всеми магазинами и выбрать один из них. Пример результата этих действий изображено на рисунке:
Изменение настроек, которые доступны в интерактивных инструментах сводной таблице доступны так же на уровне программирования макросов из редактора VBA. Выбор магазина, который является элементом поля СТРАИЦЫ реализуется с помощью свойства CurrentPage.
Просто как параметр для этого свойства следует указать название поля. Например, напишем простой код макроса, который сам выберет «Магазин3» как критерий для фильтрования данных по оборотам в сводной таблице:
Sub Magazin3()ActiveSheet.PivotTables("ТаблицаМ").PivotFields("Магазины").CurrentPage = "Магазин 3"End SubЧтобы создать такой макрос сначала откройте редактор VisualBasic (ALT+F11), а потом создайте новый модуль в редакторе: «Insert»-«Module» и введете в него выше указанный VBA-код:
Результат действия этого простого макроса такой же как выше рисунке, но без использования пользователем интерактивных инструментов сводной таблицы.
В методе PivotTables указан аргумент «ТаблицаМ» – это всего лишь ссылка на внутренне имя, которое было присвоено для сводной таблицы еще на этапе ее создания. Читайте пример создания где он детально описан: Макрос для создания сводной таблицы в Excel. Далее рассмотрим, как можно скрывать часть данных из области видимости значений.
Как скрыть столбец в сводном отчете макросом
Во многих ситуациях необходимо скрытие части данных, чтобы сосредоточить внимание аналитика на конкретно выбранной задачи или поставленной цели. Естественно сводная таблица обладает такой функцией без потери данных, а только лишь их визуальным скрытием. Чтобы скрыть в таблице данные за 2017 год с помощью макроса, введите в модуль следующий код:
Sub Hidden2017()ActiveSheet.PivotTables("ТаблицаМ").PivotFields("Год").PivotItems("2017").Visible = FalseEnd SubПример VBA-макроса в действии:
Чтобы снова включить (или сделать второй режим для переключателя скрыть/показать) в таблицу данные за 2017 год достаточно лишь в этом коде поменять параметр Fale на True.
Читайте также: Макрос позволяет рассчитать процент в сводной таблице Excel.
Безусловно после применения любых из выше описанных макросов, сводная таблица полностью сохраняет свою функциональность. Все также доступны все ее элементы управления и инструменты для настройки полей, фильтров, а также других опций.
exceltable.com
Программы и макросы Excel в категории Обработка таблиц
Надстройка FillDocuments предназначена для формирования (подготовки) документов по шаблонам, с заполнением созданных файлов данными из текущей книги Excel, с возможностью отправки писем. В качестве шаблонов могут выступать следующие типы файлов: шаблоны и документы Word (расширения DOC, DOCX, DOCM, DOT, DOTX, DOTM) шаблоны и книги Excel (расширения XLS, XLSX, XLSM, XLSB, XLT, XLTX, XLTM)...
Надстройка Parser для Excel — простое и удобное решение для парсинга любых сайтов (интернет-магазинов, соцсетей, площадок объявлений) с выводом данных в таблицу Excel (формата XLS* или CSV), а также скачивания файлов. Особенность программы — очень гибкая настройка постобработки полученных данных (множество текстовых функций, всевозможные фильтры, перекодировки, работа с переменными,...
Программа «Прайс лист», выполненная в виде надстройки для Excel, позволяет легко автоматизировать обработку прайс-листов. Вспомните ситуацию: поставщики в очередной раз прислали свои прайс-листы в Excel — конечно, в совершенно разных форматах - и вам нужно объединить данные из всех этих файлов в одну таблицу. А составители этих таблиц будто специально хотели усложнить вам жизнь...
Программа предназначена для сравнения и подстановки значений в таблицах Excel. Если вам надо сравнить 2 таблицы (по одному столбцу, или по нескольким), и для совпадающих строк скопировать значения выбранных столбцов из одной таблицы в другую, надстройка «Lookup» поможет сделать это нажатием одной кнопки. То же самое можно сделать при помощи формулы =ВПР(), но: формулы...
Этот макрос предназначен для сбора (загрузки) информации из файлов Excel, расположенных в одной папке. Для работы этого макроса, помимо него самого, вам понадобится добавить в свой файл: функцию FilenamesCollection для получения списка файлов в папке функцию GetFolder для вывода диалогового окна выбора папки с запоминанием выбранной папки прогресс-бар для отображения...
Программа предназначена для автоматизации процесса создания форм ввода и редактирования данных из таблиц Excel. Сейчас реализована лишь малая часть программы. Но уже сейчас программа достаточно точно распознаёт типы полей таблицы, и для полей типа "выпадающий список" и "поле с маской ввода" формирует список значений и маску ввода соответственно. Как будет свободное время -...
Программа предназначена для формирования (заполнения) договоров купли-продажи. Исходными данными выступает таблица сделок, и шаблон договора, в который при помощи формул подставляются значения из заданной строки таблицы сделок. Для запуска программы достаточно нажать зеленую кнопку - и сразу же начнётся формирование договоров (файлов Excel из одного листа) в автоматически созданной папке...
Данный макрос предназначен для поиска адресов электронной почты на листе Excel, с последующим выводом найденных адресов на отдельный лист. В прикреплённом файле, на первом листе ("исходные данные"), ячейки заполнены неструктурированной информацией (смесь фамилий, адресов почты, прочей ненужной информации) Макрос вычленяет из текста ячеек адреса электронной почты, и выводит все...
Надстройка SearchText предназначена для поиска заданного текста в книге Excel, с выводом результатов поиска на отдельный лист. При запуске надстройка формирует панель инструментов, с которой осуществляется запуск всех макросов: В Excel 2007 и 2010 панель инструментов можно найти на вкладке «Надстройки»: Надстройка SearchText является расширенной версией надстройки для...
Макрос предназначен для создания текстовых файлов в кодировке UTF-8. Исходными данными является таблица Excel из 12 столбцов. Сначала, макрос создаёт папку для будущих текстовых файлов. Папка создаётся в том же каталоге, где расположена книга Excel. Далее, для каждой строки таблицы, макрос формирует подпапку, используя в качестве её названия текст из 7-го столбца таблицы. И потом, когда папка...
Программа предназначена для сравнения цен конкурентов из их прайсов с прайс-листом вашей организации. ВНИМАНИЕ: Недавно разработана многофункциональная программа для обработки прайс-листов Новая программа объединения и обработки прайс-листов доступна на сайте для скачивания и тестирования на различных наборах прайс-листов. Исходными данными для программы являются: ваш прайс...
Программа предназначена для поиска минимальных цен на товары в Яндекс.Маркете UPDATE: Продажа программы прекращена 14 мая 2015 года, ввиду нерентабельности техподдержки (это единственная из моих программ, где я не могу гарантировать работоспособность, — т.к. всё зависит от Яндекса, который часто меняет сайт, и вводит ограничения типа капчи). Техподдержка программы тоже прекращена в полном...
К примеру, есть у вас несколько десятков (или сотен) текстовых файлов с подобным содержимым: (количество файлов, и количество строк данных в каждом файле не ограничено) 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 А надо из всего этого...
Программа предназначена для автоматизации формирования договоров комиссии и купли автотранспортного средства. В качестве исходных данных выступают: таблица Excel с реквизитами создаваемых документов папка с шаблонами договоров (в формате dot) В исходной таблице Excel занесены все необходимые исходные данные для заполнения бланков договоров, а также, при помощи пользовательских формул (UDF),...
Программа предназначена для работы с заказами, оформляемыми менеджерами на выставках. Основные функции программы: создание (заполнение) новых заказов редактирование существующих заказов объединение нескольких заказов в один формирование заявки на продукцию на основании данных их сформированных заказов Для каждого заказа предусмотрен выбор клиента из базы данных (если клиент...
Функция 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...
Надстройка предназначена для выполнения множественных замен в выделенном диапазоне ячеек. После запуска надстройки, появляется панель инструментов из 3 кнопок: Кнопка «Выполнить все замены» - выполняет замены в выделенном диапазоне ячеек Кнопка «Изменить список замен» - отображает лист настроек, где в первом столбце находится список заменяемых...
Если вам нужно рассылать письма из Excel, воспользуйтесь готовым решением в виде надстройки FillDocuments Ознакомьтесь с возможностями и способами рассылки писем из Excel, а также с инструкцией по настройке рассылки через TheBAT Макроc предназначен для автоматизированной рассылки почты из Excel. Для рассылки используется почтовая программа TheBAT! (подразумевается, что эта программа на...
Программа АИСС «СПК» предназначена для автоматизации работы приемной комиссии колледжей и техникумов. АИСС обеспечивает выполнение всех необходимых операций по приему документов, поиску и анализу информации, составлению отчетов. Назначением программы является автоматизация труда работника приёмной комиссии учебного заведения. Программа обеспечивает: Хранение полной...
Программа позволяет сформировать отчёты по базе данных больницы. Кроме того, реализован ввод данных в базу о новых пациентах.
Функция GetValue предназначена для получения данных из закрытой книги Excel Использовать такой способ имеет смысл только в том случае, если из большого файла надо получить значения только нескольких ячеек (или одного диапазона ячеек), и при этом точно известно расположение на листе интересующих нас ячеек, и имена листов Пример использования функции: Sub ПримерИспользования_GetValue() p =...
Программа предназначена для получения списка файлов Excel из заданной папки, и загрузки итоговых значений из каждого найденного файла В отдельной ячейке задаётся путь к папке, которая будет просмотрена в поисках файлов Excel (c расширением .xls) При формировании списка файлов проставляются гиперссылки на найденные файлы, указывается дата создания файла. Из каждого файла загружаются значения с...
Функция TextFile2Array предназначена для преобразования файла CSV в двумерный массив Очень часто при работе с текстовыми файлами (и, в частности, с файлами CSV) приходится их загружать на лист Excel, предварительно производя фильтрацию данных в этом файле. Чтобы упростить весь процесс - от выбора файла CSV в диалоговом окне, до разбиения загруженного из файла текста в двумерный массив, и была...
Программный комплекс, предназначенный для автоматизации учёта и администрирования сети связи телефонной или телекоммуникационной компании. Программа позволяет хранить и редактировать базу данных объектов (в виде файлов Excel), просматривать существующие трассы и формировать новые. Особенность программы - возможность учёта и администрирования узлов связи с нестандартными...
Часто бывает, что надо получить данные из другой, открытой вместе с используемой, книги 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. К примеру, вы заносите данные в таблицу, где в некоторые столбцы требуется вводить русские слова (фамилия, имя, и т.п.), а в другие столбцы - английские (марка и модель авто, и т.д.) Чтобы каждый раз не переключать раскладку вручную - можно воспользоваться WinAPI...
Программа предназначена для загрузки списка товаров из актов о приеме-передаче основных средств. Поддерживаются акты по формам № ОС-3.1 и № ОС-3.3, возможно добавить поддержку актов других форм (в формате Excel). При запуске макроса, выводится диалоговое окно выбора папки, после чего, в выбранной папке, производится поиск всех файлов Excel. Для каждого из найденных файлов Excel, программа...
Если ваш макрос выдаёт ошибку при использовании метода SpecialCells - возможно, причина в установленной защите листа Excel. Почему разработчики Microsoft отключили работу этой функции на защищённых листах - не совсем понятно, но мы попробуем обойти это ограничение. Итак, нам надо получить все заполненные ячейки из некого диапазона листа Excel. Обычно для этого используется вызов...
Программа предназначена для составления учебного расписания. На отдельных листах хранится список преподавателей вуза, список групп и занятий у этих групп по дням недели. Макрос делает выборку по всем преподавателям (или по выбранному преподавателю), фильтрует по заданной группе (курсу), если не выбрана опция «все курсы», сортирует по времени начала занятия, группирует по дню...
Программа предназначена для предпечатной подготовки, и последующего вывода на печать (на виртуальный ПДФ принтер) документов Excel. Программа позволяет: подгонять файлы, выгруженные из 1С, под печать на одной странице изменять ориентацию страницы для счетов-фактур вставлять реквизиты (фамилии, информацию о доверенностях) в специально выделенные для этого ячейки вставлять...
Программа предназначена для формирования прайс-листов на ноутбуки с соответствии с требованиями интернет-каталога Onliner.by Основные функции программы: (учитываются цены фирм-конкурентов, цены onliner.by и надбавка фирмы) загрузка каталога ноутбуков (названия, характеристики, цены) с сайта onliner.by в файл Excel, и обновление этого каталога назначение соответствий моделей...
Sub ПримерИспользования() ' задаём полный путь к обрабатываемому файлу ПутьКФайлу$ = ThisWorkbook.Path & "\" & "Contract.XLS" Application.ScreenUpdating = False ' отключаем обновление экрана arr = LoadArrayFromWorkbook(ПутьКФайлу$, "a2", 30) ' загружаем данные ' выводим результаты в окно Immediate Debug.Print "...
Программа предназначена для заполнения шаблонов MS Word для дальнейшей распечатке на этикеточном принтере В качестве исходных данных для макроса используется файл MS Excel в котором находятся следующие поля: Индекс Город Улица Название организации Макрос позволяет заполнять шаблоны с 24-мя и 10-ю ячейками на листе. Скриншот результата работы макроса: Смотрите также программу...
Макрос предназначен для экспорта выделенного диапазона ячеек книги Excel в код HTML. Смотрите также надстройку для экспорта таблицы или выделенного диапазона ячеек в HTML Результат (HTML код таблицы) помещается в буфер обмена. Первая строка выделенного диапазона ячеек считается заголовком таблицы (обрамляется тегами <th> вместо <td>) Например, мы имеем...
Программа предназначена для обработки таблиц с тарифами на междугородную и международную телефонную связь. Присутствует опция выгрузки обработанной таблицы в файл формата XML. При запуске программы (которая выполнена в виде надстройки Excel) формируется дополнительная панель инструментов: Формируемый надстройкой XML-файл имеет такую структуру:
Система учёта заявок предназначена для автоматизации ввода, редактирования и учёта заданий на заказ запасных частей для автомобилей. Программа позволяет производить поиск по базе данных, и распечатку информации о выбранном заказе. Эта база данных представляет собой урезанную и немного изменённую версию программы АИСС СПК.
Программа предназначена для автоматизации рабочего места сотрудника, отвечающего за регистрацию, прием на работу, и увольнение иностранных граждан. В качестве исходных данных используется таблица изображенная на скриншоте. В этой таблице содержится нужная информация, необходимая для заполнения шаблонов документов. Программа заполняет следующие документы: Доверенность (doc) Заявление на...
Программа выполняет поиск организаций по ИНН на официальном сайте для размещения информации о государственных (муниципальных) учреждениях bus.gov.ru, и заносит данные о найденных организациях в таблицу Excel. Смотрите также парсер сайта bus.gov.ru,который создаёт в Excel таблицу со списком организаций с этого сайта по выбранному региону и сферам деятельности. На скриншоте красным цветом...
Программа предназначена для формирования заданий на производство. Исходными данными выступают таблицы Excel и файлы XML. При конвертации таблиц происходит обработка данных и перестановка столбцов. При запуске программа формирует панель инструментов с 6 кнопками - для обработки файлов различной структуры.
Макрос предназначен для создания сводной таблицы и диаграммы для отчёта по трафику. В качестве исходных данных выступает таблица со статистикой доступа в интернет - сформированная программой создания отчётов по статистике Создаваемая сводная диаграмма позволяет легко проанализировать причины перерасхода трафика, а сводная таблица предоставляет детализированный отчёт по каждому сайту. При...
Макрос формирует прайс-лист для отправки клиенту. Исходными данными являются позиции из основного прайс-листа фирмы. При формировании нового прайса учитывается бонус продавца, а также коэффициенты дохода и доставки. Помимо этого простейшего макроса, у нас на сайте есть множество других программ для работы с прайс-листами. Например, для сбора данных из прайсов разных поставщиков...
Программа предназначена для преобразования файлов формата .HTM с объявлениями о продаже недвижимости (файлы являются результат
excelvba.ru