Допустим есть бо-о-ольшая таблица с данными. В одном столбце этой таблицы записаны названия артикулов. В остальных столбцах вся остальная информация - операции, дата/время, сумма товара и т.п. Операций по одному артикулу может быть несколько и анализировать данные в разрезе одного артикула в такой таблице не очень удобно, т.к велика вероятность ошибки. Можно при помощи кодов и надстроек разбить данные на разные листы(к примеру, это умеет MulTEx - Разнесение данных), а можно изменить цвет ячеек так, чтобы один артикул был окрашен в один цвет, другой в другой. И так по очереди - то один, то другой. Зебра, одним словом:
Чтобы сделать такую закраску необходимо прибегнуть к помощи макросов(Что такое макрос и где его искать?): добавить в книгу стандартный модуль и вставить в него следующий код:
Sub Zebra() Dim li As Long, lColor As Long, lColNum As Long, lColEND As Long lColor = xlNone On Error Resume Next lColNum = InputBox("Укажите номер столбца со значениями", "www.excel-vba.ru", 1) If lColNum = 0 Then Exit Sub If Not IsNumeric(lColNum) Then Exit Sub On Error GoTo 0 lColEND = Cells(1, Columns.Count).End(xlToLeft).Column Application.ScreenUpdating = False 'просматриваем строки со второй и до последней заполненной в указанном столбце For li = 2 To Cells(Rows.Count, lColNum).End(xlUp).Row If Cells(li, lColNum) <> Cells(li - 1, lColNum) Then If lColor = xlNone Then lColor = vbGreen Else lColor = xlNone End If Range(Cells(li, 1), Cells(li, lColEND)).Interior.Color = lColor Next li Application.ScreenUpdating = True End Sub |
После этого останется перейти на тот лист, на котором необходимо окрасить ячейки, нажать Alt+F8 выбрать макрос Zebra и нажать Выполнить.
Приведенный код просматривает строки от 2-ой и до последней заполненной в указанном столбце.
на нужную:
Последнюю заполненную ячейку в столбце код определяет сам.
Так же,
на такую:
Sub GetCellInteriorColor() MsgBox "Код цвета выделенной ячейки: " & ActiveCell.Interior.Color, vbInformation, "www.excel-vba.ru" End Sub |
И тогда останется запомнить/записать этот код и вставить в вышеприведенный вместо
Tips_Macro_Zebra.xls (37,0 КиБ, 3 267 скачиваний)
Так же см.:
Выделение строк цветом через одну
Координатное выделение строки и столбца
Добрый день. Полезный макрос. Но он правильно работает есль диапазон данных начинается с первой строки первого столбца. А если, к примеру, с 3-ей, с 5-ой ....... Интересно как выглядел бы скрипт если бы "зебре" "скармливать" выделенный диапазон?
В этой строке
For li = 2 To Cells(Rows.Count, lColNum).End(xlUp).Row
меняете 2 на нужный номер строки.
Для выделенного диапазона:
For li = Selection.row To Selection.Rows.Count
Могу ошибаться, но для выделенного диапазона, код должен выглядеть как-то так:
Дмитрий, все прекрасно работает. Спасибо!
А можете помочь где и что поправить в коде, чтобы выделялась не вся строка, а только данные в выбранном столбце? То есть зебра должна отработать только в том столбце, который мы назначим.
Татьяна, для этого надо эту строку:
Range(Cells(li, 1), Cells(li, lColEND)).Interior.Color = lColor
Cells(li, lColNum).Interior.Color = lColor
записать так:
Супер! Спасибо!
Теперь экспериментирую с цветами, все очень ярко выходит. Как то можно в код записать цвет зебры, например, светло-серый?
Татьяна, добавил в конце статьи небольшую инструкцию на этот счет.
Дмитрий, все работает корректно. Спасибо огромное за помощь!
А еще надо в скрипте менять?
В смысле кроме этого, надо ли что-то еще менять?
Нет. А вообще для того, чтобы понять нужно ли что-то еще менять, можно просто заменить указанное, попробовать запустить код и посмотреть результат.
Дмитрий спасибо за сайт. Много у Вас полезного познала. А вот такая зебра не
проще?
magrifa, может и проще, но такая зебра:
1. Будет работать только в версиях Excel, старше 2003.
2. Закрашивает ячейки через одну, а не как описано в статье(в статье код отделяет цветом различие значений в строках). К тому же то, что Вы описали кодом можно сделать при помощи УФ. На сайте есть статья, описывающая как это можно сделать.
не сработал пример, почему?
я что то не так сделала?
Просто скопировала и запустила.
Что не так то?
Жанар, а Вы сами как думаете, можно Вам помочь? Я скачал пример, запустил - работает. В чем проблема у Вас можно только гадать(неверно указан столбец, отключены макросы, нет различных данных в столбце и т.д.)