powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / формулы в цикле
7 сообщений из 7, страница 1 из 1
формулы в цикле
    #39552461
Dinre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, помогите с выполнением задания, пожалуйста (учусь вообще на экономе, поэтому сложно разбирать всё это). Задача такая: необходимо закрасить в каждом столбце таблицы максимальное и минимальное значение. таблица может быть задана произвольно, т.е. хоть 4 столбца, хоть 10. хоть 6 строк, хоть 100.
Я разобралась, как закрашивать, как посчитать количество столбцов в таблице, как создать цикл. Но не понимаю, как мне так вписать всё это в цикл. То есть, я просто записывала макрос, выполняла действия, останавливала запись и смотрела, что получится. Естественно программа записала столбцы через буквы и все операторы в коде построены на этом, а мне нужно переделать всё на № столбца.
Вот данный код (он конечно не закончен). Вот здесь в формуле =макс($А:$А)=А1 мне нужно заменить A на i.
Код: 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.
Sub Макрос6()
kol_stolb = Cells(1, Columns.Count).End(xlToLeft).Column
For i = 1 To kol_stolb
    Columns(i).Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=МАКС($A:$A)=A1"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 10498160
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
    Columns("A:A").Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=МИН($A:$A)=A1"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 192
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
Next i
End Sub


Модератор: Учимся использовать тэги оформления кода - FAQ
Заранее спасибо за помощь:)
...
Рейтинг: 0 / 0
формулы в цикле
    #39552566
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор! Учимся детектировать институтские задания.
...
Рейтинг: 0 / 0
формулы в цикле
    #39552567
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyМодератор! Учимся детектировать институтские задания.Человек привел свои усилия.
...
Рейтинг: 0 / 0
формулы в цикле
    #39552577
Bobax012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dinre,

В примере ты ищешь последний столбец по 1 строке, однако, по условию, ты не знаешь размера таблицы. Т.е. тебе также нужно узнать последнюю строку и уже двойным циклом For (For i = 1 To kol_stolb и For j = 1 To kol_strok) искать минимальные и максимальные значения в столбцах. У меня такая идея.
...
Рейтинг: 0 / 0
формулы в цикле
    #39552616
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dinre,
на каждый столбец не нужно создавать свое правило. Можно использовать относительную ссылку, тогда формула работает для всех столбцов:
Код: plaintext
=МАКС(A:A)=A1

Но если ее применить к пустому столбцу, он закрасится весь. Чтобы исключить такое поведение, можно красить только ячейки и числами:
Код: plaintext
=ЕСЛИ(ЕЧИСЛО(A1);МАКС(A:A)=A1)

И эту формулу можно применить ко всему листу. После записи макроса и небольшого "причесывания" получается
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub Макрос1()
    Range("A1").Select
    With Cells.FormatConditions.Add(Type:=xlExpression, Formula1:= _
        "=ЕСЛИ(ЕЧИСЛО(A1);A1=МАКС(A:A))")
      With .Interior
        .PatternColorIndex = xlAutomatic
        .Color = 10498160
        .TintAndShade = 0
      End With
      .StopIfTrue = True
    End With
    With Cells.FormatConditions.Add(Type:=xlExpression, Formula1:= _
        "=ЕСЛИ(ЕЧИСЛО(A1);A1=МИН(A:A))")
      With .Interior
        .PatternColorIndex = xlAutomatic
        .Color = 192
        .TintAndShade = 0
      End With
      .StopIfTrue = True
    End With
End Sub
...
Рейтинг: 0 / 0
формулы в цикле
    #39552620
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinreЗадача такая: необходимо закрасить в каждом столбце таблицы максимальное и минимальное значение.Условное форматирование в помощь.
...
Рейтинг: 0 / 0
формулы в цикле
    #39552636
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, так:
Код: 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.
Dim OneColumn As Range
For Each OneColumn In ActiveSheet.UsedRange.Columns
    OneColumn.Select
    Selection.FormatConditions.AddTop10
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1)
        .TopBottom = xlTop10Top
        .Rank = 1
        .Percent = False
    End With
    With Selection.FormatConditions(1).Font
        .Color = vbBlue
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
    Selection.FormatConditions.AddTop10
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1)
        .TopBottom = xlTop10Bottom
        .Rank = 1
        .Percent = False
    End With
    With Selection.FormatConditions(1).Font
        .Color = vbRed
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
Next
ActiveSheet.Range("A1").Select
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / формулы в цикле
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]