Определить текст цвета excel

 

VectorXXX

Пользователь

Сообщений: 14
Регистрация: 23.03.2016

#1

07.04.2016 13:57:06

Здравствуйте, помогите пожалуйста решить следующую проблему:
Записал себе макрос, а он не работает как надо.
В колонку G должна вставляться формула ЕСЛИ(ЕОШ(ПОИСК(«*витяжка*»;B8)>0);F8*0,85;F8*0,88), но если текст в RC[-1] красный, то должно встать просто =RC[-1].
Как я понимаю проблема в том что Selection.FillDown отказывается работать с фильтром.
Каким образов можно определить цвет текста в ячейке, что бы обойтись без использования фильтра?
файл для примера прикрепил — лист2 — как должно быть.
код макроса:

Код
Sub ПрайсМакро()

    Columns("G:G").Select
    Selection.ClearContents
    Range("H3").Select
    ActiveCell.FormulaR1C1 = "курс:"
    Range("I3").Select
    ActiveCell.FormulaR1C1 = "25"
    Range("G7").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISERR(SEARCH(""*витяжки*"",RC[-5])>0),RC[-1]*0.85,RC[-1]*0.88)"
    Range("G7").Select
    Selection.AutoFill Destination:=Range("G7:G205")
    Range("G7:G205").Select
    ActiveSheet.Range("$A$6:$F$205").AutoFilter Field:=6, Criteria1:=vbRed, Operator:=xlFilterFontColor
    Range("G7").Select
    ActiveCell.FormulaR1C1 = "=RC[-1]"
    Range("G7").Select
    Selection.FillDown
    ActiveWindow.SmallScroll Down:=-138
    Selection.AutoFilter
    Range("I7").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[2]/R3C9-RC[-2]<15,RC[-2]+15,RC[2]/R3C9)"
    Range("I7").Select
    Selection.AutoFill Destination:=Range("I7:I227"), Type:=xlFillDefault
    Range("I7:I227").Select
    ActiveWindow.SmallScroll Down:=-210
    Range("H7").Select
End Sub

Прикрепленные файлы

  • plfile.xls (37 КБ)

Изменено: VectorXXX07.04.2016 22:54:26
(Смена названия темы)

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#2

07.04.2016 14:04:03

Цитата
Возможно ли определить цвет шрифта в условии формулы?

Может быть, посмотреть с другой стороны — обойтись без формулы и все вычислять в коде?

 

VectorXXX

Пользователь

Сообщений: 14
Регистрация: 23.03.2016

к сожалению не тот у меня уровень знаний)
но если кто поможет написать — буду очень признателен

 

Udik

Пользователь

Сообщений: 372
Регистрация: 07.03.2016

excel 2016х64 Контакты в профиле

Чтобы именно формулами  цвет ячейки получать  это пользовательскую функцию писать надо.

Арфы — нет, возьмите бубен.

 

Фродо

Пользователь

Сообщений: 348
Регистрация: 10.03.2016

#5

07.04.2016 17:03:24

Код
 If Range("B23").Font.Color = 255 Then
  'действие если красный шрифт
  Else
  'действие если шрифт не красный
  End If

Изменено: Фродо07.04.2016 22:54:59

у меня простая версия Экселя, в ней нет кнопки «Прочитать мысли и сгенерировать файл пример»

 

ts-79

Пользователь

Сообщений: 246
Регистрация: 15.02.2013

Критичен ли цвет в столбце F?
Ведь есть еще и атрибут столбца D (пустой/не пустой), который передает те же условия что и цвет в столбце F

Или там могут быть и другие значения?
Если нет то:
=ЕСЛИ(D7=»»;ЕСЛИ(ЕОШ(ПОИСК(«*витяжка*»;B7)>0);F7*0,85;F7*0,88);F7)

Изменено: ts-7907.04.2016 18:01:54

 

Фродо

Пользователь

Сообщений: 348
Регистрация: 10.03.2016

насколько я помню стандартные функции не могут узнать какой цвет у шрифта

на всякий случай выложу свой пример через УДФ, может пригодится .
трактовка =ЕСЛИ(КрасныйЦвет(F7);»ячейка красная»;»ячейка Не красная»)

у меня простая версия Экселя, в ней нет кнопки «Прочитать мысли и сгенерировать файл пример»

 

bedvit

Пользователь

Сообщений: 2477
Регистрация: 02.04.2015

Виталий

Кроме ЯЧЕЙКА(«формат»;…) со скудным функционалом, не припомню стандартных функций отслеживающих цвет шрифта.

«Бритва Оккама» или «Принцип Калашникова»?

 

VectorXXX

Пользователь

Сообщений: 14
Регистрация: 23.03.2016

#9

07.04.2016 18:38:23

Цитата
ts-79 написал: Критичен ли цвет в столбце F?

не всегда в примечаниях пишут спец цена, бывают всякие акции и тд.

 

VectorXXX

Пользователь

Сообщений: 14
Регистрация: 23.03.2016

#10

07.04.2016 23:26:21

Фродо, Спасибо большое, взял Вашу функцию.

Изменение цвета текста (шрифта) в ячейке рабочего листа 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 цветов

Подробнее о стандартной палитре 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

Результат работы кода:

Разноцветный текст в ячейке


Here are some small functions for you. From your sheet, press AltF11 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. Цвет текста, также известный как передний цвет, — это цвет, в котором текст отображается в Microsoft Excel. По умолчанию установлено значение «Черный». Вы можете вручную изменить цвет текста для части текста или всего текста в ваших данных Excel, используя параметр «Цвет шрифта». В некоторых случаях данные могут содержать несколько вхождений одного и того же текста, цвет которого необходимо изменить. Если ваш файл Excel довольно большой, изменение переднего цвета вручную будет утомительным и трудоемким. В этом посте мы покажем вам, как использовать функцию «Найти и заменить» для изменения цвета текста в Excel.

Как найти и заменить цвет текста в Excel

Найти и заменить — полезная функция в программах пакета Office, которая позволяет заменить существующий текст новым текстом. Однако его также можно использовать для поиска и замены цвета текста. Вы можете использовать эту функцию, чтобы изменить передний цвет один за другим для каждого вхождения текста, или использовать «Заменить все», чтобы обновить передний цвет за один раз. Давайте разберемся в этом с помощью примера.

Пример данных для изменения переднего цвета в Excel

Предположим, у нас есть рабочий лист, в котором у нас есть таблица, в которой перечислены заголовки сообщений и имена авторов сообщений, опубликованных в TheWindowsClub в определенный день (см. изображение выше). Теперь предположим, что мы хотим изменить цвет текста для имени конкретного автора «Гуру Мандади», который внес наибольший вклад в этот день.

Мы можем сделать это вручную следующим образом:

  1. Выберите первое вхождение «Гуру Мандади», поместив курсор в ячейку C1.
  2. Нажмите и удерживайте кнопку Ctrl на клавиатуре и щелкните по всем другим вхождениям «Guru Mandadi» один за другим.
  3. Щелкните раскрывающийся список «Цвет шрифта» на панели инструментов «Шрифт» вверху.
  4. Нажмите на цвет, который должен заменить существующий передний цвет.

Ручное изменение цвета текста в Excel

Используйте «Найти и заменить», чтобы изменить цвет текста в Excel

Хотя это может показаться простым и легким, ручное изменение переднего цвета может быть не идеальным подходом для больших баз данных, где текст может появляться сотни или тысячи раз в разных местах электронной таблицы. В таких случаях вы можете использовать функцию «Найти и заменить». Для приведенного выше примера это работает следующим образом:

  1. Выберите диапазон ячеек, в котором необходимо заменить цвет текста. Если это вся электронная таблица, ничего не выбирайте.
  2. Щелкните раскрывающийся список «Найти и выбрать» на панели инструментов «Редактирование» в правом верхнем углу.
  3. Нажмите на опцию «Заменить».
  4. В диалоговом окне «Найти и заменить» нажмите кнопку «Параметры». Это расширит диалоговое окно и покажет дополнительные параметры.
  5. Введите текст в поле «Найти». В приведенном выше примере мы ввели в это поле «Гуру Мандади».
  6. Щелкните раскрывающийся список «Формат» рядом с полем «Заменить на».Использование «Найти и заменить» для изменения цвета текста в Excel
  7. Выберите параметр Формат.
  8. В диалоговом окне «Заменить формат» щелкните раскрывающийся список «Цвет» и выберите цвет, который должен заменить существующий цвет указанного текста.
  9. Нажмите кнопку ОК.Выбор нового цвета в «Найти и заменить»
  10. Нажмите кнопку «Заменить все» в диалоговом окне «Найти и заменить», чтобы применить новый цвет к тексту.

Excel сообщит вам о количестве замен, сделанных на всем листе или в выбранном диапазоне ячеек.

Цвет текста изменен с помощью функции «Найти и заменить»

Примечание. Вы также можете использовать другие параметры форматирования, доступные в диалоговом окне «Заменить формат», чтобы изменить внешний вид текста, например стиль шрифта, размер и т. д.

Читайте также: Как изменить цвет вкладки рабочего листа Excel.

Если вы хотите, вы можете просмотреть вхождения текста одно за другим и заменить передний цвет, используя параметры «Найти далее» и «Заменить». Вот как:

  • Выполните шаги 1-9, как описано выше.
  • В диалоговом окне «Найти и заменить» нажмите кнопку «Найти далее».
  • Фокус мыши появится при первом появлении указанного текста.
  • Чтобы изменить передний цвет, нажмите «Заменить». В противном случае ничего не нажимайте.
  • Снова нажмите кнопку «Найти далее».
  • Фокус мыши появится при следующем появлении указанного текста.
  • Нажмите «Заменить», чтобы заменить цвет текста.
  • Повторяйте этот процесс, пока не сделаете столько замен цвета текста, сколько хотите.

Это заканчивается тем, как найти и заменить цвет текста в Excel.

Нажмите Ctrl+F, чтобы открыть диалоговое окно «Найти и заменить». Перейдите на вкладку «Заменить». Нажмите кнопку «Параметры». Введите нужный текст в поле «Найти». Выберите параметр «Формат» в меню «Формат» рядом с полем «Заменить на». Перейдите на вкладку «Заливка» в диалоговом окне «Заменить формат». Выберите цвет из палитры «Цвет фона» и нажмите «ОК». Нажмите кнопку «Заменить все», чтобы выделить все вхождения указанного текста.

Как определить цвет заливки ячейки

Функция =ЦВЕТЗАЛИВКИ(ЯЧЕЙКА) возвращает код цвета заливки выбранной ячейки. Имеет один обязательный аргумент:

  • ЯЧЕЙКА — ссылка на ячейку, для которой необходимо применить функцию.

Ниже представлен пример, демонстрирующий работу функции.

Пример работы формулы ЦВЕТЗАЛИВКИ

Следует обратить внимание на тот факт, что функция не пересчитывается автоматически. Это связано с тем, что изменение цвета заливки ячейки Excel не приводит к пересчету формул. Для пересчета формулы необходимо пользоваться сочетанием клавиш Ctrl+Alt+F9

Пример использования

Так как заливка ячеек значительно упрощает восприятие данных, то пользоваться ей любят практически все пользователи. Однако есть и большой минус — в стандартном функционале Excel отсутствует возможность выполнять операции на основе цвета заливки. Нельзя просуммировать ячейки определенного цвета, посчитать их количество, найти максимальное и так далее.

С помощью функции ЦВЕТЗАЛИВКИ все это становится выполнимым. Например, «протяните» данную формулу с цветом заливки в соседнем столбце и производите вычисления на основе числового кода ячейки.

Иногда возникает необходимость изменить, определить цвет ячейки для копирования, закрасить определенную область, придав тем самым неповторимые и выразительные черты таблице данных.

В этой статье мы рассмотрим как вручную можно менять цвет ячейки, а так же как прописать в VBA изменение цвета диапазона ячеек или одной выделенной ячейки.

Начнем с простого. На главной панели инструментов ленты находится панель Формата Ячеек:

Excel панель инструментов-изменение ячеек

Для того, чтобы изменить цвет ячейки (диапазона ячеек) нам необходимо выделить ее, после чего на Панели инструментов выбрать необходимый цвет. Так же можно задать другие цвета, выбрав их из палитры. Панель инструментов меняет так же цвет текста, размер шрифта и формат границы ячейки.

Теперь зададим формат ячейки пользуясь контекстным меню, для чего кликнем правой кнопкой мыши на ячейке и в открывшемся списке выберем «Формат Ячеек»:

формат ячеек в excel

На вкладке «Заливка» можно выбрать цвет фона и узор.

Рассмотрим несколько иную ситуацию. Допустим вы хотите скопировать цвет ячейки (и формат) с существующей и применить к своим ячейкам. Воспользуемся кнопкой на главной панели «Формат по образцу» («метелочка»):

Excel формат по образцу

Таким образом, для того, чтобы скопировать формат необходимо выделить интересующую нас ячейку, нажать на «метелочку» и кликнуть по ячейке, формат которой мы хотим задать.

Аналогичные операции можно описать и в Макросах. Если есть необходимость вставить в код условие, по которому будет меняться формат ячейки или проводиться суммирование ячеек с определенным цветом или шрифтом, то проведя операции копирования формата с записью макроса, можно увидеть что:

Задать цвет ячейке (A1 окрашивается в Желтый):

Скопировать формат ячейки (формат A1 копируется на A3):

Теперь комбинируя формат с операторами условия можно написать вычисления (например, суммирование) по условию цвета.

Будем благодарны, если Вы нажмете +1 и/или Мне нравится внизу данной статьи или поделитесь с друзьями с помощью кнопок ниже.

Как узнать цвет ячейки excel

Функция CellColor

Данная функция позволяет определить внутренний числовой Excel код цвета заливки любой указанной ячейки. Это дает возможность пользователю впоследствии производить сортировку и фильтрацию ячеек по цвету, что часто бывает необходимо.

Определение кода цвета ячейки с помощью функции CellColor

Синтаксис

=CellColor( cell )

  • cell — ячейка, для которой нужно определить код цвета заливки
Примечания

К сожалению, поскольку Excel формально не считает смену цвета изменением содержимого листа, то эта функция не будет пересчитываться автоматически при изменении форматирования — обновление значений этой функции происходит только при нажатии сочетания клавиш полного пересчета листа Ctrl+Alt+F9.

Также (в силу ограничений самого Excel), данная функция не может считывать код цвета, если было использовано условное форматирование.

Если для ячейки не установлен цвет заливки, то код = -4142.

Если нужен RGB-код цвета, то используйте функцию RGBCellColor.

Если нужен код цвета не заливки, а шрифта, то используйте функцию CellFontColor.

Понравилась статья? Поделить с друзьями:
  • Определить сумму чисел расположенных выше главной диагонали excel
  • Определить сумму начисленных процентов в excel
  • Определить сумму налога на имущество по следующей схеме если стоимость имущества меньше 850 excel
  • Определить сумму за определенную дату excel
  • Определить суммарный в excel