Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2011, 21:57   #1
Discovery
Новичок
Джуниор
 
Регистрация: 09.06.2011
Сообщений: 4
По умолчанию Палитра RGB

Господа, буду признателен, если подскажете как реализовать описанную далее идею. В общем я рассчитал корреляционную матрицу внушительного размера (примерно 30х30) и хочу чтобы значения в этой матрице отображались в соответствии с палитрой RGB. Т.е. -1 будет самым холодным значением (синим), а +1 - красным, и переход от нижней границы к верхней должен быть очень плавным, в полутонах. Заранее спасибо. P.S. Программист я начинающий, так что приветствуются очень доступные для понимания решения.
Discovery вне форума Ответить с цитированием
Старый 09.06.2011, 22:16   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
матрицу внушительного размера (примерно 30х30)
30х30 это 900 будет...
а в VBA, насколько я знаю, доступны только 56 цветов
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 09.06.2011, 22:20   #3
Discovery
Новичок
Джуниор
 
Регистрация: 09.06.2011
Сообщений: 4
По умолчанию

VictorM, совсем не обязательно присваивать такое количество цветов. Например, несколько значений могут попадать в один цветовой интервал, например значения от 0,5 до 0,55 могут быть одинакового цвета.
Discovery вне форума Ответить с цитированием
Старый 09.06.2011, 23:08   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Что-либо "особо изощреное" или "изысканое" в голову не приходит.
А если по-простому, то определяем значение активной ячейки и заливаем ее определенным цветом. Можно так
Код:
Sub tt()
    If ActiveCell.Value = 0.5 Then ActiveCell.Interior.ColorIndex = 5
    If ActiveCell.Value > 0.5 < 1 Then ActiveCell.Interior.ColorIndex = 44
'и т.д.))
End Sub
что, как видно достаточно нудно для таких обьемов матрицы
можно так еще
Код:
Sub ttt()
    iVal = ActiveCell.Value
    Select Case iVal
    Case 1
        ActiveCell.Interior.ColorIndex = 5
    Case 2, 5
        ActiveCell.Interior.ColorIndex = 6
    Case 10 To 13
        ActiveCell.Interior.ColorIndex = 14
    Case Is > 14
        ActiveCell.Interior.ColorIndex = 22
    End Select

End Sub
тоже нудно, но будет несколько быстрее работать, так как будет смотреть только ДО совпадения.
Ну и все это заключить в цикл, который будет просматривать всю Вашу матрицу...

Может кто изящнее решение предложит
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 09.06.2011, 23:22   #5
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Может лучше TintAndShade использовать - как раз от -1 до +1.
Вот первое, что придумалось: в файле попробуйте изменить исходный цвет и шаг (xlsm).
Вложения
Тип файла: zip Книга2цвет.zip (20.6 Кб, 14 просмотров)

Последний раз редактировалось nilem; 09.06.2011 в 23:26.
nilem вне форума Ответить с цитированием
Старый 10.06.2011, 01:01   #6
ZORRO2005
Форумчанин
 
Аватар для ZORRO2005
 
Регистрация: 26.11.2006
Сообщений: 584
По умолчанию

Есть одна французская надстройка PolyKromy:
http://www.polykromy.com/excel/poly_main_cours.html
Пример во вложении.
Вложения
Тип файла: rar PolyKromy.rar (10.3 Кб, 22 просмотров)
ZORRO2005 вне форума Ответить с цитированием
Старый 10.06.2011, 01:38   #7
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

еще вариант

Код:
Sub test()
dim Z, r, b, i&, j&
Z = 510 / 900
r = 255
For i = 1 To 30
    For j = 1 To 30
    x = x + Z
   If x <= 255 Then
    b = x
    Else
    r = r - Z
    End If
    Cells(i, j).Interior.Color = RGB(r, 0, b)
Next: Next
End Sub
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 10.06.2011, 10:55   #8
Discovery
Новичок
Джуниор
 
Регистрация: 09.06.2011
Сообщений: 4
По умолчанию

Спасибо всем за предложения! Думаю, вариант с cases, который предложил VictorM, наиболее близок к задумке (я добавил изображение для ясности), хотя он очень "ручной". Другие варианты хороши, но предполагают равномерное распеределение значений, моя же матрица очень дисперсна. Если предложите более автоматизированный вариант - буду рад. Спасибо.
Изображения
Тип файла: jpg RGB.jpg (53.4 Кб, 161 просмотров)
Discovery вне форума Ответить с цитированием
Старый 10.06.2011, 11:18   #9
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от Discovery Посмотреть сообщение
Спасибо всем за предложения! Думаю, вариант с cases, который предложил VictorM, наиболее близок к задумке (я добавил изображение для ясности), хотя он очень "ручной". Другие варианты хороши, но предполагают равномерное распеределение значений, моя же матрица очень дисперсна. Если предложите более автоматизированный вариант - буду рад. Спасибо.
если бы сразу сразу свой скрин приложили бы, результат бы получили еще ближе.

Про зеленый цвет вы не упоминали

Да если у вас офис 2007 и выше так там условное форматирование есть, в котором стоит выставить мин макс и цвета
Изображения
Тип файла: jpg скрин.jpg (145.0 Кб, 140 просмотров)
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234

Последний раз редактировалось R Dmitry; 10.06.2011 в 11:26.
R Dmitry вне форума Ответить с цитированием
Старый 10.06.2011, 11:23   #10
Discovery
Новичок
Джуниор
 
Регистрация: 09.06.2011
Сообщений: 4
По умолчанию

Виноват, надо было приложить). К сожалению, у нас на работе 2003.

Последний раз редактировалось Discovery; 10.06.2011 в 11:28.
Discovery вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цветовая палитра Юля_новичок Помощь студентам 3 24.05.2011 11:47
Цветовая палитра Biohazard Общие вопросы Delphi 7 30.07.2010 12:58
Палитра _-Re@l-_ Общие вопросы Delphi 8 22.06.2010 11:39
Цветовая палитра Stanislav Помощь студентам 3 09.12.2007 03:46