Страницы: 1
RSS
Сравнить значение соседних ячеек и при несовпадении менять цвет, макрос
 
Мне поставили такую задачу
1.На первом листе таблица с данными в 2-х колонках.
2.На втором листе настройка и кнопка, по которой должен запуститься метод сортировки.
3.Настройка состоит из 2-х ячеек - одна указывает на первую ячейку в первой колонке таблицы, другая - на первую ячейку во второй колонке таблицы. Таким образом, таблица для сортировки может располагаться с любом месте листа, но с помощью настройки мы всегда сможем определить место ее расположения.
4. Необходимо написать функцию, которая отсортирует данные в каждой колонке исходной таблицы и сравнит значения соседних ячеек. При несовпадении значений - ячейки должны быть подсвечены любым цветом.
 
отсортирует как? подсветить можно условным форматированием..
Живи и дай жить..
 
Ну то-есть если в первой колонке Данные 1 а во второй Данные 2 то макрос должен выдать что они равны а если нет то должно выдать что они не равны и поменять цвет..вроде так
 
дело ясное, что дело темное :(
Живи и дай жить..
 
Слэн, ну ведь понятно все: Данные1 = Данные2. Значит не красим. А вот если не равны - красим...Только вот неясно, что мешает все же использовать условное форматирование с формулой:
=A1<>B1

Основные понятия условного форматирования и как его создать
Сборник формул для условного форматирования
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, только там Данные1 = Данные1 не красится а если там Данные14 = Данные141 значит они не равны и красятся и по сути нужно написать Код что бы он сам сравнивал всю таблицу (на листе 2 есть Кнопка)
 
Зачем нуже именно макрос с этим справляется УФ как писалThe_Prist,
Лень двигатель прогресса, доказано!!!
 
Сергей, Задание в том что бы написать именно макрос для автоматического сравнения таблицы  
 
Переместила кнопку на активный лист, так удобнее.
Если нужно обязательно, чтоб кнопка была на Листе2 вот код:
Код
Sub DiffsColor()
'допускаем наличие пустых ячеек в середине  и конце диапазонов

'x = адрес верхней ячейки первого сравниваемого диапазона = значению в ячейке B2 на Лист2
'y = адрес верхней ячейки второго сравниваемого диапазона = значению в ячейке B3 на Лист2

x = ThisWorkbook.Sheets("Лист2").Range("B2")
y = ThisWorkbook.Sheets("Лист2").Range("B3")

xCol = Worksheets("Лист1").Range(x).Column 'колонка первого диапазона
xRow = Worksheets("Лист1").Range(x).Row 'строка начала первого диапазона
yCol = Worksheets("Лист1").Range(y).Column 'колонка второго диапазона
yRow = Worksheets("Лист1").Range(y).Row 'строка начала второго диапазона


xLastRow = Worksheets("Лист1").Cells(Rows.Count, xCol).End(xlUp).Row 'последняя строка первого диапазона
yLastRow = Worksheets("Лист1").Cells(Rows.Count, yCol).End(xlUp).Row 'последняя строка второго диапазона

MaxLastRow = Application.WorksheetFunction.Max(xLastRow - xRow + 1, yLastRow - yRow + 1)


Set lastcell = Worksheets("Лист1").Cells(MaxLastRow + 1, xCol)

Dim c As Range
'прогоняем сравнение от начальной заданной ячейки x до последней ячейки в этом столбце
For Each c In Worksheets("Лист1").Range(x, lastcell)
    If c.Value <> Worksheets("Лист1").Cells(yRow, yCol) Then
    c.Interior.ColorIndex = 42
    Worksheets("Лист1").Cells(yRow, yCol).Interior.ColorIndex = 42
    End If
    yRow = yRow + 1
Next c

End Sub

Когда перемещаете диапазоны, не забывайте на Листе2 задавать новые адреса верхних углов перемещенных диапазонов
Изменено: anyarceva - 03.03.2015 17:28:27
 
У меня аналогичная задача (сравнение таблиц и выделение разницы), но я хотел-бы обойтись без макроса. Имеются 2 почти одинаковых списка. Первый более полный. Во втором отсуствуют 6 строк (песен, что  в первом). Нужно сравнить 2 списка (по всем колонкам А-К, совпадение идентичных ячеек должно быть 100%-ным),  недостающие во  2-м списке строки выделить в 1-м (более полном) списке и отобразить в отдельном окне (можно и в более отдаленных колонках того же первого списка). У меня Эксель версии 2003 (я к нему привык).
Страницы: 1
Наверх