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
  • макросы

Содержание

  1. Excel макросы объединение таблиц
  2. Консолидация (объединение) данных из нескольких таблиц в одну
  3. Способ 1. С помощью формул
  4. Способ 2. Если таблицы неодинаковые или в разных файлах
  5. Консолидация (объединение) данных из нескольких таблиц в одну
  6. Способ 1. С помощью формул
  7. Способ 2. Если таблицы неодинаковые или в разных файлах
  8. Как свести таблицы excel из разных файлов в один
  9. Как объединить две таблицы Excel в одну
  10. Как объединить две таблицы Excel с помощью функции ВПР
  11. Консолидация данных в программе Microsoft Excel
  12. Условия для выполнения процедуры консолидации
  13. Создание консолидированной таблицы
  14. Как объединить файлы Excel и таблицы
  15. Как объединить файлы и таблицы Excel
  16. Объединить таблицы в новый или существующий файл
  17. Объединить несколько файлов Excel

Excel макросы объединение таблиц

Существует две таблицы с данными:

  • Таблица Goods в которой хранятся товары.
  • Таблица Costs в которой хранятся цены этих товаров.

Нужно связать эти две таблицы в одну, получив, тем самым таблицу, содержащую в себе как товары, так и их цены (разбиты по городам). В обеих таблица существует поле «Номенклатурный номер», по которому и предполагается связывать данные из исходных таблиц. Проще говоря, нужно получить таблицу Result, добавив в таблицу Goods последние четыре столбца из таблицы Costs, на основании эквивалентности поля «Номенклатурного номер».

Excel 2003
Файл с книгой прикрепил.

Вложения

Catalog.rar (352.6 Кб, 63 просмотров)

У Вас там косяк в номере 400019075.
Если последние 4, то отработал код из http://hugo.nxt.ru/CompareFiles.Find.rar
1146 совпадений.

Настройки:
Файл — приёмник: C:tempVectorCКаталог.xls
Файл — источник: C:tempVectorCКаталог.xls
Столбцы сравнения в приёмнике: a
Столбцы сравнения в источнике: a
Лист — приёмник (№): 1
Лист — источник (№): 2
Столбцы — приёмники данных копирования: O,P,Q,R
Столбцы — источники данных копирования: E,F,G,H

Добиваем первый лист данными второго. Можно сперва на лист Result скопировать данные первого листа и добивать туда.

Спасибо, только у меня почему-то ничего не получилось.
Пишет:

Object doesn’t support this property or method

В чём косяк номера 400019075?

Жаль. Версия Экселя какая у Вас? У меня на 2000 и 2007 работает.
А косяк в том, что 400019075 два раза в таблице — один раз данных больше.

Хотя именно под эту задачу несложно макрос на массиве написать — вечером могу сделать, если раньше не напишут.

Источник

Консолидация (объединение) данных из нескольких таблиц в одну

Способ 1. С помощью формул

Имеем несколько однотипных таблиц на разных листах одной книги. Например, вот такие:

Необходимо объединить их все в одну общую таблицу, просуммировав совпадающие значения по кварталам и наименованиям.

Самый простой способ решения задачи «в лоб» — ввести в ячейку чистого листа формулу вида

=’2001 год’!B3+’2002 год’!B3+’2003 год’!B3

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

Если листов очень много, то проще будет разложить их все подряд и использовать немного другую формулу:

=СУММ(‘2001 год:2003 год’!B3)

Фактически — это суммирование всех ячеек B3 на листах с 2001 по 2003, т.е. количество листов, по сути, может быть любым. Также в будущем возможно поместить между стартовым и финальным листами дополнительные листы с данными, которые также станут автоматически учитываться при суммировании.

Способ 2. Если таблицы неодинаковые или в разных файлах

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

Рассмотрим следующий пример. Имеем три разных файла (Иван.xlsx, Рита.xlsx и Федор.xlsx) с тремя таблицами:

Хорошо заметно, что таблицы не одинаковы — у них различные размеры и смысловая начинка. Тем не менее их можно собрать в единый отчет меньше, чем за минуту. Единственным условием успешного объединения (консолидации) таблиц в подобном случае является совпадение заголовков столбцов и строк. Именно по первой строке и левому столбцу каждой таблицы Excel будет искать совпадения и суммировать наши данные.

Для того, чтобы выполнить такую консолидацию:

  1. Заранее откройте исходные файлы
  2. Создайте новую пустую книгу (Ctrl + N)
  3. Установите в нее активную ячейку и выберите на вкладке (в меню) Данные — Консолидация(Data — Consolidate) . Откроется соответствующее окно:

  • Установите курсор в строку Ссылка(Reference) и, переключившись в файл Иван.xlsx, выделите таблицу с данными (вместе с шапкой). Затем нажмите кнопку Добавить(Add) в окне консолидации, чтобы добавить выделенный диапазон в список объединяемых диапазонов.
  • Повторите эти же действия для файлов Риты и Федора. В итоге в списке должны оказаться все три диапазона:

    Обратите внимание, что в данном случае Excel запоминает, фактически, положение файла на диске, прописывая для каждого из них полный путь (диск-папка-файл-лист-адреса ячеек). Чтобы суммирование происходило с учетом заголовков столбцов и строк необходимо включить оба флажка Использовать в качестве имен (Use labels) . Флаг Создавать связи с исходными данными (Create links to source data) позволит в будущем (при изменении данных в исходных файлах) производить пересчет консолидированного отчета автоматически.

    После нажатия на ОК видим результат нашей работы:

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

    Источник

    Консолидация (объединение) данных из нескольких таблиц в одну

    Способ 1. С помощью формул

    Имеем несколько однотипных таблиц на разных листах одной книги. Например, вот такие:

    Необходимо объединить их все в одну общую таблицу, просуммировав совпадающие значения по кварталам и наименованиям.

    Самый простой способ решения задачи «в лоб» — ввести в ячейку чистого листа формулу вида

    =’2001 год’!B3+’2002 год’!B3+’2003 год’!B3

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

    Если листов очень много, то проще будет разложить их все подряд и использовать немного другую формулу:

    =СУММ(‘2001 год:2003 год’!B3)

    Фактически — это суммирование всех ячеек B3 на листах с 2001 по 2003, т.е. количество листов, по сути, может быть любым. Также в будущем возможно поместить между стартовым и финальным листами дополнительные листы с данными, которые также станут автоматически учитываться при суммировании.

    Способ 2. Если таблицы неодинаковые или в разных файлах

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

    Рассмотрим следующий пример. Имеем три разных файла (Иван.xlsx, Рита.xlsx и Федор.xlsx) с тремя таблицами:

    Хорошо заметно, что таблицы не одинаковы — у них различные размеры и смысловая начинка. Тем не менее их можно собрать в единый отчет меньше, чем за минуту. Единственным условием успешного объединения (консолидации) таблиц в подобном случае является совпадение заголовков столбцов и строк. Именно по первой строке и левому столбцу каждой таблицы Excel будет искать совпадения и суммировать наши данные.

    Для того, чтобы выполнить такую консолидацию:

    1. Заранее откройте исходные файлы
    2. Создайте новую пустую книгу (Ctrl + N)
    3. Установите в нее активную ячейку и выберите на вкладке (в меню) Данные — Консолидация(Data — Consolidate) . Откроется соответствующее окно:

  • Установите курсор в строку Ссылка(Reference) и, переключившись в файл Иван.xlsx, выделите таблицу с данными (вместе с шапкой). Затем нажмите кнопку Добавить(Add) в окне консолидации, чтобы добавить выделенный диапазон в список объединяемых диапазонов.
  • Повторите эти же действия для файлов Риты и Федора. В итоге в списке должны оказаться все три диапазона:

    Обратите внимание, что в данном случае Excel запоминает, фактически, положение файла на диске, прописывая для каждого из них полный путь (диск-папка-файл-лист-адреса ячеек). Чтобы суммирование происходило с учетом заголовков столбцов и строк необходимо включить оба флажка Использовать в качестве имен (Use labels) . Флаг Создавать связи с исходными данными (Create links to source data) позволит в будущем (при изменении данных в исходных файлах) производить пересчет консолидированного отчета автоматически.

    После нажатия на ОК видим результат нашей работы:

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

    Источник

    Как свести таблицы excel из разных файлов в один

    Как объединить две таблицы Excel в одну

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

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

    В этой статье мы рассмотрим наиболее эффективные способы как это сделать.

    Как объединить две таблицы Excel с помощью функции ВПР

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

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

    Для этого в ячейку D2 вставим формулу с функцией ВПР:

    • B2 – ячейка с названием товара, которое мы ищем в таблице с ценами;
    • $G$2:$H$4 – диапазон ячеек таблицы с наименованием товаров и ценами. В столбце G содержатся названия товаров, по которым функция осуществляет поиск. В столбце H отражены цены, которые функция ВПР будет подставлять в нашу таблицу. Диапазон ячеек включает в себя значки $, с их помощью диапазон зафиксирован и не будет изменяться при протягивании формулы по другим ячейкам.
    • 2 – номер столбца в диапазоне данных с ценами на товары, которые мы хотим подставить в нашу таблицу.
    • 0 – точность совпадения данных. Ставим “0”, так как нам необходимо точное совпадение.

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

    Консолидация данных в программе Microsoft Excel

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

    Условия для выполнения процедуры консолидации

    Естественно, что не все таблицы можно консолидировать в одну, а только те, которые соответствуют определенным условиям:

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

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

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

      Открываем отдельный лист для консолидированной таблицы.

    В поле «Функция» требуется установить, какое действие с ячейками будет выполняться при совпадении строк и столбцов. Это могут быть следующие действия:

    • сумма;
    • количество;
    • среднее;
    • максимум;
    • минимум;
    • произведение;
    • количество чисел;
    • смещенное отклонение;
    • несмещенное отклонение;
    • смещенная дисперсия;
    • несмещенная дисперсия.

    Как видим, после этого диапазон добавляется в список.

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

    Для того, чтобы автоматически добавить название столбцов в шапку, ставим галочку около параметра «Подписи верхней строки». Для того, чтобы производилось суммирование данных устанавливаем галочку около параметра «Значения левого столбца». Если вы хотите, чтобы при обновлении данных в первичных таблицах обновлялась также и вся информация в консолидированной таблице, то обязательно следует установить галочку около параметра «Создавать связи с исходными данными». Но, в этом случае нужно учесть, что, если вы захотите в исходную таблицу добавить новые строки, то придется снять галочку с данного пункта и пересчитать значения вручную.

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

    Мы рады, что смогли помочь Вам в решении проблемы.

    Как объединить файлы Excel и таблицы

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

    Как объединить файлы и таблицы Excel

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

    1. Объединить таблицы в новый или существующий файл
    2. Объединить несколько файлов Excel

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

    Объединить таблицы в новый или существующий файл

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

    • Откройте исходный файл Excel и переключитесь на лист, который вы хотите скопировать.
    • Щелкните вкладку «Главная»> раздел «Ячейки»> «Формат»> «Переместить или скопировать лист».
    • Откроется всплывающее окно, в котором вы можете выбрать существующий файл Excel или создать новый файл на ходу.
      • Когда ты выберите новый вариант файла, он мгновенно создаст новый файл, но не сохранит его.
      • Когда ты выберите существующий файл, у вас есть возможность выбрать, куда будет вставлен лист, т. е. до или после существующих листов или в конце всех листов.

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

      Если вы хотите переместить несколько листов в другой файл Excel, то перед использованием «Переместите или скопируйте лист » выберите листы с помощью Ctrl или Shift. В то время как Shift позволяет вам выбирать соседние листы или диапазон листов, Ctrl позволяет вам выбирать отдельные листы. Остальные шаги такие же. Вы можете использовать это для ручного слияния файлов Excel.

      Объединить несколько файлов Excel

      Слияние файлов Excel — сложная вещь, и для этого мы будем использовать код VBA из ExtendOffice. Это позволит вам объединить несколько файлов или книг, доступных в папке.

      • Создайте новую электронную таблицу Excel и нажмите ALT + F11, чтобы открыть раздел разработчика.
      • Щелкните меню «Вставка», а затем «Модуль»
      • Вставьте код, указанный ниже. Назовите модуль MergeExcel

      Затем нажмите Alt + F8 открыть Макрос диалог. Это покажет все макросы на листе. Выбирать MergeExcel и нажмите Пробег. Вам будет предложено сохранить файлы, обязательно сделайте это. После этого все листы из разных файлов Excel станут доступны в файле Excel, в котором вы запускали макрос. На веб-сайте ExtendOffice есть много таких макросов, и я настоятельно рекомендую посетить их по адресу extendoffice.com.

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

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

      Источник

  • Сравнение двух таблиц

    Имеем две таблицы (например, старая и новая версия прайс-листа), которые надо сравнить и оперативно найти отличия:

    Поиск отличий в двух таблицах в Excel

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

    Для любой задачи в Excel почти всегда есть больше одного решения (обычно 4-5). Для нашей проблемы можно использовать много разных подходов:

    • функцию ВПР (VLOOKUP) — искать названия товаров из нового прайс-листа в старом и выводить старую цену рядом с новой, а потом ловить отличия
    • объединить два списка в один и построить по нему потом сводную таблицу, где наглядно будут видны отличия
    • использовать надстройку Power Query для Excel

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

    Способ 1. Сравнение таблиц функцией ВПР (VLOOKUP)

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

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

    Поиск отличий с ВПР

    Те товары, напротив которых получилась ошибка #Н/Д — отсутствуют в старом списке, т.е. были добавлены. Изменения цены также хорошо видны.

    Плюсы этого способа: просто и понятно, «классика жанра», что называется. Работает в любой версии Excel.

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

    Способ 2. Сравнение таблиц с помощью сводной

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

    Объединяем таблицы

    Теперь на основе созданной таблицы создадим сводную через Вставка — Сводная таблица (Insert — Pivot Table). Закинем поле Товар в область строк, поле Прайс в область столбцов и поле Цена в область значений:

    Сводная

    Как видите, сводная таблица автоматически сформирует общий список всех товаров из старого и нового прайс-листов (без повторений!) и отсортирует продукты по алфавиту. Хорошо видно добавленные товары (у них нет старой цены), удаленные товары (у них нет новой цены) и изменения цен, если были.

    Общие итоги в такой таблице смысла не имеют, и их можно отключить на вкладке Конструктор — Общие итоги — Отключить для строк и столбцов (Design — Grand Totals).

    Если изменятся цены (но не количество товаров!), то достаточно просто обновить созданную сводную, щелкнув по ней правой кнопкой мыши — Обновить (Referesh).

    Плюсы: такой подход на порядок быстрее работает с большими таблицами, чем ВПР. 

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

    Способ 3. Сравнение таблиц с помощью Power Query

    Power Query — это бесплатная надстройка для Microsoft Excel, позволяющая загружать в Excel данные практически из любых источников и трансформировать потом эти данные любым желаемым образом. В Excel 2016 эта надстройка уже встроена по умолчанию на вкладке Данные (Data), а для Excel 2010-2013 ее нужно отдельно скачать с сайта Microsoft и установить — получите новую вкладку Power Query.

    Перед загрузкой наших прайс-листов в Power Query их необходимо преобразовать сначала в умные таблицы. Для этого выделим диапазон с данными и нажмем на клавиатуре сочетание Ctrl+T или выберем на ленте вкладку Главная — Форматировать как таблицу (Home — Format as Table). Имена созданных таблиц можно подкорректировать на вкладке Конструктор (я оставлю стандартные Таблица1 и Таблица2, которые получаются по-умолчанию).

    Загрузите старый прайс в Power Query с помощью кнопки Из таблицы/диапазона (From Table/Range) с вкладки Данные (Data) или с вкладки Power Query (в зависимости от версии Excel). После загрузки вернемся обратно в Excel из Power Query командой Закрыть и загрузить — Закрыть и загрузить в… (Close & Load — Close & Load To…):

    Закрыть и загрузить

    … и в появившемся затем окне выбрем Только создать подключение (Connection Only).

    Повторите то же самое с новым прайс-листом. 

    Теперь создадим третий запрос, который будет объединять и сравнивать данных из предыдущих двух. Для этого выберем в Excel на вкладке Данные — Получить данные — Объединить запросы — Объединить (Data — Get Data — Merge Queries — Merge) или нажмем кнопку Объединить (Merge) на вкладке Power Query.

    В окне объединения выберем в выпадающих списках наши таблицы, выделим в них столбцы с названиями товаров и в нижней части зададим способ объединения — Полное внешнее (Full Outer):

    Слияние запросов

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

    Разворачиваем столбцы

    В итоге получим слияние данных из обеих таблиц:

    Объединение таблиц

    Названия столбцов в шапке лучше, конечно, переименовать двойным щелчком на более понятные:

    Переименованные столбцы

    А теперь самое интересное. Идем на вкладку Добавить столбец (Add Column) и жмем на кнопку Условный столбец (Conditional Column). А затем в открывшемся окне вводим несколько условий проверки с соответствующими им значениями на выходе:

    Условный столбец

    Останется нажать на ОК и выгрузить получившийся отчет в Excel с помощью все той же кнопки Закрыть и загрузить (Close & Load) на вкладке Главная (Home):

    Результат сравнения

    Красота.

    Причем, если в будущем в прайс-листах произойдут любые изменения (добавятся или удалятся строки, изменятся цены и т.д.), то достаточно будет лишь обновить наши запросы сочетанием клавиш Ctrl+Alt+F5 или кнопкой Обновить все (Refresh All) на вкладке Данные (Data).

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

    Минусы: Требует установленной надстройки Power Query (в Excel 2010-2013) или Excel 2016. Имена столбцов в исходных данных не должны меняться, иначе получим ошибку «Столбец такой-то не найден!» при попытке обновить запрос.

    Ссылки по теме

    • Как собрать данные из всех файлов Excel в заданной папке с помощью Power Query
    • Как найти совпадения между двумя списками в Excel
    • Слияние двух списков без дубликатов

    0 / 0 / 0

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

    Сообщений: 12

    1

    Excel

    05.10.2020, 08:40. Показов 2136. Ответов 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

    Нужно сравнить два файла Microsoft Excel? Вот два простых способа сделать это.

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

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

    Нужно ли вам внимательно посмотреть вручную или вы хотите, чтобы Excel выполнял некоторые тяжелые работы

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

    Это самые простой и элементарный способ сравнения двух таблиц. Сравнивать таким способом возможно, как числовые значение, так и текстовые. Для примера сравним два диапазона числовых значений, всего на всего прописав в соседней ячейке формулу их равенства =C2=E2, как результат при равенстве ячеек мы получим ответ «ИСТИНА», а если совпадений нет, будет «ЛОЖЬ». Теперь простым авто копированием копируем на весь диапазон нашу формулу позволяющую сравнить два столбика в Excel и видим разницу.

    Быстрое выделение значений, которые отличаются

    Это также не очень обременительный способ. Если вам просто нужно найти и удостовериться в наличии, ну или отсутствии отличий между таблицами, вам нужно на вкладке «Главная», выбрать кнопку меню «Найти и выделить», предварительно выделив диапазон где надо сравнить две таблицы в Excel. В открывшимся меню выберите пункт «Выделить группу ячеек…» и в появившемся диалоговом окне выберите «отличия по строкам».

    Использование макроса VBA

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

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

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Sub Find_Matches() Dim CompareRange As Variant, x As Variant, y As Variant ‘ Установка переменной CompareRangeравной сравниваемому диапазонуSet CompareRange = Range(«B1:B11») ‘ Если сравниваемый диапазон находится на другом листе или книге,’ используйте следующий синтаксис’ Set CompareRange = Workbooks(«Книга2»). _ ‘ Worksheets(«Лист2»).Range(«B1:B11″)» Сравнение каждого элемента в выделенном диапазоне с каждым элементом’ переменной CompareRangeFor Each x In Selection For Each y In CompareRange If x = y Then x.Offset(0, 2) = x Next y Next x End Sub

    В данном коде переменной CompareRange присваивается диапазон со сравниваемым массивом. Затем запускается цикл, который просматривает каждый элемент в выделенном диапазоне и сравнивает его с каждым элементом сравниваемого диапазона. Если были найдены элементы с одинаковыми значениями, макрос заносит значение элемента в столбец С.

    Чтобы использовать макрос, вернитесь на рабочий лист, выделите основной диапазон (в нашем случае, это ячейки A1:A11), нажмите сочетание клавиш Alt+F8. В появившемся диалоговом окне выберите макрос Find_Matches и щелкните кнопку выполнить.

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

    Сравнить две таблицы в Excel с помощью условного форматирования

    Очень хороший способ, при котором вы сможете видеть выделенным цветом значение, которые при сличении двух таблиц отличаются. Применить условное форматирование вы можете на вкладке «Главная», нажав кнопку «Условное форматирование» и в предоставленном списке выбираем «Управление правилами».

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

    Поиск отличий в двух списках

    ​If Worksheets(«Лист1»).Cells(i, 2)​ тыс.строк, от формул​ Для этого придется​ нажмите клавишу​ форматированных ячеек:».​ отображаются в окне​ области под двумя​ возникнуть вопросы «Кто​ формул или ссылок​ подключения данных к​

    Вариант 1. Синхронные списки

    ​ и другие задачи,​ 1)​ единицы, а во​ — то ведь​ модуля объясните пожалуйста.​ первом файле, и​ потом делал Условное​ = Worksheets(«Лист2»).Cells(i, 2)​ нужно будет избавиться.​ использовать формулу массива:​F5​В поле ввода введите​​ таким образом, чтобы​

    ​ частями таблицы. Изменения​
    ​ ее изменил? И​
    ​ на именованные диапазоны.​

    Как сравнить два файла вȎxcel на различия

    ​ базе данных Access​ вы можете использовать​

    ​i = 0​

    ​ втором одна, то​ по ним можно​

    ​Steel Rain​ 1 ячейку во​ форматирование-Правила выделения ячеек-Повторяющиеся​ Then ‘ И​Для этого скопировать​Выглядит страшновато, но свою​, затем в открывшемся​ формулу:​ различия можно было​ выделяются разными цветами​​ что именно изменилось?»​

    ​ Схема может пересекать​
    ​ и текстовому файлу.​
    ​ команды на вкладке​

    ​For Each x​ код покажет, что​ формулами подтянуть остальное​: а, ещё, пардонте,​ втором. По второму​ значения и далее​​ размеры тоже совпали​​ весь столбец C​ работу выполняет отлично​​ окне кнопку​

    ​Щелкните по кнопке «Формат»​
    ​ просматривать параллельно.​ в соответствии с​
    ​ Средство сравнения электронных​ листы и книги.​Подробнее об этом можно​
    ​Inquire​ In .keys ‘начинаем​ не совпадает одна​ из тех строк.​​ забыл уточнить, значения​​ запросу 2-ую ячейку​

    Как сравнить два файла вȎxcel на различия

    ​ в этой колонке​Range(Worksheets(«Лист1»).Cells(i, 1), Worksheets(«Лист1»).Cells(i,​ в буфер обмена,​ ;)​

    • ​Выделить (Special)​ и на вкладке​
    • ​У нас имеется две​​ их типом.​
    • ​ таблиц от Майкрософт​В данной схеме отображаются​ узнать в разделе​​(Запрос). Вкладка​
    • ​ перебор данных в​ единица первого списка.​С помощью ВПР()​​ в ячейках по​ в том же​ фильтр по цвету​ 10)).Select​ правый клик >>​
    • ​Steel Rain​

    Вариант 2. Перемешанные списки

    ​-​ «Заливка» укажите синий​ таблицы заказов, скопированных​В двух расположенных рядом​ поможет вам ответить​ два уровня связей​

    ​ Анализ книги.​Inquire​ словаре по ключам​Ну а по​ или индекса с​ которым нужен отбор​ столбце в первом​​ заливки. На файле​’ здесь 10​ специальная вставка >>​: Доброго всем времени​Отличия по строкам (Row​ цвет. На всех​ в один рабочий​​ частях таблицы сравнивается​

    Как сравнить два файла вȎxcel на различия

    ​ на эти вопросы —​​ ячейки для ячейки​

    ​К началу страницы​(Запрос) ленты Excel​If .Item(x) =​ итему думаю кей​
    ​ поискпозицией :)​
    ​ строковые​

    ​ файле и 2-ую​ в 8Мб данный​ — это номер​ значения.​ суток.​ differences)​ окнах жмем ОК.​ лист. Необходимо выполнить​

    ​ каждый лист из​ найдет изменения и​​ A10 на листе​
    ​В книгах, связанных с​
    ​ содержит кнопки для​
    ​ 1 Then ‘если​
    ​ не получить без​То, что там​Hugo​ во втором. Получил​

    Как сравнить два файла вȎxcel на различия

    ​ способ занимает около​ последнего столбца в​Похожая тема:​

    ​Сразу скажу, практически​. В последних версиях​При определении условий для​ сравнение данных двух​ обоих файлов, начиная​

    Как сравнить два файла вȎxcel на различия

    ​ выделит их.​ 5 в книге​ другими книгами с​

    planetaexcel.ru>

    Как сравнить две таблицы в Excel с помощью функции СЧЁТЕСЛИ и правил

    Все вышеперечисленные способы хороши для упорядоченных таблиц, а вот когда данные, не упорядоченные необходимы иные способы один из которых мы сейчас и рассмотрим. Представим, к примеру, у нас есть 2 таблицы, значения в которых немного отличаются и нам необходимо сравнить эти таблицы для определения значения, которое отличается. Выделяем значение в диапазоне первой таблицы и на вкладке «Главная», пункт меню «Условное форматирование» и в списке жмем пункт «Создать правило…», выбираем правило «Использовать формулу для определения форматируемых ячеек», вписываем формулу =СЧЁТЕСЛИ($C$1:$C$7;C1)=0 и выбираем формат условного форматирования.

    Формула проверяет значение из определенной ячейки C1 и сравнивает ее с указанным диапазоном $C$1:$C$7 из второго столбика. Копируем правило на весь диапазон, в котором мы сравниваем таблицы и получаем выделенные цветом ячейки значения, которых не повторяется.

    Как сравнить две таблицы в Excel с помощью функции ВПР

    В этом варианте мы будем использовать функцию ВПР, которая позволит нам сравнить две таблицы на предмет совпадений. Для сравнения двух столбиков, введите формулу =ВПР(C2;$D$2:$D$7;1;0) и скопируйте ее на весь сравниваемый диапазон. Эта формула последовательно начинает проверять есть ли повторы значения из столбика А в столбике В, ну и соответственно возвращает значение элемента, если оно было там найдено если же значение не найдено получаем ошибку #Н/Д.

    Интерпретация результатов

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

    Если содержимое не умещается в ячейках, выберите команду Resize Cells to Fit

    (Размер ячеек по размеру данных).

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

    Как сравнить две таблицы в Excel функции ЕСЛИ

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

    Для примера, сравним два столбика А и В на рабочем листе, в соседней колонке С введем формулу: =ЕСЛИ(ЕОШИБКА(ПОИСКПОЗ(C2;$E$2:$E$7;0));»»;C2) и копируем ее на весь вычисляемый диапазон. Эта формула позволяет просматривать последовательно есть ли определенные элементы из указанного столбика А в столбике В и возвращает значение, в случае если оно было найдено в столбике В.

    Сравнение файлов Excel на глаз

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

    или совершенно разные файлы.

    Если из одной и той же книги получено более одного листа, ее необходимо отделить заранее. Для этого перейдите к Вид> Окно> Новое окно.

    как сравнить два листа Excel рядом

    Это не разделит отдельные листы навсегда, просто откроет новый экземпляр вашего документа.

    Далее идите к Посмотреть вкладка и найти Посмотреть бок о бок в Окно раздел.

    как сравнить два листа Excel рядом

    В этом меню будут перечислены все таблицы, которые в данный момент открыты. Если у вас есть только два открытых, они будут выбраны автоматически.

    как сравнить два листа Excel рядом

    Сделайте свой выбор и нажмите Хорошо. Вы увидите, что обе таблицы появятся на экране.

    как сравнить два листа Excel рядом

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

    Сравнение значений двух таблиц на 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 в ячейках с одинаковым адресом.

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

     

    Ответить

    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

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

    Поделиться:

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

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

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

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

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

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