Всем привет, очень нужна помощь. Файл в вложении Суть задания: необходимо по столбцу 2 сделать выделение цветом первой половины каждой группы К примеру, у нас есть 8 строк с значением Аперитив, первые 4 строки необходимо закрасить каким либо цветом, далее есть 95 строк с значением вино, первые 48 значений необходимо выделить таким же цветом. И так по всему массиву Вообще нет идей как можно реализовать это
i_gave_up написал: Вообще нет идей как можно реализовать это
С товарищем по форуму согласен, поэтому объясню концептуально: 1) Собираешь все данные 2) Сортируешь их по 2-му столбцу 3) Идя по данным, определяешь первый и последний элемент каждой группы (условие el(i)=el(i+1) ) 4) Вычитаешь из конечного индекса группы начальный 5) Делишь это число на 2 с округлением в большую сторону 6) С первого индекса группы закрашиваешь любым цветом это кол-во элементов
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
Вот пример для категории "Аперитив", этот вариант очень медленный. дальше модифицируйте В ячейку H1 напишите Аперитив и закрасьте ячейку в любой цвет
Код
Sub test()
Dim last As Long
Dim a, b As Integer
a = 0
b = 1
last = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To last
If Cells(i, 2) = Cells(b, 8) Then
a = a + 1
End If
Next
a = a / 2
Range(Cells(2, 2), Cells(a + 1, 2)).Interior.Color = Cells(b, 8).Interior.Color
End Sub
Wiss написал: Вариант с условным форматированием. Можно даже не сортировать.
Круто, спасибо, так и хотел сделать с условным форматированием, самый простой вариант, но недокрутил формулу) Всем остальным тоже большое спасибо за отклик)