Помогите, пожалуйста, найти решение, весь день промучилась, пытаясь ее решить разными путями и никак(( После всех неудачных попыток, я поняла, что решение может быть только через макрос, но я полный ноль в VBA.
Мне нужно найти максимальное значение в залитых цветом ячейках строки. Например, в присоединенном файле в ячейке I5 должно выйти значение 1.5, в ячейке I6 значение 2, в ячейке I7 значение 1 и тд.
Здравствуйте,
Помогите, пожалуйста, найти решение, весь день промучилась, пытаясь ее решить разными путями и никак(( После всех неудачных попыток, я поняла, что решение может быть только через макрос, но я полный ноль в VBA.
Мне нужно найти максимальное значение в залитых цветом ячейках строки. Например, в присоединенном файле в ячейке I5 должно выйти значение 1.5, в ячейке I6 значение 2, в ячейке I7 значение 1 и тд.Iskra
Function color_max(r As Range) Dim m As Double, cell As Range m = 0 For Each cell In r If cell.Interior.ColorIndex <> -4142 Then If cell.Value2 > m Then: m = cell.Value End If Next color_max = m End Function
[/vba]
Пробуйте: [vba]
Код
Function color_max(r As Range) Dim m As Double, cell As Range m = 0 For Each cell In r If cell.Interior.ColorIndex <> -4142 Then If cell.Value2 > m Then: m = cell.Value End If Next color_max = m End Function
tsap, Огромнейшее Вам спасибо!! Все работает!!:)))
А можно ещеспросить ? Как сделать, чтобы цвет шрифта был таким же как и цвет заполнения ячейки (даже в белых ячейках)? Чтобы самих значений во всей таблице было не видно?
Спасибо большое!!
tsap, Огромнейшее Вам спасибо!! Все работает!!:)))
А можно ещеспросить ? Как сделать, чтобы цвет шрифта был таким же как и цвет заполнения ячейки (даже в белых ячейках)? Чтобы самих значений во всей таблице было не видно?
Чтобы значений в ячейках было не видно при любых цветах заливки и шрифта придайте ячейке формат данных ;;; Тогда данные будут видны только в строке формул при выборе ячейки.
Чтобы значений в ячейках было не видно при любых цветах заливки и шрифта придайте ячейке формат данных ;;; Тогда данные будут видны только в строке формул при выборе ячейки.Alex_ST
The only difference between this property and the Value property is that the Value2 property doesn’t use the Currency and Date data types.
Да и m = 0 - это лишнее. Iskra, я файл посмотреть с работы не могу, т.к. в нём есть макросы (спасибо за "безопасность" собакам-сисадминам ) Но решение прямо в коде задавать ColorIndex хоть и работает, но очень стрёмное. Малейшее движение мышки, чуть-чуть изменившее цвет, и всё перестанет работать. Если нужно работать с цветом ячеек я обычно на листе задаю именованный диапазон - ячейку с образцом цвета, а в коде сначала читаю ColorIndex ячейки с этим именем, а потом работаю уже с ним. Если Вы какой-либо ячейке в книге с образцом цвета назначите имя, например, MyColor, то в коде из любого модуля этой книги можно будет получить цвет этой ячейки так:[vba]
Код
[MyColor].Interior.ColorIndex
[/vba] А вся функция тогда будет выглядеть так:
[vba]
Код
Function MaxColor#(rRng As Range) Dim rCell As Range For Each rCell In rRng If rCell.Interior.ColorIndex = [MyColor].Interior.ColorIndex Then If rCell.Value > MaxColor Then MaxColor = rCell.Value End If Next rCell End Function
[/vba]
tsap, а зачем Value2?
ЦитатаСправка
The only difference between this property and the Value property is that the Value2 property doesn’t use the Currency and Date data types.
Да и m = 0 - это лишнее. Iskra, я файл посмотреть с работы не могу, т.к. в нём есть макросы (спасибо за "безопасность" собакам-сисадминам ) Но решение прямо в коде задавать ColorIndex хоть и работает, но очень стрёмное. Малейшее движение мышки, чуть-чуть изменившее цвет, и всё перестанет работать. Если нужно работать с цветом ячеек я обычно на листе задаю именованный диапазон - ячейку с образцом цвета, а в коде сначала читаю ColorIndex ячейки с этим именем, а потом работаю уже с ним. Если Вы какой-либо ячейке в книге с образцом цвета назначите имя, например, MyColor, то в коде из любого модуля этой книги можно будет получить цвет этой ячейки так:[vba]
Код
[MyColor].Interior.ColorIndex
[/vba] А вся функция тогда будет выглядеть так:
[vba]
Код
Function MaxColor#(rRng As Range) Dim rCell As Range For Each rCell In rRng If rCell.Interior.ColorIndex = [MyColor].Interior.ColorIndex Then If rCell.Value > MaxColor Then MaxColor = rCell.Value End If Next rCell End Function