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

Перейти к основному содержанию

Статья даёт ответы на следующие вопросы:

  • Как сравнить две таблицы в Excel с помощью макросов VBA?
  • Как обращаться к ячейкам таблицы Excel с помощью VBA?
  • Как осуществлять перебор ячеек таблицы в цикле с помощью VBA?

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

В данной статье рассмотрим способ сравнения таблиц Excel с помощью VBA макросов на примере тех же исходных данных.

Проиллюстрируем задачу картинкой из первой статьи.

задача сравнения двух таблиц в Excel

Для начала напишем алгоритм наших действий по сравнению таблиц.

  1. Определим диапазоны данных первой и второй таблицы, то есть найдем последние значимые строки и сохраним их номера в переменных (последняя строка таблицы 1 — last_i и последняя строка таблицы 2 — last_j).
  2. Начнем проходить по каждой строке таблицы 2 (внешний цикл), данные из которой нужно перенести в таблицу 1. С первой строки данных (в примере это строка 3) до последней строки таблицы 2.
  3. Для каждой строки таблицы 2 определим идентификатор строки, путем формирования строки, содержащей полный адрес квартиры (значения из нескольких колонок, разделенные дефисами).
  4. Начнем проходить по каждой строке таблицы 1 (внутренний цикл) с первой строки данных (в примере это строка 3) до последней строки таблицы 1, определяя при этом идентификатор строки.
  5. Сравним значения идентификаторов строк таблицы 1 и таблицы 2.
  6. Если идентификаторы равны, перепишем ФИО покупателя из ячейки таблицы 2 в соответствующую ячейку таблицы 1; прервем внутренний цикл по таблице 1 и перейдем к следующей строке таблицы 2 (переход к п.2).

Теперь остается реализовать алгоритм в виде программного кода макроса.

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

В появившемся диалоге выделим наш макрос и нажмем Изменить.

На экране откроется окно редактора макросов Visual Basic for Applications. В области кода (правая верхняя область) отображается код только что созданного пустого макроса.

Редактор макросов Visual Basic For Applications

В процедуру Макрос1 (между объявлениями начала и конца процедуры: Sub и End Sub) необходимо вставить код, решающий поставленную задачу.
Образец кода представлен ниже.

Sub Макрос1()
'
' Макрос1 сравнение двух таблиц с использованием макроса VBA
'

' ссылка на первый лист книги
Dim sheet1 As Worksheet
Set sheet1 = ActiveWorkbook.Sheets(1)
' ссылка на второй лист книги
Dim sheet2 As Worksheet
Set sheet2 = ActiveWorkbook.Sheets(2)

' строка для хранения идентификатора строки первой таблицы
Dim str1 As String
' строка для хранения идентификатора строки второй таблицы
Dim str2 As String

' позиция курсора (номер строки) в первой таблице
Dim i As Integer
i = 3
Dim last_i As Integer
last_i = 3
' позиция курсора (номер строки) во второй таблице
Dim j As Integer
j = 3
Dim last_j As Integer
last_j = 3

' определяем последнюю значимую строку первой таблицы (последняя строка, в первой колонке которой есть значение)
For Each Cell In sheet1.Range("A:A")
    If Cell.Row > 2 Then
        If Cell.Value > "" Then
            last_i = Cell.Row
        Else
            Exit For
        End If
    End If
Next Cell

' определяем последнюю значимую строку второй таблицы (последняя строка, в первой колонке которой есть значение)
For Each Cell In sheet2.Range("A:A")
    If Cell.Row > 2 Then
        If Cell.Value > "" Then
            last_j = Cell.Row
        Else
            Exit For
        End If
    End If
Next Cell

' пробегаем по строкам второй таблицы (внешний цикл)
For j = 3 To last_j
    ' определяем идентификатор текущей строки
    str2 = sheet2.Cells(j, 1).Value & "-" & sheet2.Cells(j, 2).Value & "-" & sheet2.Cells(j, 3).Value & "-" & sheet2.Cells(j, 4).Value
    ' пробегаем по строкам первой таблицы (внутренний цикл)
    For i = 3 To last_i
        ' определяем идентификатор текущей строки
        str1 = sheet1.Cells(i, 1).Value & "-" & sheet1.Cells(i, 2).Value & "-" & sheet1.Cells(i, 3).Value & "-" & sheet1.Cells(i, 4).Value
        ' сравниваем идентификаторы строк первой и второй таблицы
        If str2 = str1 Then
            ' если совпадение найдено, то записываем покупателя из второй таблицы в первую в строку с соответствующей ему квартирой
            sheet1.Cells(i, 5).Value = sheet2.Cells(j, 5).Value
            ' прекращаем внутренний цикл, переходим к следующей итерации внешнего цикла
            ' (к следующей записи второй таблицы)
            Exit For
        End If
    Next i
Next j

End Sub

Результат решения задачи:
результат сравнения таблиц в Excel

Другие интересные статьи

  • Как сравнить две таблицы в Excel с использованием формул?
  • Горячие клавиши Excel

Тэги: 

  • Статьи
  • Excel
  • сравнение таблиц
  • VBA
  • макросы

0 / 0 / 0

Регистрация: 05.10.2020

Сообщений: 12

1

Excel

05.10.2020, 08:40. Показов 2133. Ответов 5


Студворк — интернет-сервис помощи студентам

Доброго времени суток!
Появилась необходимость в макросе для сравнения двух таблиц Excel.
Порывшись в интернете, не смог сделать правильно работающий макрос.
Задача стоит следующая: у нас имеются две таблицы, на первом листе три столбца и на втором листе аналогичные три столбца. Нужно сравнить второй и третий столбцы так, чтобы макрос учитывал в строке и 2 и 3 столбец, и если одна из ячеек в строке не совпадает, то эта строка выделяется (или в 4 столбце напротив ставится какой нибудь символ).



0



3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,928

05.10.2020, 08:57

2

файл пример приложите. Точно макрос нужен? По описанию УФ справится.



0



0 / 0 / 0

Регистрация: 05.10.2020

Сообщений: 12

05.10.2020, 11:05

 [ТС]

3

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



0



3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,928

05.10.2020, 11:14

4

Цитата
Сообщение от Nsekins
Посмотреть сообщение

как мне кажется, уф неудобно будет использовать.

обоснуйте.

Добавлено через 5 минут
в четвертом столбце на первом листе формула подойдет?

Код

=ВПР(Лист1!B1;Лист2!$B$1:$C$23;2;)=Лист1!C1



0



0 / 0 / 0

Регистрация: 05.10.2020

Сообщений: 12

05.10.2020, 12:14

 [ТС]

5

формула удобнее, согласен, но если строчек не 200.
В моем же случае, когда будет строчек 200, а иногда и больше, глаз устанет выискивать различия.
Было бы идеально, если бы неодинакоые строчки выводились на новый лист или на соседний столбец.
Но за формулу спасибо, буду использовать иногда!



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

05.10.2020, 12:42

6

Я вот буквально на той неделе тест похожий делал, только там нужно учитывать все 3 столбца, и плюс ещё подвох в том, что бывает в двух первых столбцах проскакивают дубли. И отличия по суммам нужно видеть в обоих таблицах, и делать формулами
Сделал на УФ, но проще макросом на словаре вывести в два диапазона все отличающиеся данные.
Ну а тут суммесли() и сравнить, и все дела… Или ВПР() как выше, если повторов точно не будет, или сравнивать нужно тупо строки, а не общее количество.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

05.10.2020, 12:42

Помогаю со студенческими работами здесь

Сравнение двух таблиц на разных листах
Доброе время суток!
Друзья, помогите решить задачу, есть макрос поиска одинаковых строк и…

Сравнение двух таблиц в разных книгах
Ребят, дилемма, ни как не могу сообразить, как это можно сделать.
Есть 2-ве книги;
Есть 2-ве…

Сравнение двух таблиц, поиск совпадений по 3-м столбцам
Доброго времени суток!
Есть задача — сравнить 2 таблицы (одна свежая, вторая за предыдущий день),…

Сравнение данных таблиц с перебором значений в ячейке Excel
Всем привет!

В первой таблице значения ячейки в виде "10175094,20000195;" , во второй таблице…

Сравнение двух таблиц с записью разницы в первую VBA
Прошу помощи!

Две таблицы (для удобства можете разбить на два файла или же запихнуть обе на…

Сравнение двух колонок (Excel)
Есть задача: нужно сравнить две колонки в экселе и что важное, нужно
организовать так, чтобы…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

6

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

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

macr

После загрузки программы в Excel в левом верхнем углу появится небольшое окошко как на картинке выше. При нажатии на нее происходит запуск программы, появляются два окошка: панель инструментов и окно, с помощью кнопок которого и происходит непосредственное сравнение таблиц. Можно сравнить любой диапазон столбцов и строк, они могут быть произвольно установлены с помощью кнопок Range 1 и Range 2.

macr1

Ключевые особенности данного макроса:

  • Бесплатный и очень простой в установке: нужно просто открыть макрос таблицы.
  • Сравнивает и находит различия в данных между двумя таблицами.
  • Обнаружение различий в ценностях, опечаток, неправильно проставленных датах.
  • Цвет индикаторов: более низкие значения и более высоких значений получают различные цветовые маркеры.
  • Сравнение данных из любой строки или столбца: они могут установлены вручную.

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

Как сравнить данные из двух разных таблиц Excel

Откройте обе таблицы, которые вы хотите сравнить и, конечно, Reconciliation on FireМакросы должны быть включены в Excel, в противном случае это бесплатная утилита сравнения данных работать не будет. Нажмите на кнопку Выполнить (Run), а затем заполнить обе строки сравниваемыми диапазонами каждой из таблиц.

Reconciliation-on-Fire-opening-ranges-450x2431 

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

Reconciliation-on-Fire-comparison-done-450x4351

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

Домашняя страница: здесь 
Скачать (бесплатно): здесь 
ОС: Windows, Mac

Лицензия: бесплатно

Поделиться:

Оставьте свой комментарий!

  • Комментарий в ВКонтакте

Добавить комментарий

< Предыдущая   Следующая >

Похожие статьи:

Сравнение значений двух таблиц на 2 листах в одной книге.

skrpv1

Дата: Среда, 29.01.2020, 11:35 |
Сообщение № 1

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

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

Сообщений: 3


Репутация:

0

±

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


Excel 2019

Возникла задача, сравнить две таблицы на соответствие числовых значений. Две таблицы отчётности, в ячейках значения примерно с 10 знаками после запятой. Если есть несоответствие в какой-то ячейке, нужно подкрасить её, либо подкрасить все ячейки, где значения соответствуют. Есть макрос на сравнение, но он возможно не точно сравнивает, т.к. бывает, что значения в одной и той же ячейке в двух таблицах идентичные, но отмечает как несоответствие. Хотелось бы узнать у знающих, в чём может быть проблема.
[vba]

Код

Private Sub Find_Matches()
    Dim CompareRange As Range, x As Range, y As Range
    Set CompareRange = Worksheets(«Лист2»).Range(«B8:S295») ‘диапазон с которым сравнивают

        Application.ScreenUpdating = False
    Selection.Interior.ColorIndex = xlNone

        For Each y In CompareRange
        If Not IsEmpty(y) Then
           For Each x In Selection
               If InStr(1, x, y, vbTextCompare) > 0 Then x.Interior.Color = vbGreen
           Next x
        End If
    Next y

        Application.ScreenUpdating = True

        MsgBox «Данные проверены»
End Sub

В данном макросе выделяется первый проверяемый диапазон, в самом макросе прописывает диапазон ячеек, с которым нужно сравнить. Данный макрос также был взять из нета, часть понимаю, но углубленно нет т.к. в vba человек новый. Всем спасибо.

[/vba]

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

3547485.xlsx
(14.6 Kb)

Сообщение отредактировал skrpv1Среда, 29.01.2020, 14:39

 

Ответить

t330

Дата: Четверг, 30.01.2020, 14:49 |
Сообщение № 2

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

Ранг: Форумчанин

Сообщений: 147


Репутация:

0

±

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


Excel 2016

Добрый день.
Ваш исходный макрос ( в коде ниже — Вар1 ) подсвечивает все ячейки , если находит в них строку из CompareRange …

Например , если в ячейке Листа 1 будет цифра 46.10056546546 (это x) , а в ячейке из диапазона CompareRange будет цифра 100 (это y ) ,

то debug.Print instr(1,46.10056546546,100,vbTextCompare) выдаст 4

Если Вам действительно нужно сравнить значения в ячейках двух одинаковых таблиц , то лучше воспользоваться варинатом номер 3 из кода ниже…

[vba]

Код

Option Explicit

Private Sub Find_MisMatches()
    Dim CompareRange As Range, x As Range, y As Range
    Set CompareRange = Worksheets(«Лист2»).Range(«B1:B12») ‘диапазон с которым сравнивают

        Application.ScreenUpdating = False
    Worksheets(«Лист1»).UsedRange.Interior.ColorIndex = xlNone

        ‘Вар1. Подсвечивает ячейки в диапазоне Worksheets(«Лист1»).Range(«D1:D12»)
    ‘если внутри строки из символов этой ячейки найдена хоть одно совпадение с ячейками из диапазона CampareRange
    For Each y In CompareRange
       ‘ Debug.Print y
        If Not IsEmpty(y) Then
        For Each x In Worksheets(«Лист1»).Range(«D1:D12»)
            If InStr(1, x, y, vbTextCompare) > 0 Then x.Interior.Color = vbGreen
        ‘Debug.Print x, y, InStr(1, x, y, vbTextCompare)
        Next x
        End If
    Next y

        Application.ScreenUpdating = True

            ‘Вар2. Подсвечивает ячейки в диапазоне Worksheets(«Лист1»).Range(«F1:F12»)
    ‘если ячейка из этого диапазона совпадает по значению с ЛЮБОЙ из ячеек из диапазона CompareRange
    For Each y In CompareRange

                If Not IsEmpty(y) Then
        For Each x In Worksheets(«Лист1»).Range(«F1:F12») ‘ циклом берем любую ячейку из диапазона CompareRange и сравниваем её значение с ячейкой в сравниваемом диапазоне Worksheets(«Лист1»).Range(«F1:F12»)
            If x = y Then x.Interior.Color = vbGreen
        Next x
        End If
    Next y

        ‘Вар3. Подсвечивает ячейки в диапазоне Worksheets(«Лист1»).Usedrange
    ‘если ячейка из диапазона в Листе 1 совпадает с ячейкой с таким же адресом из диапазона CompareRange

        Dim i As Integer, j As Integer  ‘ переменные для записи номеров строк и столбов в ячейках из дипазона Comparerange

        Set x = Worksheets(«Лист1»).UsedRange ‘ устанавливаем диапазон в котором надо подсветить совпадающие ячейки при сравнении с Comparerange

        For Each y In CompareRange

                If Not IsEmpty(y) Then
        i = y.Row ‘ записываем номер строки ячейки из Comparerange
        j = y.Column ‘записываем номер столбца ячейки из Comparerange
        If x(i, j) = y Then x(i, j).Interior.Color = vbGreen  ‘если данные в ячейке из сравниваемого диапазона на листе 1  совпадают с данными в ячейке из диапазона CampareRange с тем же номером строки и с тем же номер столбца, то подсвечиваем
        End If
    Next y

                    MsgBox «Данные проверены»
End Sub

[/vba]

Сообщение отредактировал t330Четверг, 30.01.2020, 14:58

 

Ответить

skrpv1

Дата: Четверг, 30.01.2020, 15:51 |
Сообщение № 3

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

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

Сообщений: 3


Репутация:

0

±

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


Excel 2019

Излишнее цитирование удалено администрацией — это нарушение п.5j Правил форума

Огромное вам спасибо. Да, мне подходит 3 вариант вашего кода. Но такой вопрос. Таблица оригинальная, к которой я это применяю имеет диапазон ячеек для проверки B7:R291, как мне сделать проверку каждой ячейки листа 1 с каждой ячейкой листа 2 такого же диапазона? В первоначальном случае это делалось циклом «for», если я правильно понимаю. И получается в вашем 3-ем варианте, диапазон где подсвечиваются ячейки (х), он выделяется сам, т.е. целиком лист 1? Или мне самому нужно прописывать необходимые значения? Извините за глупые вопросы, повторюсь, нахожусь в стадии изучения.

Сообщение отредактировал китинЧетверг, 30.01.2020, 15:57

 

Ответить

t330

Дата: Четверг, 30.01.2020, 20:31 |
Сообщение № 4

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

Ранг: Форумчанин

Сообщений: 147


Репутация:

0

±

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


Excel 2016

Обратите внимание , что в вашем исходном файле форматы некоторых чисел в листах не совпадают, хотя сами числа равны друг другу…

Например в ячейке B7 и в первом и во втором листе стоит цифра 11,6633333541895
но функция =ВПР(Лист1!B7;Лист2!B:B;1;0) показывает Н/Д (см в ячейке Лист1!B15)

Поэтому, чтобы сравнивать цифры в этих таблицах их приходится сначала преобразовывать в строки и потом сравнивать (строка 10 в коде ниже)…

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

[vba]

Код

Option Explicit

Private Sub Find_MisMatches()
    Dim CompareRange As Range, x As Range, y As Range, InitialSheet As Worksheet
    Dim i As Long, j As Long  ‘ переменные для записи номеров строк и столбов в ячейках из дипазона Comparerange

         Set InitialSheet = Worksheets(«Лист1») ‘ устанавливаем диапазон в котором надо подсветить совпадающие ячейки из листа 1 при сравнении с Comparerange. В данном случае выбирается диапазон со всеми когда-либо заполненными ячейками в Листе1
    Set CompareRange = Application.InputBox(«Укажите диапазон ячеек для сравнения», «Запрос данных», «B2:S10», Type:=8) ‘диапазон в листе 2 с которым сравнивают. В данном случае это все когда-либо заполненные ячейки в листе2

        Application.ScreenUpdating = False
    InitialSheet.UsedRange.Interior.ColorIndex = xlNone  ‘ очищаем заливку в  диапазоне где будем заливать совпадающие ячейки

        On Error Resume Next

            ‘Вар3. Подсвечивает ячейки в сравниваемом диапазоне , но только в тех ячейках ,
    ‘у которых тот же самый адрес , что и выбранном диаппазоне CompareRange

            ‘Если выбрано менее двух ячеек
     If CompareRange.Count = 1 Then
        MsgBox «Для отбора уникальных значений требуется указать более одной ячейки», vbInformation
        Exit Sub
     End If

          ‘если указаны только пустые ячейки вне рабочего диапазона
    If CompareRange Is Nothing Then
        MsgBox «Недостаточно данных для выбора значений», vbInformation
        Exit Sub
    End If

                ‘Запускаем цикл по каждой ячейке из Comparerange
    For Each y In CompareRange

                       i = y.Row ‘ записываем номер строки ячейки из Comparerange
        j = y.Column ‘записываем номер столбца ячейки из Comparerange

       10      If CStr(InitialSheet.Cells(i, j).Value) = CStr(CompareRange.Parent.Cells(i, j).Value) Then   ‘ здесь преобразовываем данные в ячейках в текстовый формат и сравниваем
        InitialSheet.Cells(i, j).Interior.Color = vbGreen ‘если данные в ячейке из сравниваемого диапазона на листе 1  совпадают с данными в ячейке из диапазона CompareRange с тем же номером строки и с тем же номер столбца, то подсвечиваем зеленым
      End If

            Next y
    MsgBox «Данные проверены»
End Sub

[/vba]

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

3834271.xlsm
(27.4 Kb)

 

Ответить

skrpv1

Дата: Пятница, 31.01.2020, 15:09 |
Сообщение № 5

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

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

Сообщений: 3


Репутация:

0

±

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


Excel 2019

Обратите внимание , что в вашем исходном файле форматы некоторых чисел в листах не совпадают, хотя сами числа равны друг другу…

Например в ячейке B7 и в первом и во втором листе стоит цифра 11,6633333541895
но функция =ВПР(Лист1!B7;Лист2!B:B;1;0) показывает Н/Д (см в ячейке Лист1!B15)

Поэтому, чтобы сравнивать цифры в этих таблицах их приходится сначала преобразовывать в строки и потом сравнивать (строка 10 в коде ниже)…

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

Спасибо вам огромное за вашу помощь. Все предельно понятно. Удачи вам и успехов!

 

Ответить

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Office для бизнеса Excel 2010 Excel 2007 Еще…Меньше

Чтобы сравнить данные в двух столбцах Microsoft Excel и найти повторяющиеся записи, воспользуйтесь следующими способами. 

Способ 1. Использование формулы на этом этапе

  1. Начните Excel.

  2. На новом примере введите следующие данные (оставьте столбец B пустым):

    A

    B

    C

    1

    1

    3

    2

    2

    5

    3

    3

    8

    4

    4

    2

    5

    5

    0

  3. Введите в ячейку B1 следующую

    формулу:=IF(ISERROR(MATCH(A1,$C$1:$C$5,0)),»»,A1)

  4. Выберем ячейку С1 по B5.

  5. В Excel 2007 и более поздних версиях Excel выберите Заполнить в группе Редактирование, а затем выберите Вниз.

    Повторяющиеся числа отображаются в столбце B, как в следующем примере: 

    A

    B

    C

    1

    1

    3

    2

    2

    2

    5

    3

    3

    3

    8

    4

    4

    2

    5

    5

    5

    0

Способ 2. Использование макроса Visual Basic макроса

Предупреждение: Корпорация Майкрософт предоставляет примеры программирования только для иллюстрации без гарантии, выраженной или подразумеваемой. Это относится и не только к подразумеваемой гарантии пригодности и пригодности для определенной цели. В этой статье предполагается, что вы знакомы с языком программирования, который демонстрируется, и средствами, используемыми для создания и от debug procedures. Инженеры службы поддержки Майкрософт могут объяснить функциональные возможности конкретной процедуры. Однако они не будут изменять эти примеры, чтобы обеспечить дополнительные функциональные возможности или процедуры по построению в необходимом порядке.

Чтобы использовать макрос Visual Basic для сравнения данных в двух столбцах, с помощью следующих действий:

  1. Запустите Excel.

  2. Нажмите ALT+F11, чтобы запустить Visual Basic редактора.

  3. В меню Вставка выберите Модуль.

  4. Введите следующий код на листе модуля:

    Sub Find_Matches()
    Dim CompareRange As Variant, x As Variant, y As Variant
    ' Set CompareRange equal to the range to which you will
    ' compare the selection.
    Set CompareRange = Range("C1:C5")
    ' NOTE: If the compare range is located on another workbook
    ' or worksheet, use the following syntax.
    ' Set CompareRange = Workbooks("Book2"). _
    ' Worksheets("Sheet2").Range("C1:C5")
    '
    ' Loop through each cell in the selection and compare it to
    ' each cell in CompareRange.
    For Each x In Selection
    For Each y In CompareRange
    If x = y Then x.Offset(0, 1) = x
    Next y
    Next x
    End Sub

  5. Нажмите ALT+F11, чтобы вернуться к Excel.

    1. Введите в качестве примера следующие данные (оставьте столбец B пустым):
       

      A

      B

      C

      1

      1

      3

      2

      2

      5

      3

      3

      8

      4

      4

      2

      5

      5

      0

  6. Выберем ячейку от A1 до A5.

  7. В Excel 2007 и более поздних версиях Excel выберите вкладку Разработчик, а затем в группе Код выберите макрос.

    Примечание: Если вкладка Разработчик не отключается, возможно, ее нужно включить. Для этого выберите Файл > параметры > настроитьленту , а затем выберите вкладку Разработчик в поле настройки справа.

  8. Щелкните Find_Matches, а затем нажмите кнопку Выполнить.

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

    A

    B

    C

    1

    1

    3

    2

    2

    2

    5

    3

    3

    3

    8

    4

    4

    2

    5

    5

    5

    0

Нужна дополнительная помощь?

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