Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / выбор самого большого числа в строке / 17 сообщений из 17, страница 1 из 1
07.01.2008, 14:08:15
    #35047022
Alexei Gennadevich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
Такая проблема:

Есть строка. В ней какое-то количество столбцов. Необходимо, чтобы в этой строке было бы выбрано самое большое значение и выделено каким-либо образом (другим цветом или шрифтом - это уже не столь важно). Подскажите КАК?

Заранее спасибо!!!!
...
Рейтинг: 0 / 0
07.01.2008, 16:08:08
    #35047161
Ser Artur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
Формат>Условное форматирование>MAX(A1)
...
Рейтинг: 0 / 0
08.01.2008, 14:33:49
    #35048085
Alexei Gennadevich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
что-то это не то....мне нужно через basic
...
Рейтинг: 0 / 0
08.01.2008, 14:57:26
    #35048119
Alexei Gennadevich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
Все спасибо...уже не надо...сам написал
...
Рейтинг: 0 / 0
08.01.2008, 15:20:23
    #35048151
@Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
Покаж как сделал :-)
...
Рейтинг: 0 / 0
08.01.2008, 15:57:31
    #35048233
Pavel55
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
Тут, наверное, можно сделать 2-мя путями
1) перебором каждой ячейки в ряду
2) использовать функцию рабочего листа МАКС() и поиск этого максимального значения

Вот вариант второго пути

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub Макрос1()
Dim iMaxRange As Range
Dim iMax As Single
Dim iRow As Long
    iRow =  5  'пятый ряд
    iMax = WorksheetFunction.Max(Rows(iRow)) 'максимальное значение в пятом ряду
    If iMax =  0  Then 'если в строке нет чисел
        MsgBox "В строке " & iRow & " нет чисел!", vbExclamation, "Ошибка"
        Exit Sub
    End If
    Set iMaxRange = Rows(iRow).Find(What:=iMax, LookIn:=xlValues, LookAt:=xlWhole) 'ищем ячейку с максим. значением
    iMaxRange.Interior.ColorIndex =  6  'выделяем её желтым цветом
    MsgBox "Максимальное число найдено в ячейке " & iMaxRange.Address( 0 ,  0 ) & " и выделено жёлтым цветом!", vbInformation, "Max"
End Sub
...
Рейтинг: 0 / 0
08.01.2008, 16:01:34
    #35048242
@Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
Ну, в вас, Павел, я не сомневался :-)
Мне было интересно как сделал эту задачу Alexei Gennadevich :-)
...
Рейтинг: 0 / 0
10.01.2008, 22:03:42
    #35054298
Alexei Gennadevich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
Я как раз сделал первым способом: когда перебираются все ячейки. Ниже мой код, но решение, предложенное Павлом, выглядит более солидно. Просто это еще не мой уровень.

Sub poisk()
j = 1
Do
Range("A" + CStr(j)).Activate
2
x = 1
1
If ActiveCell.Offset(0, x).Value = "" Then
ActiveCell.Font.Bold = True
GoTo 3
End If
If ActiveCell.Value < ActiveCell.Offset(0, x).Value Then
ActiveCell.Offset(0, x).Activate
GoTo 2
Else
x = x + 1
GoTo 1
End If
3
j = j + 1
Loop While Range("A" + CStr(j)).Value > ""
End Sub
...
Рейтинг: 0 / 0
11.01.2008, 02:07:20
    #35054482
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
Еще есть третий способ и, как мне кажется, оптимальный:

Код: plaintext
1.
2.
Sub Test()
    Rows( 5 ).FormatConditions.Add( 2 , , "=RC=MAX(R)").Interior.Color =  255 
End Sub


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
11.01.2008, 03:12:49
    #35054518
Pavel55
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
да, круто)
но в русском офисе формула MAX(R) не работает, надо МАКС(R)
А при повторном запуске макроса, он добавляет новое (2 и 3) идентичное условие, а при 4-ом запуске происходит ошибка 1004 (в офисе 2003, т.к. там можно только 3 условия)
Поэтому, с позволения KL , дополню
Код: plaintext
1.
2.
3.
Sub Test()
    Rows( 5 ).FormatConditions.Delete
    Rows( 5 ).FormatConditions.Add( 2 , , "=RC=МАКС(R)").Interior.Color =  255 
End Sub
...
Рейтинг: 0 / 0
11.01.2008, 08:49:34
    #35054698
Alexei Gennadevich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
За что благодарен этому форуму, так это за то что, спросив совета умных людей, нелепые скрипты на целую страницу, написанные собственными силами, можно заменить на коды из двух строчек...всем огромное спасибо.

P.S.:Ребят не могли бы еще объяснить, что несет в себе условие Add(2, , "=RC=МАКС(R)"). Как я понимаю "=RC=МАКС(R)" - это условие максимального числа. А что такое "2, ,"?
...
Рейтинг: 0 / 0
11.01.2008, 10:18:47
    #35054928
@Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
Читайте справку
...
Рейтинг: 0 / 0
11.01.2008, 10:35:25
    #35054979
sqrk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
Это тип условия. Принимает два значения:
xlCellValue (1) The conditional format is based on a cell value.
xlExpression (2) The conditional format is based on an expression.
...
Рейтинг: 0 / 0
11.01.2008, 11:16:56
    #35055162
Pavel55
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
Цитата из Справки Excel по FormatCondition.Add

expression.Add(Type, Operator, Formula1, Formula2)
expression - Required. An expression that returns a FormatConditions object.

Type Required XlFormatConditionType . Specifies whether the conditional format is based on a cell value or an expression.
XlFormatConditionType can be one of these XlFormatConditionType constants.
- xlCellValue The conditional format is based on a cell value.
- xlExpression The conditional format is based on an expression.

Operator Optional Variant. The conditional format operator. Can be one of the following XlFormatConditionOperator constants: xlBetween, xlEqual, xlGreater, xlGreaterEqual, xlLess, xlLessEqual, xlNotBetween , or xlNotEqual . If Type is xlExpression, the Operator argument is ignored.

Formula1 Optional Variant. The value or expression associated with the conditional format. Can be a constant value, a string value, a cell reference, or a formula.

Formula2 Optional Variant. The value or expression associated with the second part of the conditional format when Operator is xlBetween or xlNotBetween (otherwise, this argument is ignored). Can be a constant value, a string value, a cell reference, or a formula.
...
Рейтинг: 0 / 0
12.01.2008, 16:07:01
    #35057672
Alexei Gennadevich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
А что, если я хочу, чтобы окрашивались те ячейки, которые больше скажем 0, но меньше 10. Я попробовал так:

Sub Test()
Rows(5).FormatConditions.Delete
Rows(5).FormatConditions.Add(2, xlBetween, "=RC>0", "=RC<10").Interior.Color = 255
End Sub

Но, к сожалению, у меня выделялись все ячейки, которые больше не только 0, но и больше 10 (то есть выполнялось только первое условие). Как быть в данном случае?

Заранее спасибо!
...
Рейтинг: 0 / 0
12.01.2008, 16:20:21
    #35057682
Pavel55
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
Это, наверное, из-за того, что "между" работает только когда тип "Значение" (1), а не "Формула" (2) .
Цитатат из Справки: "If Type is xlExpression , the Operator argument is ignored ."

Попробуйте так
Код: plaintext
1.
2.
3.
Sub Test()
    Rows( 5 ).FormatConditions.Delete
    Rows( 5 ).FormatConditions.Add( 1 , xlBetween, "0", "9").Interior.Color =  255 
End Sub
...
Рейтинг: 0 / 0
12.01.2008, 17:50:24
    #35057752
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выбор самого большого числа в строке
или так:

Sub Test1()
Rows(5).FormatConditions.Delete
Rows(5).FormatConditions.Add(2, , "=(RC>0)*(RC<10)").Interior.Color = 255
End Sub

Sub Test2()
Rows(5).FormatConditions.Delete
Rows(5).FormatConditions.Add(2, , "=И(RC>0;RC<10)").Interior.Color = 255
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / выбор самого большого числа в строке / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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