Страницы: 1
RSS
Автоматическая прорисовка границ и выделение цветом в новом диапазоне ячеек
 
Добрый вечер.
Ситуация следующая:
По формулам предварительно определяются размеры массива: кол-во строк, кол-во столбцов.
Скажем 20х25
Нечетные и четные строки имеют свои правила для выделения ячеек.
Выделение: группами по указанному количеству ячеек.
Например:
НЕЧЕТ: 3+2х8+6
ЧЕТ: 6+2х8+3
То есть нечетную строку из 25 ячеек (столбцов) надо разбить на группы ячеек: 3 + 8 + 8 + 6
Каждую группу ячеек выделить жирной границей и в идеале своим цветом.

Предварительно максимальные размеры такого массива = 100 строк * 40 столбцов
По финалу весь этот массив надо распечатать с учетом заголовка (шапки) документа...

Во вложении пример, как это в идеале должно выглядеть после такого автоматического форматирования самого массива.

Как-то так...
Надеюсь я не очень многого хочу :)
Направьте, подскажите, посоветуйте, помогите!

Заранее признателен.

"Моя благодарность не будет знать границ в пределах разумного". М.Жванецкий
Изменено: Ostendo - 01.03.2019 22:57:50
 
=И(B$7<=$C$3;$B8<=$C$2;C$7<=ВПР(-ОСТАТ($B8;2)+2;$AP$4:$BV$5;6);C$7>ВПР(-ОСТАТ($B8;2)+2;$AP$4:$BV$5;5))
добавлять новые правила, изменяя это правило для всего диапазона с увеличением красных чисел на единицу
группы одинаковые и жирные границы не стал делать, есть же цвет
 
Как вариант, но только с учетом того что не указывать диапазоны в виде "2x8", а указывать в фактическом "8+8".
Код
Sub t()
Application.ScreenUpdating = False
a = Cells(7, 3).End(xlDown).Row - 6
m = ActiveSheet.UsedRange.Columns.Count
    For i = 0 To a - 1
        x = Cells(i + 7, 3)
        y = Mid(x, InStr(x, ":") + 2)
        arr = Split(y, "+")
        s = 11 + i
        o = 5
            For u = 0 To UBound(arr)
                r = Int((255 * Rnd) + 1)
                g = Int((255 * Rnd) + 1)
                b = Int((255 * Rnd) + 1)
                Range(Cells(s, o), Cells(s, --arr(u) + o - 1)).Select
                Selection.Interior.Color = RGB(r, g, b)
                Selection.Borders(xlDiagonalDown).LineStyle = xlNone
                Selection.Borders(xlDiagonalUp).LineStyle = xlNone
                    With Selection.Borders(xlEdgeLeft)
                        .LineStyle = xlContinuous
                        .ColorIndex = 0
                        .TintAndShade = 0
                        .Weight = xlMedium
                    End With
                    With Selection.Borders(xlEdgeTop)
                        .LineStyle = xlContinuous
                        .ColorIndex = 0
                        .TintAndShade = 0
                        .Weight = xlMedium
                    End With
                    With Selection.Borders(xlEdgeBottom)
                        .LineStyle = xlContinuous
                        .ColorIndex = 0
                        .TintAndShade = 0
                        .Weight = xlMedium
                    End With
                    With Selection.Borders(xlEdgeRight)
                        .LineStyle = xlContinuous
                        .ColorIndex = 0
                        .TintAndShade = 0
                        .Weight = xlMedium
                    End With
                    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
                        o = o + arr(u)
            Next u
    Next i
Application.ScreenUpdating = True
End Sub
 
dude,  
Спасибо огромное! Помогли!!!!
Я уж думал, тут без макросов никак
собственно с ними в предложенном варианте GRIM, не разобрался... каждый раз новый цвет...
не хватило меня осознать... подскажите... просто не разобрался..

dude,  
подскажите все-таки с границами - выделить жирным внешние границы одной группы ячеек.
Думаю, что возможны недоразумения с цветопередачей принтера, а важно выделить что одна группа закончилась (8 каналов) и началась новая (пусть те же 8 каналов)...

И еще...
при расчете последовательности групп я сейчас могу посчитать, что скажем этих косточек по 8 будет 3 штуки - вот это 3х8...
Как мне разложить эти 3х8 на 8 - 8 - 8.... через счет значений?!... умничаю конечно...
направьте!
 
>недоразумения с цветопередачей принтера
можно найти цвета без недоразумений :)

для 3*8 вводить 8 в 3 последовательные ячейки
сколько всего может быть групп?
 
ну в прыжке групп 10...
в одном ряду
Изменено: Ostendo - 02.03.2019 21:37:03
 
десять групп
при ярких цветах граница не актуальна
Изменено: dude - 02.03.2019 22:06:09
 
Все получилось, спасибо огромное.
Разложил в ряд  последовательность групп ячеек : 3 8 8 8 5 ...
В общем получилось!
Сделал 2 чередующихся цвета (чет и нечет) на все 10 - групп. Буду ловить контраст по этим двум при печати.

Но столкнулся дальше с печатью...
Ведь по одной схеме раскладке надо напечатать лист 100х40, а по другой 30х12...
А масштаб печати по умолчанию стоит один и тот же - на 100 рядов и 40 столбцов... Там ведь есть хоть и скрытые, но формулы и УФ...
И получается, что при печати раскладка 30х12 - мелкая в углу листа...

Чтобы выровнять масштаб печати сейчас вижу только вручную выделять видимые ячейки и печатать "выделенный фрагмент".
Есть такая возможность по умолчанию выводить на печать, только "не пустые" ячейки...
хоть там всяк ячейки не пустые - там ведь формулы...
Может как-то на макрос какой посадить такую печать???

Или это такая карма будет - вручную выделять фрагмент и печатать?
Подскажите ...  
 
Вопрос не по теме
Страницы: 1
Наверх