Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / формулы в цикле / 7 сообщений из 7, страница 1 из 1
13.11.2017, 18:28
    #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
14.11.2017, 00:04
    #39552566
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
формулы в цикле
Модератор! Учимся детектировать институтские задания.
...
Рейтинг: 0 / 0
14.11.2017, 00:05
    #39552567
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
формулы в цикле
AntonariyМодератор! Учимся детектировать институтские задания.Человек привел свои усилия.
...
Рейтинг: 0 / 0
14.11.2017, 01:43
    #39552577
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
формулы в цикле
Dinre,

В примере ты ищешь последний столбец по 1 строке, однако, по условию, ты не знаешь размера таблицы. Т.е. тебе также нужно узнать последнюю строку и уже двойным циклом For (For i = 1 To kol_stolb и For j = 1 To kol_strok) искать минимальные и максимальные значения в столбцах. У меня такая идея.
...
Рейтинг: 0 / 0
14.11.2017, 08:04
    #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
14.11.2017, 08:12
    #39552620
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
формулы в цикле
DinreЗадача такая: необходимо закрасить в каждом столбце таблицы максимальное и минимальное значение.Условное форматирование в помощь.
...
Рейтинг: 0 / 0
14.11.2017, 09:08
    #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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / формулы в цикле / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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