Страница: 1 |
Страница: 1 |
Вопрос: Помогите с Excel VBA. Задание для интеллектуалов.
Добавлено: 03.11.06 23:48
Автор вопроса: Gewehr
Дана таблица товаров и цен на них. Как сделать так, чтобы в зависимости от цены цвет названия товара ранжировался бы от светлого до чёрного(Проходя все цвета схемы RGB)? Напишите здесь как это сделать, пожалуста!
буду благодарен за любую помощь.
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
Василий
Вопросов: 8
Ответов: 27
Профиль | | #1
Добавлено: 04.11.06 01:36
Формат>Условное форматирование.
Номер ответа: 2
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #2
Добавлено: 04.11.06 12:52
Не понял, что значит ранжировался?
По времени что-ли?
Номер ответа: 3
Автор ответа:
Gewehr
Вопросов: 1
Ответов: 4
Профиль | | #3
Добавлено: 05.11.06 10:22
Как это сделать через VBA?
Номер ответа: 4
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #4
Добавлено: 05.11.06 10:40
Сервис->Макрос->Начать запись )))))))
Номер ответа: 5
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #5
Добавлено: 05.11.06 16:04
2 -АлександР-
в смысле градиент получался - у самой валенькой цены- самый светлый цвет и т д
Номер ответа: 6
Автор ответа:
Gewehr
Вопросов: 1
Ответов: 4
Профиль | | #6
Добавлено: 05.11.06 16:57
Да! Кто-нибудь привидите здесь кусок програмного кода ВБА выполняющего эту задачу
Номер ответа: 7
Автор ответа:
GenyaA
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #7
Добавлено: 05.11.06 18:49
Ну, вот для примера... вероятно, требуются некоторые улучшения... но что уж у меня получилось с ходу:
Dim cc As Range, i As Integer, mx As Double, mn As Double
mx = WorksheetFunction.Max(Range("Цена")
mn = WorksheetFunction.Min(Range("Цена")
For Each cc In Intersect(Range("Цена", UsedRange).Cells
If WorksheetFunction.IsNonText(cc) Then
i = CInt((cc.Value - mn) / (mx - mn) * 255)
cc.Interior.Color = RGB(i, i, i)
If i < 63 Then cc.Font.Color = RGB(255, 255, 255)
End If
Next cc
End Sub
Это обработчик события Change, должен быть на листе, где должна происходить обработка. Область чеек столбца с ценами должна быть именована как "Цена".
Цвета распределятся от белого до черного. Если ячейка получается слишком темной, шрифт в ней меняется на белый.
Смотрите, пробуйте, улучшайте. Если что - спрашивайте.
(В Excel в моей версии не очень большой набор градиентов серых цветов, так что у меня результат выглядел не очень впечатляющим. С другим цветами - экспериментируйте сами с помощью RGB функции.)
Номер ответа: 8
Автор ответа:
Gewehr
Вопросов: 1
Ответов: 4
Профиль | | #8
Добавлено: 05.11.06 20:27
Вопрос в том, как всё это запустить у себя?
Можешь объяснить?)
Номер ответа: 9
Автор ответа:
GenyaA
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #9
Добавлено: 05.11.06 22:41
Смотря на таблицу товаров в Excel, кликаешь на ярлычке этого листа правой клавишей мыши, выбираешь из выпавшего - Исходный текст..., в открывшееся окно вставляешь предложенный мной код (заблаговременно скопированный в буфер клавиатуры путем выделения на этой странице форума и нажатием <Ctrl+C>... возвращаешься в окно книги, выделяешь колонку с ценами, кликаешь в крайнем левом поле строки ввода формулы (там где обычно виднеется адрес ячейки с курсором), вводишь в это поле слово "Цена", нажимаешь Enter, и изменяшь любую ячейку разглядываемого в этот момент листа... После этого, цены будут выделены разным цветом (серые от белого до черного), в зависимости от значения.
Номер ответа: 10
Автор ответа:
Gewehr
Вопросов: 1
Ответов: 4
Профиль | | #10
Добавлено: 05.11.06 23:26
GenyaA, спасибо, дружище! Мне понадобилась только вот эта формула CInt((cc.Value - mn) / (mx - mn) * 255), а дальше сам дошёл)
With great respect and commendation, from Gewehr
Номер ответа: 11
Автор ответа:
Xiaofang
Вопросов: 0
Ответов: 5
Профиль | | #11
Добавлено: 10.05.08 23:20
Excel не поддерживает все RGB-цвета, иногда "округляя" их до полной неузнаваемости. Нужно пользоваться цветовыми индексами.
Номер ответа: 12
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #12
Добавлено: 11.05.08 01:53
Ему теперь очень нужен твой ответ... спустя два года...