Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Закраска строк в зависимости от значений столбца А - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Закраска строк в зависимости от значений столбца А (Макросы/Sub)
Закраска строк в зависимости от значений столбца А
ОлеггелО Дата: Понедельник, 17.08.2015, 09:03 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 20 ±
Замечаний: 0% ±

Здравствуйте! Кажется алгоритм представляю, но не могу реализовать уже целый день! На листе в столбике А список значений (повторяться могут любое количество раз, но только подряд) нужно одну группу значений закрасить в , допустим, ЦВЕТ №1, а вторую группу в ЦВЕТ №2, следующую снова в ЦВЕТ №1 и т.д. В файле-примере на листе "Пример" показано как должно быть.
К сообщению приложен файл: 7654324.xlsm (9.6 Kb)


Сообщение отредактировал ОлеггелО - Понедельник, 17.08.2015, 09:04
 
Ответить
СообщениеЗдравствуйте! Кажется алгоритм представляю, но не могу реализовать уже целый день! На листе в столбике А список значений (повторяться могут любое количество раз, но только подряд) нужно одну группу значений закрасить в , допустим, ЦВЕТ №1, а вторую группу в ЦВЕТ №2, следующую снова в ЦВЕТ №1 и т.д. В файле-примере на листе "Пример" показано как должно быть.

Автор - ОлеггелО
Дата добавления - 17.08.2015 в 09:03
_Boroda_ Дата: Понедельник, 17.08.2015, 09:36 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Условным форматированием пойдет?
Код
=ЕНЕЧЁТ(СУММ(-($A5:$A$5<>$A$4:$A4)))
К сообщению приложен файл: 7654324_1.xlsm (9.8 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеУсловным форматированием пойдет?
Код
=ЕНЕЧЁТ(СУММ(-($A5:$A$5<>$A$4:$A4)))

Автор - _Boroda_
Дата добавления - 17.08.2015 в 09:36
ОлеггелО Дата: Понедельник, 17.08.2015, 09:47 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 20 ±
Замечаний: 0% ±

_Boroda_, такая маленькая табличка только для примера, её размер постоянно изменяется. Если можно применить Ваш вариант для этих условий, покажите, пожалуйста как!
 
Ответить
Сообщение_Boroda_, такая маленькая табличка только для примера, её размер постоянно изменяется. Если можно применить Ваш вариант для этих условий, покажите, пожалуйста как!

Автор - ОлеггелО
Дата добавления - 17.08.2015 в 09:47
_Boroda_ Дата: Понедельник, 17.08.2015, 09:52 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А если просто увеличить диапазон УФ?
Код
=ЕНЕЧЁТ(СУММ(-($A5:$A$5<>$A$4:$A4)))*($A5<>"")
К сообщению приложен файл: 7654324_2.xlsm (9.8 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА если просто увеличить диапазон УФ?
Код
=ЕНЕЧЁТ(СУММ(-($A5:$A$5<>$A$4:$A4)))*($A5<>"")

Автор - _Boroda_
Дата добавления - 17.08.2015 в 09:52
ОлеггелО Дата: Понедельник, 17.08.2015, 10:05 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 20 ±
Замечаний: 0% ±

_Boroda_, при увеличении диапазона, кажется, подойдёт. Только нужен способ, как вставить формулу в макрос (он у меня удаляет всё содержимое листа перед своей работой, удаляется и формула).
 
Ответить
Сообщение_Boroda_, при увеличении диапазона, кажется, подойдёт. Только нужен способ, как вставить формулу в макрос (он у меня удаляет всё содержимое листа перед своей работой, удаляется и формула).

Автор - ОлеггелО
Дата добавления - 17.08.2015 в 10:05
ОлеггелО Дата: Понедельник, 17.08.2015, 13:19 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 20 ±
Замечаний: 0% ±

_Boroda_, я записал макрорекордером, но при записи в нём не прописывается значение для УФ в столбике "Применяется к", соответственно вся запись в макросе действует только для одной ячейки.
К сообщению приложен файл: 8458486.xlsm (16.8 Kb)
 
Ответить
Сообщение_Boroda_, я записал макрорекордером, но при записи в нём не прописывается значение для УФ в столбике "Применяется к", соответственно вся запись в макросе действует только для одной ячейки.

Автор - ОлеггелО
Дата добавления - 17.08.2015 в 13:19
_Boroda_ Дата: Понедельник, 17.08.2015, 15:18 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А если заменить все Селекшены на Range("A5:H22")?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА если заменить все Селекшены на Range("A5:H22")?

Автор - _Boroda_
Дата добавления - 17.08.2015 в 15:18
KSV Дата: Понедельник, 17.08.2015, 16:10 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
[vba]
Код
Sub test()
     With ActiveSheet.UsedRange.FormatConditions
         .Delete
         .Add(xlExpression, , "=ЕЧЁТН(СУММ(-($A5:$A$5<>$A$4:$A4)))*($A5<>"""")").Interior.Color = &HFFCCFF
         .Add(xlExpression, , "=ЕНЕЧЁТ(СУММ(-($A5:$A$5<>$A$4:$A4)))*($A5<>"""")").Interior.Color = &HCCFFFF
     End With
End Sub
[/vba]
и перезайти в файл


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение[vba]
Код
Sub test()
     With ActiveSheet.UsedRange.FormatConditions
         .Delete
         .Add(xlExpression, , "=ЕЧЁТН(СУММ(-($A5:$A$5<>$A$4:$A4)))*($A5<>"""")").Interior.Color = &HFFCCFF
         .Add(xlExpression, , "=ЕНЕЧЁТ(СУММ(-($A5:$A$5<>$A$4:$A4)))*($A5<>"""")").Interior.Color = &HCCFFFF
     End With
End Sub
[/vba]
и перезайти в файл

Автор - KSV
Дата добавления - 17.08.2015 в 16:10
ОлеггелО Дата: Понедельник, 17.08.2015, 16:26 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 20 ±
Замечаний: 0% ±

KSV, красит только в один цвет! :( _Boroda_, попробовал, использовать Range("A5:H22") вместо Select'ов в разных комбинациях, но в результате тоже в один цвет красит. Хотя значение для УФ в столбике "Применяется к" появляется! Что-то неправильно сделал!?
 
Ответить
СообщениеKSV, красит только в один цвет! :( _Boroda_, попробовал, использовать Range("A5:H22") вместо Select'ов в разных комбинациях, но в результате тоже в один цвет красит. Хотя значение для УФ в столбике "Применяется к" появляется! Что-то неправильно сделал!?

Автор - ОлеггелО
Дата добавления - 17.08.2015 в 16:26
RAN Дата: Понедельник, 17.08.2015, 18:05 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Excel 2007?
Тогда запросто.
Там УФ живет по своим правилам.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеExcel 2007?
Тогда запросто.
Там УФ живет по своим правилам.

Автор - RAN
Дата добавления - 17.08.2015 в 18:05
ОлеггелО Дата: Понедельник, 17.08.2015, 18:11 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 20 ±
Замечаний: 0% ±

RAN, нет! Excel 2010. Да и УФ это как вариант, можно же макросом наверняка с каким-то своим алгоритмом, но не могу его реализовать!


Сообщение отредактировал ОлеггелО - Понедельник, 17.08.2015, 18:13
 
Ответить
СообщениеRAN, нет! Excel 2010. Да и УФ это как вариант, можно же макросом наверняка с каким-то своим алгоритмом, но не могу его реализовать!

Автор - ОлеггелО
Дата добавления - 17.08.2015 в 18:11
KSV Дата: Понедельник, 17.08.2015, 19:08 | Сообщение № 12
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
красит только в один цвет!

и перезайти в файл
Закройте файл с сохранением и откройте заново.
можно же макросом наверняка
Конечно, можно, только зачем макросом-то? С УФ у вас все автоматом перекрасится при изменении, а макрос нужно запускать...


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Понедельник, 17.08.2015, 19:13
 
Ответить
Сообщение
красит только в один цвет!

и перезайти в файл
Закройте файл с сохранением и откройте заново.
можно же макросом наверняка
Конечно, можно, только зачем макросом-то? С УФ у вас все автоматом перекрасится при изменении, а макрос нужно запускать...

Автор - KSV
Дата добавления - 17.08.2015 в 19:08
ОлеггелО Дата: Понедельник, 17.08.2015, 19:13 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 20 ±
Замечаний: 0% ±

KSV, перезайти в файл - это значит закрыть его и сохранить, потом открыть снова?! Я так и делал. Или что-то ещё?
 
Ответить
СообщениеKSV, перезайти в файл - это значит закрыть его и сохранить, потом открыть снова?! Я так и делал. Или что-то ещё?

Автор - ОлеггелО
Дата добавления - 17.08.2015 в 19:13
KSV Дата: Понедельник, 17.08.2015, 19:20 | Сообщение № 14
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Я так и делал

тогда сделайте и приложите файл-пример с вашим макросом (или его частью), чтобы воспроизвести вашу ситуацию, т.к. у меня при последующем открытии файла УФ работает как надо (Excel 2013).


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
Я так и делал

тогда сделайте и приложите файл-пример с вашим макросом (или его частью), чтобы воспроизвести вашу ситуацию, т.к. у меня при последующем открытии файла УФ работает как надо (Excel 2013).

Автор - KSV
Дата добавления - 17.08.2015 в 19:20
ОлеггелО Дата: Понедельник, 17.08.2015, 19:23 | Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 20 ±
Замечаний: 0% ±

KSV, вот файл с Вашим макросом.
К сообщению приложен файл: 222.xlsm (13.7 Kb)


Сообщение отредактировал ОлеггелО - Понедельник, 17.08.2015, 19:24
 
Ответить
СообщениеKSV, вот файл с Вашим макросом.

Автор - ОлеггелО
Дата добавления - 17.08.2015 в 19:23
ОлеггелО Дата: Понедельник, 17.08.2015, 19:28 | Сообщение № 16
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 20 ±
Замечаний: 0% ±

KSV, у меня Excel 2010. Может потому и не срабатывает?
 
Ответить
СообщениеKSV, у меня Excel 2010. Может потому и не срабатывает?

Автор - ОлеггелО
Дата добавления - 17.08.2015 в 19:28
nilem Дата: Понедельник, 17.08.2015, 20:27 | Сообщение № 17
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
у меня тоже что-то не получается с УФ
а если в лоб?:
[vba]
Код
Sub ttt()
Dim i&, bu As Boolean
With Range("A6:C" & Cells(Rows.Count, 1).End(xlUp).Row)
      .Interior.Color = xlNone
      For i = 1 To .Rows.Count
          If .Cells(i, 1) <> .Cells(i - 1, 1) Then bu = Not bu
          .Rows(i).Interior.ColorIndex = Choose(bu + 2, 43, 35)
      Next i
End With
End Sub
[/vba]


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Понедельник, 17.08.2015, 20:31
 
Ответить
Сообщениеу меня тоже что-то не получается с УФ
а если в лоб?:
[vba]
Код
Sub ttt()
Dim i&, bu As Boolean
With Range("A6:C" & Cells(Rows.Count, 1).End(xlUp).Row)
      .Interior.Color = xlNone
      For i = 1 To .Rows.Count
          If .Cells(i, 1) <> .Cells(i - 1, 1) Then bu = Not bu
          .Rows(i).Interior.ColorIndex = Choose(bu + 2, 43, 35)
      Next i
End With
End Sub
[/vba]

Автор - nilem
Дата добавления - 17.08.2015 в 20:27
KSV Дата: Понедельник, 17.08.2015, 20:53 | Сообщение № 18
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
ОлеггелО, да, видимо, 2010 понимает не все формулы Александра :)
(в 2013 ваш файл работает)

макросом
(по сути, это код nilem на событии Worksheet_Change(), чтобы перекрашивались строки, при изменении данных в первом столбце) [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Intersect(Target, UsedRange.Columns(1)) Is Nothing Then Exit Sub
     Dim c&, ColorIndex As Boolean, aColors(): aColors = Array(&HFFCCFF, &HCCFFFF)
     With UsedRange
         c = .Columns.Count
         For Each Target In .Columns(1).Cells
             If Target <> Target(0) Then ColorIndex = Not ColorIndex
             Target.Resize(, c).Interior.Color = aColors(-ColorIndex)
         Next
     End With
End Sub
[/vba]
К сообщению приложен файл: 3106440.xlsm (16.4 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Понедельник, 17.08.2015, 21:36
 
Ответить
СообщениеОлеггелО, да, видимо, 2010 понимает не все формулы Александра :)
(в 2013 ваш файл работает)

макросом
(по сути, это код nilem на событии Worksheet_Change(), чтобы перекрашивались строки, при изменении данных в первом столбце) [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Intersect(Target, UsedRange.Columns(1)) Is Nothing Then Exit Sub
     Dim c&, ColorIndex As Boolean, aColors(): aColors = Array(&HFFCCFF, &HCCFFFF)
     With UsedRange
         c = .Columns.Count
         For Each Target In .Columns(1).Cells
             If Target <> Target(0) Then ColorIndex = Not ColorIndex
             Target.Resize(, c).Interior.Color = aColors(-ColorIndex)
         Next
     End With
End Sub
[/vba]

Автор - KSV
Дата добавления - 17.08.2015 в 20:53
ОлеггелО Дата: Вторник, 18.08.2015, 06:16 | Сообщение № 19
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 20 ±
Замечаний: 0% ±

nilem, KSV, спасибо большое! Работает как нужно!
 
Ответить
Сообщениеnilem, KSV, спасибо большое! Работает как нужно!

Автор - ОлеггелО
Дата добавления - 18.08.2015 в 06:16
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Закраска строк в зависимости от значений столбца А (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!