Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2010, 07:32   #1
IEEE
Новичок
Джуниор
 
Регистрация: 03.03.2010
Сообщений: 3
По умолчанию Сравнение двух файлов Excel (поячеечно) для выявления отличий

Здравствуйте, уважаемые гуру!
Есть такая интересная задача - сравнить два файла Excel.
Нужно, чтобы макрос спрашивал с какой строки сравнивать, так как до шапки может идти ненужный текст. И несовпадающие (соответствующие!!!) ячейки закрасить в какой-нить цвет!

Всем буду очень признателен за ответ!



--------- примечание модератора - вдруг кому пригодится --------------
Цитата:
Надстройка LOOKUP предназначена для сравнения и подстановки значений в таблицах Excel.

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


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

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

Вложения
Тип файла: rar сми.rar (7.4 Кб, 318 просмотров)

Последний раз редактировалось EducatedFool; 30.09.2013 в 09:36.
IEEE вне форума Ответить с цитированием
Старый 04.03.2010, 14:52   #2
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Это не сложно!
Но если Вы заметили, в Ваших двух файлах таблицы начинаются со 2-ой строки и с 4-ой. Это надо учитывать?
Искать несоответствие надо только в области таблиц?

Ладно, неважно.
Вот пример:
Код:
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)
    
    Windows(ThisWorkbook.Name).Activate: ActiveSheet.Unprotect
    
    numRow = InputBox("Укажите номер строки, с которой необходимо начать сравнение:", "Номер строки")
    numCol = Cells.SpecialCells(xlLastCell).Column - 1
    
    For i = numRow To Cells(Rows.Count, 1).End(xlUp).Row
        For y = 1 To numCol
            If Cells(i, y).Value <> wB.Sheets("Лист1").Cells(i, y) Then
                wB.Sheets("Лист1").Cells(i, y).Interior.Color = 255
            End If
        Next
    Next
    ActiveSheet.Protect: Application.ScreenUpdating = True
End Sub
Но есть одно условие, что таблицы в обоих файлах начинаются с одинаковой строки.
Вложения
Тип файла: zip сми.zip (22.8 Кб, 275 просмотров)

Последний раз редактировалось Maxx; 04.03.2010 в 17:55.
Maxx вне форума Ответить с цитированием
Старый 05.03.2010, 07:05   #3
IEEE
Новичок
Джуниор
 
Регистрация: 03.03.2010
Сообщений: 3
По умолчанию

to MAXX Спасибо большое за ответ!)
Вы мне очень помогли!!!)))
Я подправил макрос под свою задачу и вот что получилось:

Sub CompareBooks()
Dim myName As String, wB As Workbook
With Application.FileDialog(msoFileDialo gFilePicker)
.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(msoFileDialo gFilePicker)
.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).Colu mn - 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
Вложения
Тип файла: rar Compare.rar (12.2 Кб, 296 просмотров)

Последний раз редактировалось IEEE; 05.03.2010 в 09:33.
IEEE вне форума Ответить с цитированием
Старый 05.03.2010, 09:40   #4
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Вот:
Код:
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)
    st2 = Cells.SpecialCells(xlCellTypeConstants).Row
    
    Windows(ThisWorkbook.Name).Activate: ActiveSheet.Unprotect
    st1 = Cells.SpecialCells(xlCellTypeConstants).Row
    offS = Abs(st1 - st2)
    
    numRow = InputBox("Укажите номер строки, с которой необходимо начать сраснение:", "Номер строки")
    numCol = Cells.SpecialCells(xlLastCell).Column - 1
    
    For i = numRow To Cells(Rows.Count, 1).End(xlUp).Row
        For y = 1 To numCol
            If Cells(i, y).Value <> wB.Sheets("Лист1").Cells(i, y).Offset(offS) Then
                wB.Sheets("Лист1").Cells(i, y).Offset(offS).Interior.Color = 255
            End If
        Next
    Next
    ActiveSheet.Protect: Application.ScreenUpdating = True
End Sub
Вложения
Тип файла: zip сми.zip (23.1 Кб, 358 просмотров)
Maxx вне форума Ответить с цитированием
Старый 05.03.2010, 10:31   #5
IEEE
Новичок
Джуниор
 
Регистрация: 03.03.2010
Сообщений: 3
По умолчанию

to MAXX Спасибо большое!!! Вы мне очень помогли!!!
Да с помощью функции abs все выглядит красивее)))
IEEE вне форума Ответить с цитированием
Старый 06.04.2010, 00:10   #6
star1444
Новичок
Джуниор
 
Регистрация: 05.04.2010
Сообщений: 1
По умолчанию Та же проблема((((

Я вот прочитал ваш форум, вроде бы все легко и понятно, но у меня что не получается, постоянно выдает ошибку, хотя строки и столбцы выставил соответсвенно, не могли бы вы мне помочь?? за ранее огромное спасибо
Вложения
Тип файла: rar вента 10 акт(сравнения ).rar (39.6 Кб, 81 просмотров)

Последний раз редактировалось star1444; 06.04.2010 в 00:16.
star1444 вне форума Ответить с цитированием
Старый 06.04.2010, 13:35   #7
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Цитата:
у меня что не получается
Что не получается?
Цитата:
постоянно выдает ошибку
Какую?
Цитата:
не могли бы вы мне помочь
А в чем собственно задача? Что сравнивать-то надо? У IEEE были одинаковые акты, а Вы выложили два файла АБСОЛЮТНО разные.
Maxx вне форума Ответить с цитированием
Старый 20.04.2010, 19:12   #8
Елена20.12.1987
Новичок
Джуниор
 
Регистрация: 20.04.2010
Сообщений: 2
По умолчанию А как сравнить такие 2 а файла?

Они почти одинаковые.
Вложения
Тип файла: rar протоколы.rar (214.1 Кб, 99 просмотров)
Елена20.12.1987 вне форума Ответить с цитированием
Старый 21.04.2010, 15:45   #9
FIGTER
Новичок
Джуниор
 
Регистрация: 14.04.2010
Сообщений: 2
По умолчанию

Всем добрый день!
Подскажите макрос для подсвечивания совпадений в столбце А по
жестко определенному списку номеров.
Например, этот список от 1 до 10, следовательно если в столбце А книги есть совпадения номеров от 1 до 10, эти номера должны подсветиться цветом.
И желательно, чтоб выполнение макроса распрастронялось только на выделенные строки в книге до его выполнения.
Т. е. выделяю диапозон строк нужный мне, нажимаю выполнить макрос и в этом диапазоне подсвечиваются все совпадения заложенные в списке макроса. Заранее всем спасибо.
FIGTER вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сверить между собой данные двух файлов excel? Vadim_abs Microsoft Office Excel 8 10.11.2009 13:04
макрос для склеивание двух текстовых файлов zenner Microsoft Office Word 1 09.10.2009 14:16
сравнение двух фаилов al508 Microsoft Office Excel 4 24.06.2009 07:55
сравнение данных в двух столбцах в Excel 2003 grinders Microsoft Office Excel 4 25.11.2008 16:58
Сравнение данных из двух книг Excel 2003 ast1r Microsoft Office Excel 2 24.11.2008 21:39