Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Сравнение двух листов Excel.


Автор: Валк 27.7.2006, 15:26
Есть два листа в двух разных книгах (или в одной, не суть). Важно то, что листы имеют связи с другими листами/книгами и формулы в ячейках.
Как я могу сравнить два листа на предмет различия/совпадения в формулах/значениях (если в этой ячейке нет формулы)?  

Автор: Izuver 27.7.2006, 18:52
Можно конечно воспользоваться "=ЕТЕКСТ()" или еще какой проверкой, а так задача как-то непонятна. Конкретней, какие ячейки сравнить-то нужно или их может несколько 

Автор: Валк 28.7.2006, 08:53
Сравнивать надо все ячейки листа, т. е. листы полностью. Т. е. вот у тебя 2 разных файла *.xls, как можно сравнить два листа из этих книг? 

Автор: Izuver 29.7.2006, 14:19
на предмет одинаковости значений всех ячеек? 

Автор: ИгнатьевАлексей 30.7.2006, 20:50
Если тебе известен диапазон ячеек на листах, который подлежит сравнению, то я бы так сделал:
Код

Sub CellsCompare()
 
 Dim currentCell As Range
 Dim allRange As Range
 
 Set allRange = Worksheets("Лист1").Range("A1:D10")
 
 For Each currentCell In allRange
    If currentCell.Value <> Worksheets("Лист2").Range(currentCell.Address).Value Then
        currentCell.Interior.ColorIndex = 3 ' ячейку первого листа выделяем цветомпри несовпадении значений
    End If
 Next

End Sub

Это сравниваем значения. Аналогично другие всевозможные свойства, в твоем случае: 
.Formula
.FormulaLocal
.FormulaArray

А вот если ты не знаешь сколько ячеек надо сравнивать (т.е. работа с документами разной величины) , др. словами, надо сравнить все непустые ячейки, то я и сам присоединяюсь к твоему вопросу!  smile 


 

Автор: Валк 1.8.2006, 12:32
Понимаете, мне надо сравнить содержимое одинаковых ячеек в разных листах (и эти листы в разных книгах). Если это какое-то значение, то надо сравнивать значения, если это формула - надо сравнивать формулы.

Добавлено @ 12:33 
ИгнатьевАлексей
Я попробовал твой макрос, выдаёт ошибку в строке:
If currentCell.Value <> Worksheets("Лист2").Range(currentCell.Address).Value Then

Автор: ИгнатьевАлексей 1.8.2006, 17:58
Какая ошибка?

А лучше локализуй тот оператор, который не проходит. Для этого попробуй разные фрагменты этой строки. 
Например:
Код

Worksheets("Лист2").Activate

узнаешь видит ли лист программа и т.п.

Одним словом, поработай!   smile 

Автор: Валк 22.8.2006, 07:03
Приношу свои извинения, что не отписал о результатах.
Проблема решена, только не кодом VBA. Я просто нашёл автора книг и узнал у него идентичны ли книги.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)