VectorXXX Пользователь Сообщений: 14 |
#1 07.04.2016 13:57:06 Здравствуйте, помогите пожалуйста решить следующую проблему:
Прикрепленные файлы
Изменено: VectorXXX — 07.04.2016 22:54:26 |
||
vikttur Пользователь Сообщений: 47199 |
#2 07.04.2016 14:04:03
Может быть, посмотреть с другой стороны — обойтись без формулы и все вычислять в коде? |
||
VectorXXX Пользователь Сообщений: 14 |
к сожалению не тот у меня уровень знаний) |
Udik Пользователь Сообщений: 372 excel 2016х64 Контакты в профиле |
Чтобы именно формулами цвет ячейки получать это пользовательскую функцию писать надо. Арфы — нет, возьмите бубен. |
Фродо Пользователь Сообщений: 348 |
#5 07.04.2016 17:03:24
Изменено: Фродо — 07.04.2016 22:54:59 у меня простая версия Экселя, в ней нет кнопки «Прочитать мысли и сгенерировать файл пример» |
||
ts-79 Пользователь Сообщений: 246 |
Критичен ли цвет в столбце F? Или там могут быть и другие значения? Изменено: ts-79 — 07.04.2016 18:01:54 |
Фродо Пользователь Сообщений: 348 |
насколько я помню стандартные функции не могут узнать какой цвет у шрифта на всякий случай выложу свой пример через УДФ, может пригодится . у меня простая версия Экселя, в ней нет кнопки «Прочитать мысли и сгенерировать файл пример» |
bedvit Пользователь Сообщений: 2477 Виталий |
Кроме ЯЧЕЙКА(«формат»;…) со скудным функционалом, не припомню стандартных функций отслеживающих цвет шрифта. «Бритва Оккама» или «Принцип Калашникова»? |
VectorXXX Пользователь Сообщений: 14 |
#9 07.04.2016 18:38:23
не всегда в примечаниях пишут спец цена, бывают всякие акции и тд. |
||
VectorXXX Пользователь Сообщений: 14 |
#10 07.04.2016 23:26:21 Фродо, Спасибо большое, взял Вашу функцию. |
Here are some small functions for you. From your sheet, press Alt—F11 to reach the VBA editor, insert a new module, paste the below code, go back to your worksheet and use them by their names, like in =FillColor(A1)
The first two are the promised «3-liners» giving decimal values for font and background colors — not very useful though
The second pair converts the decimal number to RGB and returns a string of format N, N, N
The third pair are array formulas — select 3 cells in a row, enter the formula and press Ctrl+Shift+Enter to obtain numeric RGB values in 3 neighboring cells
Function FillColor(Target As Range) As Variant
FillColor = Target.Interior.Color
End Function
Function FontColor(Target As Range) As Variant
FontColor = Target.Font.Color
End Function
Function FillColorRGB(Target As Range) As Variant
Dim N As Double
N = Target.Interior.Color
FillColorRGB = Str(N Mod 256) & ", " & Str(Int(N / 256) Mod 256) & ", " & Str(Int(N / 256 / 256) Mod 256)
End Function
Function FontColorRGB(Target As Range) As Variant
Dim N As Double
N = Target.Font.Color
FontColorRGB = Str(N Mod 256) & ", " & Str(Int(N / 256) Mod 256) & ", " & Str(Int(N / 256 / 256) Mod 256)
End Function
Function FillColorRGBArray(Target As Range) As Variant
Dim N As Double, A(3) As Integer
N = Target.Interior.Color
A(0) = N Mod 256
A(1) = Int(N / 256) Mod 256
A(2) = Int(N / 256 / 256) Mod 256
FillColorRGBArray = A
End Function
Function FontColorRGBArray(Target As Range) As Variant
Dim N As Double, A(3) As Integer
N = Target.Font.Color
A(0) = N Mod 256
A(1) = Int(N / 256) Mod 256
A(2) = Int(N / 256 / 256) Mod 256
FontColorRGBArray = A
End Function
A word of caution: changing the color of a cell does not start recalculation by the above functions/formulas, as recoloring a cell in general is not supposed to drive recalculation. You have to manually start a full recalculation using Ctrl+Alt+Shift+F9
Изменение цвета текста (шрифта) в ячейке рабочего листа Excel с помощью кода VBA. Свойства ячейки (диапазона) .Font.Color, .Font.ColorIndex и .Font.TintAndShade.
Использование цветовой палитры для присвоения цвета тексту в ячейке листа Excel аналогично присвоению цвета фону ячейки, только свойство диапазона .Interior меняем на свойство .Font.
Цвет текста и предопределенные константы
Цвет шрифту в ячейке можно присвоить с помощью предопределенных констант:
Range(«A1:C3»).Font.Color = vbGreen Range(Cells(4, 1), Cells(6, 3)).Font.Color = vbBlue Cells(7, 1).Font.Color = vbRed |
Напомню, что вместо индексов строк и столбцов можно использовать переменные. Список предопределенных констант смотрите здесь.
Цвет шрифта и модель RGB
Для изменения цвета текста в ячейке можно использовать цветовую модель RGB:
Range(«A1»).Font.Color = RGB(200, 150, 250) Cells(2, 1).Font.Color = RGB(200, 150, 100) |
Аргументы функции RGB могут принимать значения от 0 до 255. Если все аргументы равны 0, цвет — черный, если все аргументы равны 255, цвет — белый. Функция RGB преобразует числовые значения основных цветов (красного, зеленого и синего) в индекс основной палитры.
Список стандартных цветов с RGB-кодами смотрите в статье: HTML. Коды и названия цветов.
Свойство .Font.ColorIndex
Свойство .Font.ColorIndex может принимать значения от 1 до 56. Это стандартная ограниченная палитра, которая существовала до Excel 2007 и используется до сих пор. Посмотрите примеры:
Range(«A1:D6»).Font.ColorIndex = 5 Cells(1, 6).Font.ColorIndex = 12 |
Таблица соответствия значений ограниченной палитры цвету:
Стандартная палитра Excel из 56 цветов
Подробнее о стандартной палитре Excel смотрите в статье: Стандартная палитра из 56 цветов.
Свойство .Font.ThemeColor
Свойство .Font.ThemeColor может принимать числовые или текстовые значения констант из коллекции MsoThemeColorIndex:
Range(«A1»).Font.ThemeColor = msoThemeColorHyperlink Cells(2, 1).Font.ThemeColor = msoThemeColorAccent4 |
Основная палитра
Основная палитра, начиная c Excel 2007, состоит из 16777216 цветов. Свойство .Font.Color может принимать значения от 0 до 16777215, причем 0 соответствует черному цвету, а 16777215 — белому.
Cells(1, 1).Font.Color = 0 Cells(2, 1).Font.Color = 6777215 Cells(3, 1).Font.Color = 4569325 |
Отрицательные значения свойства .Font.Color
При записи в Excel макрорекордером макроса с присвоением шрифту цвета используются отрицательные значения свойства .Font.Color, которые могут быть в пределах от -16777215 до -1. Отрицательные значения соответствуют по цвету положительному значению, равному сумме наибольшего индекса основной палитры и данного отрицательного значения. Например, отрицательное значение -8257985 соответствует положительному значению 8519230, являющегося результатом выражения 16777215 + (-8257985). Цвета текста двух ячеек из следующего кода будут одинаковы:
Cells(1, 1).Font.Color = —8257985 Cells(2, 1).Font.Color = 8519230 |
Свойство .Font.TintAndShade
Еще при записи макроса с присвоением шрифту цвета макрорекордером добавляется свойство .Font.TintAndShade, которое осветляет или затемняет цвет и принимает следующие значения:
- -1 — затемненный;
- 0 — нейтральный;
- 1 — осветленный.
При тестировании этого свойства в Excel 2016, сравнивая затемненные и осветленные цвета, разницы не заметил. Сравните сами:
Sub Test() With Range(Cells(1, 1), Cells(3, 1)) .Value = «Сравниваем оттенки» .Font.Color = 37985 End With Cells(1, 1).Font.TintAndShade = —1 Cells(2, 1).Font.TintAndShade = 0 Cells(3, 1).Font.TintAndShade = 1 End Sub |
В первые три ячейки первого столбца записывается одинаковый текст для удобства сравнения оттенков.
Разноцветный текст в ячейке
Отдельным частям текста в ячейке можно присвоить разные цвета. Для этого используется свойство Range.Characters:
Sub Test() With Range(«A1») .Font.Color = vbBlack .Value = «Океан — Солнце — Оазис» .Font.Size = 30 .Characters(1, 5).Font.Color = vbBlue .Characters(9, 6).Font.Color = RGB(255, 230, 0) .Characters(18, 5).Font.Color = RGB(119, 221, 119) End With End Sub |
Результат работы кода:
На чтение 3 мин. Просмотров 1.1k. Опубликовано 15.12.2019
Содержание
- Описание работы
- Зачем это нужно?
- Код на VBA
- Изменение цвета текста в ячейке или диапазоне
- Применение дополнительного цвета
- Форматирование цвета ярлычка листа
Описание работы
Функция =ЦВЕТШРИФТА(ЯЧЕЙКА) возвращает код цвета шрифта указанной ячейки. Функция имеет один обязательный аргумент.
- ЯЧЕЙКА — ссылка на ячейку, цвет шрифта которой необходимо определить.
Ниже представлен пример, демонстрирующий работу функции.
Следует обратить внимание на тот факт, что функция не пересчитывается автоматически. Это связано с тем, что изменение цвета шрифта ячейки Excel не приводит к пересчету формул. Для пересчета формулы необходимо пользоваться сочетанием клавиш Ctrl+Alt+F9
Зачем это нужно?
С помощью данной функции, мы можете быстро сортировать ячейки с определенным цветом шрифта, подсчитывать их количество. К примеру, можно создать отдельный столбец и протянуть в нем данную функцию, для того, чтобы по этому столбцу быстро отсортировать строки с различным шрифтом. Можно создать сводную таблицу, в которой будет вестись подсчет ячеек с заданным цветом шрифта.
Код на VBA
Вы можете самостоятельно внедрить данную функцию в Excel или установить надстройку.
Для Excel — 2007 на главной панели выбираете «Условное форматирование» — «Правила выделения ячеек» — «Другие правила» — «Использовать формулу для определения форматируемых ячеек» — «Форматировать значения, для которых следующая формула является истинной»
Далее задаёте формулу и формат (в Вашем случае — цвет выделения текста) .
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).
Данные на листах можно сделать более удобными для восприятия, изменив цвет шрифта в ячейках или диапазонах, цвет ярлычков листов или формул.
Сведения о том, как изменить цвет фона ячеек или применить узоры или цвета заливки, см. в разделе Добавление или изменение цвета фона ячеек.
Изменение цвета текста в ячейке или диапазоне
Выделите ячейку или диапазон ячеек с данными, которые вы хотите отформатировать. Вы также можете выбрать часть текста в ячейке.
На вкладке Главная щелкните стрелку рядом с кнопкой Цвет шрифта .
Выберите цвет в группе Цвета темы или Стандартные цвета.
Совет: Чтобы применить последний выбранный цвет текста, на вкладке Главная нажмите кнопку Цвет текста.
Применение дополнительного цвета
Если вам нужен определенный цвет текста, вот как можно его получить:
На вкладке Главная щелкните стрелку рядом с кнопкой Цвет текста и выберите команду Другие цвета.
На вкладке Спектр в поле Цвета выберите нужный цвет.
Если вы знаете числовые значения составляющих нужного цвета, в поле Цветовая модель выберите модель RGB (Red, Green, Blue — красный, зеленый, синий) или HSL (Hue, Sat, Lum — тон, насыщенность, яркость), а затем введите числа, в точности соответствующие искомому цвету.
Совет: Чтобы быстро скопировать используемый цвет текста в другие ячейки, выделите исходную ячейку и дважды нажмите кнопку Формат по образцу . Затем щелкните ячейки, которые нужно отформатировать. По завершении еще раз нажмите кнопку Формат по образцу, чтобы выйти из этого режима.
Форматирование цвета ярлычка листа
Щелкните правой кнопкой мыши ярлычок листа, цвет которого вы хотите изменить.
Щелкните Цвет ярлычка, а затем выберите нужный цвет.
Изменится цвет ярлычка, но не цвет шрифта. При выборе темного цвета ярлычка цвет шрифта меняется на белый, а при выборе светлого цвета — на черный.
MulTEx »
1 Май 2011 7344 просмотров
Данная функция является частью надстройки MulTEx
Получение кода цвета шрифта ячейки
Функция возвращает числовой код цвета шрифта указанной ячейки.
Вызов команды через стандартный диалог:
Мастер функций—Категория «MulTEx»— Цвет_шрифта
Вызов с панели MulTEx:
Сумма/Поиск/Функции — Форматирование — Цвет_шрифта
Синтаксис:
=Цвет_шрифта(D1)
Ячейка(
D1
) — Ячейка, код цвета шрифта которой необходимо узнать. Если указан диапазон ячеек, но функция введена в одну ячейку, то будет возвращен цвет шрифта для левой верхней ячейки указанного диапазона.
Функция может быть использована как формула массива
Индекс() — Необязательный аргумент. Определяет тип вывода числового кода. 0 — числовой код цвета из 16-миллионной палитры. 1 — числовой индекс цвета из 56 цветов. По умолчанию 0.
Важно: Функция не вычисляется при изменении цвета шрифта. Для пересчета функции после изменения параметров необходимо выделить ячейку и нажать F2—Enter. Либо нажать сочетания клавиш Shift+F9(пересчет функций активного листа) или клавишу F9(пересчет функций всей книги).
Примечание: данная функция не учитывает ячейки, к котрым применено Условное Форматирование. Будет определен тот цвет шрифта, который установлен стандартными средствами.
Расскажи друзьям, если статья оказалась полезной:
Видеоинструкции по использованию надстройки MulTEx
Как определить цвет заливки ячейки
Функция =ЦВЕТЗАЛИВКИ(ЯЧЕЙКА) возвращает код цвета заливки выбранной ячейки. Имеет один обязательный аргумент:
- ЯЧЕЙКА — ссылка на ячейку, для которой необходимо применить функцию.
Ниже представлен пример, демонстрирующий работу функции.
Следует обратить внимание на тот факт, что функция не пересчитывается автоматически. Это связано с тем, что изменение цвета заливки ячейки Excel не приводит к пересчету формул. Для пересчета формулы необходимо пользоваться сочетанием клавиш Ctrl+Alt+F9
Пример использования
Так как заливка ячеек значительно упрощает восприятие данных, то пользоваться ей любят практически все пользователи. Однако есть и большой минус — в стандартном функционале Excel отсутствует возможность выполнять операции на основе цвета заливки. Нельзя просуммировать ячейки определенного цвета, посчитать их количество, найти максимальное и так далее.
С помощью функции ЦВЕТЗАЛИВКИ все это становится выполнимым. Например, «протяните» данную формулу с цветом заливки в соседнем столбце и производите вычисления на основе числового кода ячейки.
Иногда возникает необходимость изменить, определить цвет ячейки для копирования, закрасить определенную область, придав тем самым неповторимые и выразительные черты таблице данных.
В этой статье мы рассмотрим как вручную можно менять цвет ячейки, а так же как прописать в VBA изменение цвета диапазона ячеек или одной выделенной ячейки.
Начнем с простого. На главной панели инструментов ленты находится панель Формата Ячеек:
Для того, чтобы изменить цвет ячейки (диапазона ячеек) нам необходимо выделить ее, после чего на Панели инструментов выбрать необходимый цвет. Так же можно задать другие цвета, выбрав их из палитры. Панель инструментов меняет так же цвет текста, размер шрифта и формат границы ячейки.
Теперь зададим формат ячейки пользуясь контекстным меню, для чего кликнем правой кнопкой мыши на ячейке и в открывшемся списке выберем «Формат Ячеек»:
На вкладке «Заливка» можно выбрать цвет фона и узор.
Рассмотрим несколько иную ситуацию. Допустим вы хотите скопировать цвет ячейки (и формат) с существующей и применить к своим ячейкам. Воспользуемся кнопкой на главной панели «Формат по образцу» («метелочка»):
Таким образом, для того, чтобы скопировать формат необходимо выделить интересующую нас ячейку, нажать на «метелочку» и кликнуть по ячейке, формат которой мы хотим задать.
Аналогичные операции можно описать и в Макросах. Если есть необходимость вставить в код условие, по которому будет меняться формат ячейки или проводиться суммирование ячеек с определенным цветом или шрифтом, то проведя операции копирования формата с записью макроса, можно увидеть что:
Задать цвет ячейке (A1 окрашивается в Желтый):
Скопировать формат ячейки (формат A1 копируется на A3):
Теперь комбинируя формат с операторами условия можно написать вычисления (например, суммирование) по условию цвета.
Будем благодарны, если Вы нажмете +1 и/или Мне нравится внизу данной статьи или поделитесь с друзьями с помощью кнопок ниже.
Как узнать цвет ячейки excel
Функция CellColor
Данная функция позволяет определить внутренний числовой Excel код цвета заливки любой указанной ячейки. Это дает возможность пользователю впоследствии производить сортировку и фильтрацию ячеек по цвету, что часто бывает необходимо.
Синтаксис
=CellColor( cell )
- cell — ячейка, для которой нужно определить код цвета заливки
Примечания
К сожалению, поскольку Excel формально не считает смену цвета изменением содержимого листа, то эта функция не будет пересчитываться автоматически при изменении форматирования — обновление значений этой функции происходит только при нажатии сочетания клавиш полного пересчета листа Ctrl+Alt+F9.
Также (в силу ограничений самого Excel), данная функция не может считывать код цвета, если было использовано условное форматирование.
Если для ячейки не установлен цвет заливки, то код = -4142.
Если нужен RGB-код цвета, то используйте функцию RGBCellColor.
Если нужен код цвета не заливки, а шрифта, то используйте функцию CellFontColor.
Alternatively, if you do not want to use Macros or VBA, you can get the Cell Color using Aspose.Cells API.
Cell Color or Cell Fill Color is represented by
- Cell>Style>ForegroundColor
Cell Font Color is represented by
- Cell>Style>Font>Color
Sample Excel file used inside the Code
Please consider the following sample Excel file shown inside the snapshot. Here the cell C4 is filled with Yellow color and its font color is Red.
The following code in C# and Java loads the sample Excel file as shown above and accesses the cell C4 and its Style object. Then it prints the cell fill color i.e. Yellow and cell font color i.e. Red.
Please also see the Console Output given below and read the Comments inside the code for more understanding.
C#
// Directory path for input Excel file.
string dirPath = "D:/Download/";
// Load the input Excel file inside workbook object.
Aspose.Cells.Workbook wb = new Workbook(dirPath + "SampleExcelColor.xlsx");
// Access first worksheet.
Worksheet ws = wb.Worksheets[0];
// Access cell C4 by name.
Cell cell = ws.Cells["C4"];
// Access cell style.
Style st = cell.GetStyle();
// Print fill color of the cell i.e. Yellow.
// Please note, Yellow is (R=255, G=255, B=0)
Console.WriteLine(st.ForegroundColor);
// Print font color of the cell i.e. Red.
// Please note, Red is (R=255, G=0, B=0)
Console.WriteLine(st.Font.Color);
Console Output — C#
Color [A=255, R=255, G=255, B=0]
Color [A=255, R=255, G=0, B=0]
Java
// Directory path for input Excel file.
String dirPath = "D:/Download/";
// Load the input Excel file inside workbook object.
com.aspose.cells.Workbook wb = new Workbook(dirPath + "SampleExcelColor.xlsx");
// Access first worksheet.
Worksheet ws = wb.getWorksheets().get(0);
// Access cell C4 by name.
Cell cell = ws.getCells().get("C4");
// Access cell style.
Style st = cell.getStyle();
// Print fill color of the cell i.e. Yellow.
// Please note, Yellow is (R=255, G=255, B=0)
System.out.println(st.getForegroundColor());
// Print font color of the cell i.e. Red.
// Please note, Red is (R=255, G=0, B=0)
System.out.println(st.getFont().getColor());
Console Output — Java
com.aspose.cells.Color@ffffff00
com.aspose.cells.Color@ffff0000