|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
Добрый вечер! Есть книга Excel в нем 2 листа с одинаковым кол-во столбцов и различным кол-вом строк. Нужно из 1 листа по первым 4 столбцам сравнить значения с первыми 4 столбцами 2 листа. Если все значения совпадают то окрасить зеленым цветом строку, иначе закрасить строку красным цветом. Покопался по просторам интернета нашел различные примеры, у меня только получилось найти совпадающие значения и окрасить их в зеленый цвет. Не могу понять как правильно в цикле пройтись по всем ячейкам в строке и отметить их красным цветом при не совпадении. Вот код который у меня сейчас есть. Заранее спасибо! Код: vbnet 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.09.2014, 17:17 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
В задачу не вчитывался детально, есть предположение, что надо ВСЕ покрасить красным, а потом совпадающие перекрасить зеленым Да, и Код: vbnet 1. 2. 3. 4.
легко меняется на Код: vbnet 1.
курите логические выражения ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2014, 17:24 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
Shocker.Pro, Покрасить тоже думал в красный цвет, но тут нужно именно найти и отметить строки. Код: vbnet 1. 2. 3. 4. 5.
Сейчас отмечает последние две строки зеленым, остальные все красные, что не правильно. Тут либо куча условий ставить, либо как то в цикле смещения делать на следующую строку во втором листе при нахождении не совпадающего значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2014, 17:43 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
Vasek11Если все значения совпадают то окрасить зеленым цветом строку, иначе закрасить строку красным цветом.вот изначальное условие, если не зеленый, то красный. Поэтому я не понимаю, что вас не устраивает и зачем какие-то дополнительные условия? а рассуждение "последние две строки" бессмысленны, так как вашего файла у нас нет, выкладывайте файл Желательно выложить изначальный файл, а также раскрашенный так, как вы считаете правильным ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2014, 18:02 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
Shocker.Pro, Приложил файл в нем сейчас на Листе 2 правильное раскрашивание строк. Если очистить стили и выполнить макрос то раскраска будет такова что, 3 строки будут красными и 1 последняя зеленая. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2014, 20:37 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
Потому что вы сравниваете все строки первого листа только с последней строкой второго листа. Ну то есть вы во внутреннем цикле много раз перекрашиваете одну и ту же строку Sh2.Rows(j), пока она не примет конечный цвет соответствующий концу цикла - то есть последней строке. Вам нужно прекращать внутренний цикл, как только найдено соответствие и красить строку в зеленый цвет. Если же соответствие не найдено - красить в красный. (не пишу конкретный код, есть впечатление, что вы хотите разобраться сами) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2014, 21:16 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
Shocker.Pro, не совсем понимаю как правильно из цикла выйти. Может при любом совпадении, переходить на метку проверки полного совпадения строки и красить строку? Код: vbnet 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2014, 22:11 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
Vasek11Может при любом совпадении, переходить на метку проверки полного совпадения строки и красить строку?вообще, переход на метку - это плохой тон программирования, не привыкайте к этому. Для выхода из цикла используйте Exit For. Можно просто ввести индикатор, что условие выполнилось. Если по окончании цикла индикатор не "горит", значит красить красным. У вас же - опять. В каждой итерации вы пытаетесь перекрасить строку. Вам нужно красить строку ПОСЛЕ завершения внутреннего цикла, а не в процессе его выполнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2014, 22:16 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
Vasek11 Код: vbnet 1.
по ходу дела - вот тут вы внезапно выходите их подпрограммы, забыв про ScreenUpdating ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2014, 22:32 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
Shocker.Pro, Так сделал выделяет правильно только зеленым, красным не хочет Код: vbnet 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.09.2014, 23:00 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
потому что после того, как переменная "y" стала 1, она больше никогда не станет 0 и эта, еще раз - вместо goto metka - Exit For ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2014, 23:05 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
Shocker.Pro, Сейчас последняя пустая строка после записей красится красным, так же зелеными верно окрашивает, но есть явные строки без заливки красного цвета. Код: vbnet 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2014, 23:16 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
эхехе......... теперь это ничем не отличается от этого ... индикатор надо сбросить перед началом цикла ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2014, 23:25 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
Shocker.Pro, Без изменений эх.. перед двумя циклами определял. y = 0 и менял значение так для проверки. Код: vbnet 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.09.2014, 23:40 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
Да что ж вы никак не попадете-то? y=0 надо поставить перед началом анализа - то есть перед вторым циклом. Все остальные y=0 не нужны. Теперь поехали дальше - а что нужно покрасить-то? Первый лист или второй? Потому что вы обрабатываете первый лист: Код: vbnet 1.
а, вот красите почему-то второй: Код: vbnet 1.
Либо надо красить первый лист, либо вывернуть цикл наизнанку, то есть проходить по строкам второго листа, сравнивая его с первым, а не наоборот. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2014, 23:52 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
Shocker.Pro, Покрасить нужно второй лист, проверив совпадения с первым листом эту часть тоже менял местами Код: vbnet 1. 2. 3.
пока тоже самое... Код: vbnet 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 00:04 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
Вроде бы заработало Код: vbnet 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 00:07 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
ок ну, до кучи это:Vasek11 Код: vbnet 1. 2. 3. 4. 5. 6.
можно заменить на это: Код: vbnet 1.
а еще лучше - можно сразу цвет задавать: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
ну это уже оптимизации ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 00:10 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
Shocker.Pro, Спасибо Вам большое! Долго и упорно, но сделал) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 00:12 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 00:18 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
Vasek11, Код: vbnet 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 01:07 |
|
Выделение не совпадающих строк в листах Excel
|
|||
---|---|---|---|
#18+
iMrTidy, Не согласен - это сокрытие любых ошибок, все равно что resume next воткнуть. Лучше сделать обертку, которая выключает ScreenUpdating, вызывает основную функцию, включает ScreenUpdating (при необходимости, она же перехватывает исключения и выдает сообщение пользователю, а не так - молча) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2014, 02:00 |
|
|
start [/forum/topic.php?fid=60&fpage=38&tid=2156192]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 147ms |
0 / 0 |