Макрос для сравнения двух файлов 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
  • макросы

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

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

Таких действий множество. Давайте рассмотрим некоторые из них.

Содержание

  1. С какой целью проводится сравнение файлов Excel
  2. Все способы сравнения 2 таблиц в Excel
  3. Формула равенства и проверка на ложь-истину
  4. Выделение различающихся значений
  5. Сравнение 2 таблиц при помощи условного форматирования
  6. Функция СЧЁТЕСЛИ + правила для сравнения таблиц
  7. Функция ВПР для сравнения 2 таблиц
  8. Функция ЕСЛИ
  9. Макрос VBA
  10. Как провести сравнение файлов в Эксель
  11. Условное форматирование для сравнения 2 файлов Эксель
  12. Сравнение данных в Эксель на разных листах
  13. Как сравнить 2 листа в таблице Эксель
  14. Средство сравнения электронных таблиц
  15. Как интерпретировать результаты сравнения

С какой целью проводится сравнение файлов Excel

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

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

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

Все способы сравнения 2 таблиц в Excel

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

Формула равенства и проверка на ложь-истину

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

Теперь разница видна невооруженным глазом.

Сравнение 2 файлов в Excel на предмет различий

1

Выделение различающихся значений

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

В появившемся меню необходимо кликнуть по меню «Выделить группу ячеек…». Далее откроется окошко, в котором нам необходимо в качестве критерия выбрать отличия по строкам.

Сравнение 2 файлов в Excel на предмет различий

2
Сравнение 2 файлов в Excel на предмет различий
3

Сравнение 2 таблиц при помощи условного форматирования

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

Сравнение 2 файлов в Excel на предмет различий

4

Далее из перечня критериев нам нужно выбрать тот, где написано, что нужно использовать формулу для определения ячеек, которые будут отформатированы особенным образом. В описании правила нужно задать формулу. В нашем случае это =$C2<>$E2, после чего подтверждаем свои действия нажатием кнопки «Формат». После этого задаем внешний вид ячейки и смотрим, нравится ли он, через специальное мини-окошко с образцом. 

Если все устраивает, нажимаем кнопку «ОК» и подтверждаем действия.

Сравнение 2 файлов в Excel на предмет различий

5

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

Функция СЧЁТЕСЛИ + правила для сравнения таблиц

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

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

В этом примере формула такая, как показана на этом скриншоте.

Сравнение 2 файлов в Excel на предмет различий

6

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

Функция ВПР для сравнения 2 таблиц

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

Эта функция перебирает каждое значение и смотрит, нет ли повторов из первой колонки во второй. Ну и после выполнения всех операций записывается в ячейке это значение. Если его там нет, то получаем ошибку #Н/Д, чего вполне достаточно для того, чтобы автоматически понимать, какое значение будет не соответствовать.

Сравнение 2 файлов в Excel на предмет различий

7

Функция ЕСЛИ

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

Давайте приведем небольшой пример. У нас есть два столбца – A и B. Нам нужно сравнить часть информации в них между собой. Для этого нам нужно подготовить еще один сервисный столбец C, в котором записывается следующая формула.

Сравнение 2 файлов в Excel на предмет различий

8

С помощью формулы, которая использует функции ЕСЛИ, ЕСЛИОШИБКА и ПОИСКПОЗ можно перебрать все нужные элементы колонки А, а потом в колонке B. Если оно было обнаружено в колонке B и A, то оно возвращается в соответствующую ячейку.

Макрос VBA

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

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

Как провести сравнение файлов в Эксель

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

  1. Откройте те файлы, сравнение которых требуется.
  2. Откройте вкладку «Вид» – «Окно» – «Вид рядом».

После этого два файла будут открыты одном документе Excel.

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

Условное форматирование для сравнения 2 файлов Эксель

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

Сперва нам необходимо перенести сравниваемые листы в один документ. 

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

Сравнение 2 файлов в Excel на предмет различий

9

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

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

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

Сравнение данных в Эксель на разных листах

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

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

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

Как сравнить 2 листа в таблице Эксель

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

Так можно осуществить сравнение строк по двум критериям – фамилия и заработная плата. Ну или любым другим, определенным пользователем. Для всех совпадений, которые удалось найти, записывается в ячейке, в которую вводится формула, число. Для Excel такое значение всегда будет истинным. Поэтому для того, чтобы форматирование применялось по отношению к тем ячейкам, которые были различны, необходимо это значение заменить на ЛОЖЬ, воспользовавшись функцией =НЕ().

Средство сравнения электронных таблиц

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

Важно учесть, что это средство доступно лишь для тех пользователей, кто купил офисные пакеты «Профессиональный плюс».

Открыть его можно непосредственно с вкладки «Главная», выбрав пункт «Сравнить файлы».

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

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

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

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

Как интерпретировать результаты сравнения

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

Оцените качество статьи. Нам важно ваше мнение:

 

DemonAMT

Пользователь

Сообщений: 420
Регистрация: 24.01.2020

Добрый день! Есть два файла. В этих двух файлах :

+ В одинаковых файлах. Расположение ячеек и название вкладок одинаковое.

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

Прикрепленные файлы

  • ПРАЙС2.xlsx (95.42 КБ)
  • ПРАЙС1.xlsx (93.92 КБ)

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#2

17.06.2021 10:18:49

Цитата
DemonAMT написал: И разницу каким то образом показать.

Покажите в третьем файле, каким Вы видите результат сравнения.

Цитата
DemonAMT написал: Подскажите каким методом лучше и проще решить данную задачу.

ИМХО, макросом.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Бахтиёр

Пользователь

Сообщений: 1930
Регистрация: 15.01.2016

Excel 365

#3

17.06.2021 10:23:41

Вставьте этот макрос в один из файлов (или в надстройку) и запустите, когда открыты ТОЛЬКО два сравниваемых файла

Код
Sub ddd()
Set dic = CreateObject("Scripting.Dictionary")
If Workbooks.Count <> 2 Then MsgBox "Должны быть открыты только две книги!": Exit Sub
For Each sh In Workbooks(1).Sheets
    r1 = sh.Cells(1).SpecialCells(xlCellTypeLastCell).Row
    r2 = Workbooks(2).Sheets(sh.Name).Cells(1).SpecialCells(xlCellTypeLastCell).Row
    c1 = sh.Cells(1).SpecialCells(xlCellTypeLastCell).Column
    c2 = Workbooks(2).Sheets(sh.Name).Cells(1).SpecialCells(xlCellTypeLastCell).Column
    r = WorksheetFunction.Max(r1, r2)
    c = WorksheetFunction.Max(c1, c2)
    mas1 = sh.Cells(1).Resize(r, c).Value
    mas2 = Workbooks(2).Sheets(sh.Name).Cells(1).Resize(r, c).Value
    If IsArray(mas1) And IsArray(mas2) Then
        For x = 1 To UBound(mas1)
            For y = 1 To UBound(mas1, 2)
                If IsError(mas1(x, y)) Or IsError(mas2(x, y)) Then
                    tmp = dic("Лист: " & Chr(34) & sh.Name & Chr(34) & ", Ячейка: " & Replace(Cells(x, y).Address, "$", "") & " - в ячейке ошибка")
                ElseIf mas1(x, y) <> mas2(x, y) Then tmp = dic("Лист: " & Chr(34) & sh.Name & Chr(34) & ", Ячейка: " & Replace(Cells(x, y).Address, "$", "") & ", Разные значения: " & mas1(x, y) & " и " & mas2(x, y))
                End If
            Next
        Next
    Else
        If IsError(mas1) Or IsError(mas2) Then
            tmp = dic("Лист: " & Chr(34) & sh.Name & Chr(34) & ", Ячейка: A1 - в ячейке ошибка")
            ElseIf mas1 <> mas2 Then tmp = dic("Лист: " & Chr(34) & sh.Name & Chr(34) & ", Ячейка: A1" & ", Разные значения: " & mas1 & " и " & mas2)
        End If
    End If
Next
Workbooks.Add
Cells(1).Resize(dic.Count).Value = WorksheetFunction.Transpose(dic.keys)
End Sub

Изменено: Бахтиёр17.06.2021 11:01:32
(небольшое усовершенствование макроса)

 

DemonAMT

Пользователь

Сообщений: 420
Регистрация: 24.01.2020

#4

17.06.2021 10:31:22

Цитата
JayBhagavan написал:
Покажите в третьем файле, каким Вы видите результат сравнения.

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

Цитата
JayBhagavan написал:
ИМХО, макросом.

Что за «зверь»? Можно образец.

Изменено: DemonAMT17.06.2021 10:36:18

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#5

17.06.2021 10:34:55

DemonAMT, любой так любой. См. предложенный вариант от Бахтиёр.

Цитата
DemonAMT написал: Что за «зверь»?

В гугл.

Цитата
DemonAMT написал: Можно образец.

Образец Вам предоставил Бахтиёр.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

DemonAMT

Пользователь

Сообщений: 420
Регистрация: 24.01.2020

#6

17.06.2021 10:39:16

Цитата
Бахтиёр написал:
Бахтиёр

Спс отличный макрос, но напрягает последующий поиск измененных ячеек и подстановка данных. Возможен ли вариант измененной строки там где есть изменения. Чтоб можно было скопировать измененную строчку и заменить ее через Ctr V Ctr C)

 

Бахтиёр

Пользователь

Сообщений: 1930
Регистрация: 15.01.2016

Excel 365

#7

17.06.2021 10:57:51

Цитата
DemonAMT:  Возможен ли вариант измененной строки там где есть изменения. Чтоб можно было скопировать измененную строчку и заменить ее через Ctr V Ctr C)

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

Код
Sub srav_dvuh_knig()
Set dic = CreateObject("Scripting.Dictionary")
If Workbooks.Count <> 2 Then MsgBox "Должны быть открыты только две книги!": Exit Sub
For Each sh In Workbooks(1).Sheets
    r1 = sh.Cells(1).SpecialCells(xlCellTypeLastCell).Row
    r2 = Workbooks(2).Sheets(sh.Name).Cells(1).SpecialCells(xlCellTypeLastCell).Row
    c1 = sh.Cells(1).SpecialCells(xlCellTypeLastCell).Column
    c2 = Workbooks(2).Sheets(sh.Name).Cells(1).SpecialCells(xlCellTypeLastCell).Column
    rr = WorksheetFunction.max(r1, r2)
    cc = WorksheetFunction.max(c1, c2)
    mas1 = sh.Cells(1).Resize(rr, cc).Value
    mas2 = Workbooks(2).Sheets(sh.Name).Cells(1).Resize(rr, cc).Value
    If IsArray(mas1) And IsArray(mas2) Then
        For x = 1 To UBound(mas1)
            For y = 1 To UBound(mas1, 2)
                If IsError(mas1(x, y)) Or IsError(mas2(x, y)) Then
                    tmp = dic("Лист: " & Chr(34) & sh.Name & Chr(34) & ", Ячейка: " & Replace(Cells(x, y).Address, "$", "") & " - в ячейке ошибка")
                    sh.Cells(x, y).Interior.Color = vbYellow
                    Workbooks(2).Sheets(sh.Name).Cells(x, y).Interior.Color = vbYellow
                ElseIf mas1(x, y) <> mas2(x, y) Then
                    tmp = dic("Лист: " & Chr(34) & sh.Name & Chr(34) & ", Ячейка: " & Replace(Cells(x, y).Address, "$", "") & ", Разные значения: " & mas1(x, y) & " и " & mas2(x, y))
                    sh.Cells(x, y).Interior.Color = vbYellow
                    Workbooks(2).Sheets(sh.Name).Cells(x, y).Interior.Color = vbYellow
                End If
            Next
        Next
    Else
        If IsError(mas1) Or IsError(mas2) Then
            tmp = dic("Лист: " & Chr(34) & sh.Name & Chr(34) & ", Ячейка: A1 - в ячейке ошибка")
            sh.Cells(1).Interior.Color = vbYellow
            Workbooks(2).Sheets(sh.Name).Cells(1).Interior.Color = vbYellow
        ElseIf mas1 <> mas2 Then
            tmp = dic("Лист: " & Chr(34) & sh.Name & Chr(34) & ", Ячейка: A1" & ", Разные значения: " & mas1 & " и " & mas2)
            sh.Cells(1).Interior.Color = vbYellow
            Workbooks(2).Sheets(sh.Name).Cells(1).Interior.Color = vbYellow
        End If
    End If
Next
Workbooks.Add
Cells(1).Resize(dic.Count).Value = WorksheetFunction.Transpose(dic.keys)
End Sub

Изменено: Бахтиёр17.06.2021 11:35:42

 

DemonAMT

Пользователь

Сообщений: 420
Регистрация: 24.01.2020

#9

17.06.2021 12:56:20

Цитата
Бахтиёр написал:
Если что, вот макрос, который кроме того, что делает предыдущий макрос, вдобавок красит различающиеся ячейки на желтый цвет:

Спс большое интересный вариант.

Изменено: DemonAMT17.06.2021 12:57:39

Do NOT loop through all cells!! There is a lot of overhead in communications between worksheets and VBA, for both reading and writing. Looping through all cells will be agonizingly slow. I’m talking hours.

Instead, load an entire sheet at once into a Variant array. In Excel 2003, this takes about 2 seconds (and 250 MB of RAM). Then you can loop through it in no time at all.

In Excel 2007 and later, sheets are about 1000 times larger (1048576 rows × 16384 columns = 17 billion cells, compared to 65536 rows × 256 columns = 17 million in Excel 2003). You will run into an «Out of memory» error if you try to load the whole sheet into a Variant; on my machine I can only load 32 million cells at once. So you have to limit yourself to the range you know has actual data in it, or load the sheet bit by bit, e.g. 30 columns at a time.

Option Explicit

Sub test()

    Dim varSheetA As Variant
    Dim varSheetB As Variant
    Dim strRangeToCheck As String
    Dim iRow As Long
    Dim iCol As Long

    strRangeToCheck = "A1:IV65536"
    ' If you know the data will only be in a smaller range, reduce the size of the ranges above.
    Debug.Print Now
    varSheetA = Worksheets("Sheet1").Range(strRangeToCheck)
    varSheetB = Worksheets("Sheet2").Range(strRangeToCheck) ' or whatever your other sheet is.
    Debug.Print Now

    For iRow = LBound(varSheetA, 1) To UBound(varSheetA, 1)
        For iCol = LBound(varSheetA, 2) To UBound(varSheetA, 2)
            If varSheetA(iRow, iCol) = varSheetB(iRow, iCol) Then
                ' Cells are identical.
                ' Do nothing.
            Else
                ' Cells are different.
                ' Code goes here for whatever it is you want to do.
            End If
        Next iCol
    Next iRow

End Sub

To compare to a sheet in a different workbook, open that workbook and get the sheet as follows:

Set wbkA = Workbooks.Open(filename:="C:MyBook.xls")
Set varSheetA = wbkA.Worksheets("Sheet1") ' or whatever sheet you need

kilmynda

0 / 0 / 0

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

Сообщений: 1

1

25.07.2017, 10:35. Показов 8056. Ответов 2

Метки excel, vba (Все метки)


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

Добрый день, форумчане!

До этого не имел дело с VBA. Начинаю только изучать. Начальство подкинуло такую задачку:
Из определенной программы выгружаются отчеты в Excel. В этих отчетах очень много данных, рассортированных по времени.
Нужно сравнить данные по промежуткам времени. Допустим, если событие в одном отчете произошло в 13:20, а в другом — 13:28, то данные позиции закрашиваются в один цвет.
Помогите пожалуйста!

Нашел только это:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Sub CompareBooks()
Dim myName As String, wB As Workbook
        With Application.FileDialog(msoFileDialogFilePicker)
            .Title = "Выберите ПЕРВЫЙ файл для сравнения"
            .Show
                If .SelectedItems.Count = 0 Then Exit Sub
            myName = .SelectedItems(1)
        End With
    Application.ScreenUpdating = False
    Workbooks.Open Filename:=myName: Set wB = Workbooks(ActiveWorkbook.Name)
    
Dim myName1 As String, wB1 As Workbook
        With Application.FileDialog(msoFileDialogFilePicker)
            .Title = "Выберите ВТОРОЙ файл для сравнения"
            .Show
                If .SelectedItems.Count = 0 Then Exit Sub
            myName1 = .SelectedItems(1)
        End With
    Application.ScreenUpdating = False
    Workbooks.Open Filename:=myName1: Set wB1 = Workbooks(ActiveWorkbook.Name)
    
    Windows(wB1.Name).Activate: ActiveSheet.Unprotect
   
    numRowProv = InputBox("Укажите номер строки, с которой необходимо начать сравнение В ПЕРВОМ файле:", "Номер строки")
    numRow = InputBox("Укажите номер строки, с которой необходимо начать сравнение ВО ВТОРОМ файле:", "Номер строки")
    numCol = Cells.SpecialCells(xlLastCell).Column - 1
    
    If numRow >= numRowProv Then
       Razn = numRow - numRowProv
       For i = numRow To Cells(Rows.Count, 1).End(xlUp).Row
          iprov = i - Razn
          For y = 1 To numCol
            If wB1.Sheets("Лист1").Cells(i, y) <> wB.Sheets("Лист1").Cells(iprov, y) Then
                wB1.Sheets("Лист1").Cells(i, y).Interior.Color = 255
            End If
          Next
        Next
    End If
    
    If numRow < numRowProv Then
      Razn = numRowProv - numRow
      For i = numRow To Cells(Rows.Count, 1).End(xlUp).Row
        iprov = i + Razn
          For y = 1 To numCol
            If wB1.Sheets("Лист1").Cells(i, y) <> wB.Sheets("Лист1").Cells(iprov, y) Then
                wB1.Sheets("Лист1").Cells(i, y).Interior.Color = 255
            End If
          Next
       Next
     End If
       
    ActiveSheet.Protect: Application.ScreenUpdating = True
End Sub



0



Нужно сравнить два файла 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 рядом

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

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

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

Поделиться:

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

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

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

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

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

Sub QWERT()
Dim Q As Object
Dim W As Object
Dim Qb As Workbook
Dim Wb As Workbook
Dim Sq
Dim Sw
Dim Mq()
Dim Mw()
Dim R1, R2
Dim S1, S2, S3
'открываем книги
Set Qb = Workbooks.Open(Filename:="C:Книга2.xls")
Set Wb = Workbooks.Open(Filename:="C:Книга3.xls")
'определяем количество строк
Sq = Qb.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
Sw = Wb.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
'считываем в массив
Mq = Qb.Application.Range(Cells(1, 1), Cells(Sq, 1)).Value
Mw = Wb.Application.Range(Cells(1, 1), Cells(Sw, 1))
'загоняем в словари
Set Q = CreateObject("Scripting.Dictionary")
Set W = CreateObject("Scripting.Dictionary")
 
For R1 = 1 To Sq
If Not Q.Exists(Mq(R1, 1)) Then Q.Add Mq(R1, 1), 1
Next R1
 
For R1 = 1 To Sw
If Not W.Exists(Mw(R1, 1)) Then W.Add Mw(R1, 1), 1
Next R1
 
For R1 = 1 To Sq
        If W.Exists(Mq(R1, 1)) Then 'если есть
        S1 = S1 + 1
        Лист2.Cells(S1, 1) = Mq(R1, 1)
        Else 'в противном случае
        S2 = S2 + 1
        Лист3.Cells(S2, 1) = Mq(R1, 1)
        End If
Next R1
S1 = 0
S2 = 0
For R1 = 1 To Sw
        If Q.Exists(Mw(R1, 1)) Then 'если есть
        S1 = S1 + 1
        Лист4.Cells(S1, 1) = Mw(R1, 1)
        Else 'в противном случае
        S2 = S2 + 1
        Лист5.Cells(S2, 1) = Mw(R1, 1)
        End If
Next R1
 
End Sub

Понравилась статья? Поделить с друзьями:
  • Макрос для сравнения двух столбцов excel
  • Макрос для списка на листе excel
  • Макрос для сохранения файла excel в папку
  • Макрос для сохранения файла excel в pdf
  • Макрос для сохранения одного листа excel