Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
28.03.2024, 15:17:15

Войти
На форуме добавлена возможность подписки на RSS-ленты любого раздела форума. Подписаться можно, нажав на иконку RSS , расположенную левее наименования раздела.
33 233 Сообщений в 5 454 Тем от 6 750 Пользователей
Последний пользователь: Alex1210
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Сравнение двух диапазонов по последней строке
Страниц: [1] 2  Все   Вниз
Печать
Автор Тема: Сравнение двух диапазонов по последней строке  (Прочитано 11171 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Elena666
Пользователь
**

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 87


Просмотр профиля
« : 02.07.2015, 13:14:41 »

Здравствуйте,
Проблема такова. Необходимо сравнить значения в последних строках двух диапазонов, находящихся на одной странице. Количество столбцов и диапазонах одинаковое. Диапазоны пополняющиеся (в первый значения вносятся вручную, во втором через Userform и оба строятся одна под другой). Если значения в ячейках совпадают, тогда совпавшая ячейка закрашивается цветом. Поиски в интернете не принесли результата. Подскажите пожалуйста, реально сделать или нет? Спасибо.
Записан
Юрий М
Глобальный модератор
Ветеран
*****

Репутация: +112/-0
Офлайн Офлайн

Сообщений: 2 077



Просмотр профиля E-mail
« Ответ #1 : 02.07.2015, 14:00:41 »

Нужен Ваш небольшой файл-пример, где следует показать сравниваемые ячейки. И покрасьте в нём вручную совпавшие, чтобы было сразу понятно.
Записан
Elena666
Пользователь
**

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 87


Просмотр профиля
« Ответ #2 : 03.07.2015, 01:59:42 »

Прикладываю пример. Пояснения: то есть если хотя бы одна из ячеек последней строки Диапазона1 не совпадет с хотя бы с одной ячейкой последней строки Диапазона2, тогда несовпавшая ячейка в Диапазоне1 окрашивается. Оба диапазона пополняются записями. Спасибо.
Записан
Elena666
Пользователь
**

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 87


Просмотр профиля
« Ответ #3 : 03.07.2015, 09:15:53 »

Можно ли эту задачу решить через условное форматирование? И если можно, то как? Спасибо
Записан
Юрий М
Глобальный модератор
Ветеран
*****

Репутация: +112/-0
Офлайн Офлайн

Сообщений: 2 077



Просмотр профиля E-mail
« Ответ #4 : 03.07.2015, 11:00:37 »

См. файл.
Записан
Elena666
Пользователь
**

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 87


Просмотр профиля
« Ответ #5 : 04.07.2015, 12:04:12 »

Спасибо огромное, Юрий М!
Форумчане, подскажите, пожалуйста. Пытаюсь сделать следующее: при отличающихся значениях в ячейках последних строк в последний столбец добавить слово "Не верно", при совпадениях каждого значения в ячейках последних строк добавить слово "Верно". То есть "Верно", если значения в каждой ячейке последней строки одного диапазона, равны значениям каждой ячейки второго диапазона. "Не верно" - если хотя бы одна из ячеек последних строк диапазонов не совпадает. Пробую так:
Код: (vb)

Sub Macro2()
Dim LastRow As Long, Rng1 As Range, Rng2 As Range
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Set Rng1 = Лист2.Range(Cells(LastRow, 1), Cells(LastRow, 5))
    LastRow = Cells(Rows.Count, 9).End(xlUp).Row
    Set Rng2 = Лист2.Range(Cells(LastRow, 9), Cells(LastRow, 13))
    For i = 1 To 5
    If Rng1(i) <> Rng2(i) Then Rng1(i).Interior.ColorIndex = 3
    If Rng1(i) <> Rng2(i) Then LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Cells(LastRow, 6).Value = "Не верно"
    If Rng1(i) = Rng2(i) Then LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Cells(LastRow, 6).Value = "Верно"
    Next
End Sub

Слово добавляет, но все время только "Верно", подправьте, пожалуйста. Спасибо.

Записан
sv2015
Пользователь
**

Репутация: +3/-0
Офлайн Офлайн

Сообщений: 84


Просмотр профиля
« Ответ #6 : 04.07.2015, 17:02:48 »

 Elena666,у вас в тексте вашего макроса опечатки,я исправил,высылаю вам исправленный макрос и макрос проба() убирающий вашу красную заливку,чтобы тестировать ваш макрос.
Текст вашего макроса могу доработать,текст не оптимальный,если вы желаете,я хорошо знаю VBA.
С уважением.

 
Код: (vb)
 Sub Macro2()
Dim LastRow As Long, Rng1 As Range, Rng2 As Range
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Set Rng1 = Sheets("Лист2").Range(Cells(LastRow, 1), Cells(LastRow, 4))
    LastRow = Cells(Rows.Count, 9).End(xlUp).Row
    Set Rng2 = Sheets("Лист2").Range(Cells(LastRow, 9), Cells(LastRow, 13))
    For i = 1 To 4
    If Rng1(i) <> Rng2(i) Then
    Rng1(i).Interior.ColorIndex = 3
    End If
    If Rng1(i) <> Rng2(i) Then
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Cells(LastRow, 6).Value = "Не верно"
    End If
    If Rng1(i) = Rng2(i) Then
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Cells(LastRow, 6).Value = "Верно"
    End If
    Next i
End Sub


Код: (vb)
Sub проба()
Range("A12:D12").Interior.Color = xlNone
End Sub
Записан
sv2015
Пользователь
**

Репутация: +3/-0
Офлайн Офлайн

Сообщений: 84


Просмотр профиля
« Ответ #7 : 05.07.2015, 10:29:55 »

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

  
Код: (vb)
Sub baggy777()
  Dim i&, j1&, j2&, m As Byte, r1 As Range, r2 As Range
    j1 = Range("A" & Cells.Rows.Count).End(xlUp).Row
    j2 = Range("I" & Cells.Rows.Count).End(xlUp).Row
    Set r1 = Range("A" & j1 & ":D" & j1)
    Set r2 = Range("I" & j2 & ":L" & j2)
For i = 1 To 4
 If r1.Cells(i) <> r2.Cells(i) Then
      Range("F" & j1) = "Не верно"
      r1.Cells(i).Interior.ColorIndex = 3
      Exit Sub
    End If
Next i
For i = 1 To 4
   If r1.Cells(i) = r2.Cells(i) Then
   m = m + 1
      If m = 4 Then
      Range("F" & j1) = "Верно":
      End If
   End If
 Next i
End Sub


Код: (vb)
Sub проба777()
Dim j1&
j1 = Range("A" & Cells.Rows.Count).End(xlUp).Row
Range("A" & j1 & ":D" & j1).Interior.Color = xlNone
End Sub
« Последнее редактирование: 05.07.2015, 13:47:57 от vikttur » Записан
sv2015
Пользователь
**

Репутация: +3/-0
Офлайн Офлайн

Сообщений: 84


Просмотр профиля
« Ответ #8 : 05.07.2015, 10:48:05 »

 Elena 666, макрос проба777 почему-то скопировался с опечаткой,после нажатия кнопки отправить-вклинился дополнительный текст,
сам по себе этот макрос вспомогательный его текст очевидный,-он убирает красную заливку ячейки,при повторных запусках макроса baggy777,-в случае необходимости.


 
Записан
sv2015
Пользователь
**

Репутация: +3/-0
Офлайн Офлайн

Сообщений: 84


Просмотр профиля
« Ответ #9 : 05.07.2015, 10:55:35 »

Ekena666,в обоих макросах инородное включение от    <img src   до    border="0">:надо удалить.
« Последнее редактирование: 05.07.2015, 10:58:23 от sv2015 » Записан
sv2015
Пользователь
**

Репутация: +3/-0
Офлайн Офлайн

Сообщений: 84


Просмотр профиля
« Ответ #10 : 05.07.2015, 11:19:12 »

Elena666, добавляю файл-пример.
Записан
vikttur
Глобальный модератор
Ветеран
*****

Репутация: +124/-0
Офлайн Офлайн

Сообщений: 1 816



Просмотр профиля
« Ответ #11 : 05.07.2015, 11:24:32 »

sv2015, а еще сообщений 15 не хотите написать? Почему не править свои предыдущие сообщения сразу, если видите несоответствия? Почему не прикрепить пример в первом, а не в четвертом из серии?
Записан
Elena666
Пользователь
**

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 87


Просмотр профиля
« Ответ #12 : 05.07.2015, 12:53:21 »

Спасибо, дело в том, что оно пишет "Не верно" только, если все значения всех ячеек не совпадают с данными последней строки второго диапазона. А мне нужно, что бы если "хотя бы одно значение не совпало" тогда  - "Не верно".
Записан
Serge 007
Постоялец
***

Репутация: +12/-0
Офлайн Офлайн

Сообщений: 110


Просмотр профиля E-mail
« Ответ #13 : 05.07.2015, 13:33:39 »

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

Репутация: +124/-0
Офлайн Офлайн

Сообщений: 1 816



Просмотр профиля
« Ответ #14 : 05.07.2015, 13:38:35 »

Я о том, что можно было СРАЗУ прикрепить файл. Не нужно было бы стрелять очередями сообщений.
Записан
Страниц: [1] 2  Все   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru