На чтение 3 мин Просмотров 4.4к. Опубликовано 25.11.2021
Содержание
- Пример использования
- Сортировка по цвету ячеек
- Фильтр по цвету ячеек
Функция =ЦВЕТЗАЛИВКИ(ЯЧЕЙКА) возвращает код цвета заливки выбранной ячейки. Имеет один обязательный аргумент:
- ЯЧЕЙКА — ссылка на ячейку, для которой необходимо применить функцию.
Ниже представлен пример, демонстрирующий работу функции.
Следует обратить внимание на тот факт, что функция не пересчитывается автоматически. Это связано с тем, что изменение цвета заливки ячейки Excel не приводит к пересчету формул. Для пересчета формулы необходимо пользоваться сочетанием клавиш Ctrl+Alt+F9
Пример использования
Так как заливка ячеек значительно упрощает восприятие данных, то пользоваться ей любят практически все пользователи. Однако есть и большой минус — в стандартном функционале Excel отсутствует возможность выполнять операции на основе цвета заливки. Нельзя просуммировать ячейки определенного цвета, посчитать их количество, найти максимальное и так далее.
С помощью функции ЦВЕТЗАЛИВКИ все это становится выполнимым. Например, «протяните» данную формулу с цветом заливки в соседнем столбце и производите вычисления на основе числового кода ячейки.
Создатели Excel решили, начиная от 2007-ой версии ввести возможность сортировки данных по цвету. Для этого послужило поводом большая потребность пользователей предыдущих версий, упорядочивать данные в такой способ. Раньше реализовать сортировку данных относительно цвета можно было только с помощью создания макроса VBA. Создавалась пользовательская функция и вводилась как формула под соответствующим столбцом, по которому нужно было выполнить сортировку. Теперь такие задачи можно выполнять значительно проще и эффективнее.
Сортировка по цвету ячеек
Пример данных, которые необходимо отсортировать относительно цвета заливки ячеек изображен ниже на рисунке:
Чтобы расположить строки в последовательности: зеленый, желтый, красный, а потом без цвета – выполним следующий ряд действий:
- Щелкните на любую ячейку в области диапазона данных и выберите инструмент: «ДАННЫЕ»-«Сортировка и фильтр»-«Сортировка».
- Убедитесь, что отмечена галочкой опция «Мои данные содержат заголовки», а после чего из первого выпадающего списка выберите значение «Наименование». В секции «Сортировка» выберите опцию «Цвет ячейки». В секции «Порядок» раскройте выпадающее меню «Нет цвета» и нажмите на кнопку зеленого квадратика.
- Нажмите на кнопку «Копировать уровень» и в этот раз укажите желтый цвет в секции «Порядок».
- Аналогичным способом устанавливаем новое условие для сортировки относительно красного цвета заливки ячеек. И нажмите на кнопку ОК.
Ожидаемый результат изображен ниже на рисунке:
Аналогичным способом можно сортировать данные по цвету шрифта или типу значка которые содержат ячейки. Для этого достаточно только указать соответствующий критерий в секции «Сортировка» диалогового окна настройки условий.
Фильтр по цвету ячеек
Аналогично по отношению к сортировке, функционирует фильтр по цвету. Чтобы разобраться с принципом его действия воспользуемся тем же диапазоном данных, что и в предыдущем примере. Для этого:
- Перейдите на любую ячейку диапазона и воспользуйтесь инструментом: «ДАННЫЕ»-«Сортировка и фильтр»-«Фильтр».
- Раскройте одно из выпадающих меню, которые появились в заголовках столбцов таблицы и наведите курсор мышки на опцию «Фильтр по цвету».
- Из всплывающего подменю выберите зеленый цвет.
В результате отфильтруються данные и будут отображаться только те, которые содержать ячейки с зеленым цветом заливки:
Обратите внимание! В режиме автофильтра выпадающие меню так же содержит опцию «Сортировка по цвету»:
Как всегда, Excel нам предоставляет несколько путей для решения одних и тех же задач. Пользователь выбирает для себя самый оптимальный путь, плюс необходимые инструменты всегда под рукой.
Andy8 Пользователь Сообщений: 8 |
Всех приветствую! Изменено: Andy8 — 30.09.2021 14:26:17 |
vikttur Пользователь Сообщений: 47199 |
Вас устроит ответ — можно? Если нет — ознакомьтесь с правилами форума и прикрепите к первому сообщению пример |
БМВ Модератор Сообщений: 21376 Excel 2013, 2016 |
#3 30.09.2021 14:44:23 Использовать стандартный поиск (ctrl+f) выбрать формат, там указать заливку. А вот сокрытие строк — это или через фильтр или макросом.
Вить а что не так? По вопросам из тем форума, личку не читаю. |
||
vikttur Пользователь Сообщений: 47199 |
#4 30.09.2021 14:48:51
Мое сообщение — 13:58:56 |
||
Andy8 Пользователь Сообщений: 8 |
Я не вижу в этом диалоге выбор ячеек по формату. Excel для mac редуцирован(( Либо, не там ищу?.. |
БМВ Модератор Сообщений: 21376 Excel 2013, 2016 |
#6 30.09.2021 14:54:34
просто он обгрызан. Для мака есть раздел специальный на форуме, но не факт что этот функционал есть. По вопросам из тем форума, личку не читаю. |
||
БМВ Модератор Сообщений: 21376 Excel 2013, 2016 |
#7 30.09.2021 14:57:11
Клянусь косяком (жаль что не скринил) видел файл но Изменено: — там не было, а твое уже было. По вопросам из тем форума, личку не читаю. |
||
vikttur Пользователь Сообщений: 47199 |
|
Andy8 Пользователь Сообщений: 8 |
Вот же ошибся с веткой |
Jack Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
Здесь тема и помрёт за отсутствием спецов Помянём Изменено: Jack Famous — 30.09.2021 15:33:43 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
VSerg Пользователь Сообщений: 370 |
Я конечно далеко не спец, да и не факт что еще актуально. Во вложении вариант. Целевой цвет для поиска ячеек задается заливкой ячейки I7. Прикрепленные файлы
|
Andy8 Пользователь Сообщений: 8 |
Да это прям спасение!!! Изменено: Andy8 — 03.10.2021 21:01:16 |
VSerg Пользователь Сообщений: 370 |
#13 03.10.2021 21:10:05
Если я правильно понял вопрос, то вставить новый модуль в редакторе VBA, скопировать в него предлагаемый код из файла или этого сообщения и назначить выполнение на какое-либо событие.
|
||||
Andy8 Пользователь Сообщений: 8 |
Цель использования данного макроса — формирование списка ФИО на оплату. Т.е. в Столбце А указаны ФИО, а последующих столбцах проекты, где эти ФИО участвовали (одни и теже ФИО участвую в разных проектах с разными гонорарами). Проекты плодятся, а ФИО присылают отчеты не сразу. По мере получения отчетов, ячейка на пересечении проекта и ФИО отмечается желтым в ручном режиме. Как-то так… Но у меня проблема: |
VSerg Пользователь Сообщений: 370 |
Предположу, что забыли поменять имя листа. Замените в строке Set ws = wb.Sheets(«Sheet») текст в кавычках на название вашего листа с данными. |
Andy8 Пользователь Сообщений: 8 |
Да, вы правы — заработало!) Подскажите, пжст, как удовлетворить таким условиям: |
VSerg Пользователь Сообщений: 370 |
#17 04.10.2021 05:53:00
вместо
подставить
вместо
подставить
Должно помочь. |
||||||||||||
Andy8 Пользователь Сообщений: 8 |
#18 04.10.2021 11:37:38
Подставил «3» — все идеально! Спасибо вам! |
||
Содержание
- Как в офисе.
- Вам также могут быть интересны следующие статьи
- Excel — выборка ячеек по цвету заливки
- December 15, 2013
- Режим “Разработчик” в Excel
- Вставка готовых функций в Excel VBA
- Функция подсчета количества ячеек
- Функция подсчета суммы ячеек
- Описание рабочей формулы
- Красивая функция trackBy
- Excel поиск ячеек одного цвета
- Быстро найти все ячейки с определенным форматированием в Excel
- Kutools for Excel
- Kutools for Excel
Как в офисе.
Все мы знаем, как пользоваться инструментом «Найти и заменить» в Excel, чтобы найти определенное значение в книге. Иногда возникает необходимость просто выделить значения, которые нашел Excel.
В нашем примере фрагмент выгруженного отчета из системы управления производством, в котором система отделила тысячный разряд точкой «.». Нам необходимо найти и выделить все значения, в которых присутствует точка.
Для начала воспользуемся инструментом «Найти и заменить», чтобы определить все ячейки с вхождением точки в значение. Для этого перейдем по вкладке Главная -> Редактирование —> Найти и выделить -> Найти. В появившемся диалоговом окне, ставим точку в поле поиска и жмем Найти далее.
При открытом диалоговом окне, нажмите Ctrl+A на клавиатуре. Это действие приведет не только к выделению всего списка найденных значений в диалоговом окне, но и выделит все найденные ячейки на листе.
Пока все необходимые ячейки выделены, вы можете залить их каким-нибудь цветом, для придания эффекта.
Данный подход также применим, когда вам необходимо найти и выделить все вешние ссылки, находящиеся в ячейках книги. Для этого, вместо того чтобы искать точку, вам требуется найти квадратную скобку «[».
Почему открывающуюся квадратную скобку? Потому что Excel использует квадратные скобки [] для указания источника данных внешних ссылок.
Обратите внимание, что в этом случае Excel не найдет внешние ссылки, спрятанные в объектах или именованных диапазонах.
Вам также могут быть интересны следующие статьи
Источник
Excel — выборка ячеек по цвету заливки
December 15, 2013
На работе столкнулся с такой задачей — имеется таблица в Excel, в которой ведется табель выходов рабочих в цеху.
В таблице подсчитывается количество часов, фактически отработанных; часов переработки и часов сверх нормы. Так вот, необходимо сделать так, чтобы производилась автоматическая выборка ячеек таблицы по цвету заливки последних.
То есть, нужно отобрать все ячейки с заливкой определенного цвета, подсчитать их количество; а затем применить к полученному значению определенные формулы.
Чтобы было понятнее, приведу изображение подобной таблицы. В ней необходимо произвести подсчет ячеек с заливкой зеленого цвета:
В Excel нет встроенных (готовых) инструментов для выборки подобного рода; можно отбирать ячейки только по одному условию — по значению, находящемуся в них. Поэтому решение задачи получалось только одно — через VBA (пользовательские функции).
Прекрасное и готовое решение моей задачи я нашел на сайте http://www.excel-vba.ru/. Даже не одно, а целых два решения, под разные условия. Ниже привожу последовательность шагов, которые привели меня к успеху.
Сразу скажу, что изображения были сделаны в Excel 2007. В Excel 2010 все несколько по другому, но запутаться невозможно, если что.
Режим “Разработчик” в Excel
Первое, что нужно сделать — заставить Excel работать с пользовательскими функциями. Фактически, мы будем писать сценарий на языке VBA в Excel, но такая возможность по умолчанию отключена в этой программе. Включить ее можно следующим образом.
Переходим в “Пуск — Параметры Excel” и находим в левом списке пункт “Надстройки”:
Выбираем в основном окне строчку “Пакет анализа — VBA” и жмем кнопочку “Перейти” в самом низу окна. Откроется еще одно окошко со списком доступных под Excel расширений (надстроек). Снова выбираем в этом списке “Пакет анализа — VBA” и соглашаемся, что хотим установить его, нажав кнопку “ОК”:
Потребуется установочный диск с Microsoft Office на нем (или же подключение к Интернет) чтобы программа получила необходимые пакеты для инсталляции. Если установка прошла успешно, то в “Ленте” появиться пункт “Разработчик” (Excel 2010). Можно перейти в него через эту панель или же с помощью сочетания клавиш Alt + F11 .
Появиться окно, в котором выполняется написание кода на языке VBA, то есть фактически создаются пользовательские функции. Я писать их не буду, так как языка VBA не знаю и знать особого желания нет (все знать невозможно).
Вставка готовых функций в Excel VBA
Но есть готовые решения, которые я вставлю в виде кода с помощью меню “Insert — Module”. Просто берем отсюда код функций и вставляем в свой Excel. Затем сохраняем файл Excel с поддержкой VBA (макросов) и все готово для дальнейшей работы.
Вставленные функции появятся в списке формул таблицы:
Ниже представлен готовый код двух функций на VBA, написанных их автором Дмитрием Щербаковым. Первая функция с именем “CountByInteriorColor” выполняет подсчет количества ячеек по цвету заливки.
Вторая функция с именем “SumByInteriorColor” выполняет выборку ячеек по цвету заливки и суммирует все значения в этих ячейках.
Обе функции имеют одинаковый синтаксис и принимают три входных аргумента, первые два из которых обязательные, а третий — необязательный:
- — диапазон с ячейками для подсчета
- — ячейка-образец с цветом заливки
- — или учитывает скрытые ячейки; , или опущен(по умолчанию) — скрытые ячейки не подсчитываются.
Функция подсчета количества ячеек
Синтаксис этой функции прост:
Функция подсчета суммы ячеек
Синтаксис этой функции следующий:
При вставке пользовательской функции “CountByInteriorColor” и “SumByInteriorColor” можно воспользоваться либо “Мастером функций”, либо произвести указание диапазона ячеек и ячейку-критерий вручную.
Описание рабочей формулы
Готовый пример работы функции “CountByInteriorColor” можно посмотреть на рисунке “Табель выходов с зелеными ячейками”. В нем подсчет отработанного времени производится по следующей формуле:
Фактически эта формула получается такой (смотри строку №13 на рисунке):
Думаю, что больше сказать по поводу создания (точнее — вставки готового решения) пользовательских функций и способа выборки ячеек в таблице по цвету их заливки мне нечего.
Красивая функция trackBy
Пример красивой функции trackBy для Angular. Функция понравилась своей лаконичностью:<% highlight typescript %>public trackByNumber = (_. … Continue reading
Источник
Excel поиск ячеек одного цвета
Быстро найти все ячейки с определенным форматированием в Excel
Kutools for Excel
- Обзор
- Бесплатная загрузка
- Купить сейчас
- Учебники по функциям
- Что нового?
Чтобы найти и выделить все выделенные или не выделенные жирным шрифтом ячейки в выделении, на листе или в книге, выполните следующие действия:
1. Выделите ячейки, в которых вы хотите найти полужирные или не полужирные ячейки, а затем нажмите Кутулс > Найти> Супер находка, см. снимок экрана:
Функции: если вы хотите найти ячейки на листе или в книге, щелкните прямо Кутулс > Найти> Супер находка включить Супер находка функцию.
2. В Супер находка панели, выполните следующие операции:
(1.) Щелкните кнопка, чтобы активировать это Формат ячейки вариант;
(2.) Затем выберите одну область поиска из В раскрывающийся список, в данном случае я выбираю Выбор;
(3.) Затем выберите Жирные клетки or Нежирные ячейки в Тип выпадающий список по мере необходимости;
(4.) Затем щелкните Найдите кнопка для поиска всех указанных вами относительных ячеек;
(5.) Все определенные ячейки отображаются в списке, а затем в Выбрать по выпадающий список, выберите Клетки/Ряды/Колонны как вам нужно, и щелкните Выбрать кнопку, чтобы выделить их по ячейкам, рядам столбцов.
3. Затем все выделенные жирным или не жирным шрифтом ячейки были выбраны, как показано на следующем снимке экрана:
Эта опция также может помочь вам как можно быстрее найти все объединенные ячейки или определенные объединенные ячейки.
1. Выберите диапазон ячеек, в котором вы хотите найти все объединенные ячейки, а затем щелкните Кутулс > Найти> Супер находка для активации Супер находка панель.
2. В Супер находка панель, пожалуйста, сделайте следующее:
(1.) Щелкните кнопка, чтобы активировать это Формат ячейки вариант;
(2.) Затем выберите одну область поиска из раскрывающегося списка Внутри, в данном случае я выбираю Выбор;
(3.) Затем выберите Объединенные ячейки в Тип раскрывающийся список;
(4.) Затем щелкните Найдите кнопка для поиска всех объединенных ячеек;
(5.) Все объединенные ячейки отображаются в списке, затем выберите выбранный тип из Выбрать по в раскрывающемся списке и нажмите Выбрать кнопка для выбора относительных ячеек по ячейкам, строкам или столбцам.
3. Затем все объединенные ячейки выбранного диапазона были выбраны, как показано на следующем снимке экрана:
Внимание: С помощью этой опции вы также можете выбрать определенные объединенные ячейки. в Супер находка панели, установите флажок в Значение раздел, а затем введите значение, которое вы хотите узнать, и все объединенные ячейки с этим конкретным значением были найдены и выбраны, см. снимок экрана:
Если вам нужно найти и выбрать ячейки с определенным шрифтом или цветом фона, эта функция также может оказать вам услугу.
1. Выберите диапазон ячеек, в котором вы хотите найти все ячейки с определенным шрифтом или цветом фона, а затем щелкните Кутулс > Найдите > Супер находка для активации Супер находка панель.
2. В Супер находка панель, пожалуйста, сделайте следующее:
(1.) Щелкните кнопка, чтобы активировать это Формат ячейки вариант;
(2.) Затем выберите одну область поиска из раскрывающегося списка Внутри, в данном случае я выбираю Выбор;
(3.) Затем выберите Цвет шрифта or Фоновый цвет в Тип раскрывающийся список;
(4.) Продолжайте нажимать кнопка для выбора ячейки с определенным шрифтом или цветом фона, по которому вы хотите найти ячейки;
(5.) Затем щелкните Найдите кнопка для поиска во всех ячейках с определенным шрифтом или цветом фона;
(6.) Все ячейки с определенным цветом шрифта или цветом фона отображаются в поле списка, затем щелкните значок Выбрать кнопку, чтобы выбрать их после выбора одного типа выбора из Выбрать по выпадающий список.
3. И все ячейки с указанным шрифтом или цветом фона были найдены и выделены сразу, см. Снимок экрана:
Заметки:
1. Эта полезная функция также может помочь вам найти все ячейки с другим определенным форматированием, например ячейки курсивом, ячейки с зачеркиванием, ячейки с формулами, ячейки с комментариями и т. Д.
2. Супер находка панель можно изменять и перемещать по своему усмотрению.
Kutools for Excel: с более чем 300 удобными надстройками Excel, которые можно попробовать бесплатно без каких-либо ограничений в 30 дней. Загрузите и бесплатную пробную версию прямо сейчас!
Kutools for Excel
Описанная выше функциональность — лишь одна из 300 мощных функций Kutools for Excel.
Предназначен для Excel(Office) 2021, 2019, 2016, 2013, 2010, 2007 и Office 365. Бесплатно скачать и использовать в течение 60 дней.
Источник
0 / 0 / 0 Регистрация: 18.08.2014 Сообщений: 9 |
|
1 |
|
Поиск ячейки по цвету18.08.2014, 04:33. Показов 25918. Ответов 15
такой вопрос, как можно выполнить поиск ячейки по цвету? имеется лист на котором вразнобой есть желтые, зеленые и красные ячейки. поиск осуществляется по строкам начиная со 2й.
0 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,928 |
|
18.08.2014, 09:49 |
2 |
файл приложите. вручную напишите что и где должно получиться.
0 |
0 / 0 / 0 Регистрация: 18.08.2014 Сообщений: 9 |
|
18.08.2014, 15:38 [ТС] |
3 |
количество желтых зеленых и красных ячеек в одной строке не всегда одинаково и может различаться.
0 |
0 / 0 / 0 Регистрация: 18.08.2014 Сообщений: 9 |
|
20.08.2014, 19:51 [ТС] |
4 |
идей нет? Добавлено через 7 минут например количество непустых ячеек в строке, начиная с 7го стоолбца, делить на 3 (узнаем количество ячеек каждого цвета),
0 |
5942 / 3154 / 698 Регистрация: 23.11.2010 Сообщений: 10,524 |
|
20.08.2014, 20:46 |
5 |
По какому принципу происходит раскраска?
0 |
0 / 0 / 0 Регистрация: 18.08.2014 Сообщений: 9 |
|
21.08.2014, 20:29 [ТС] |
6 |
этот файл это результат действия некой программы. Так как в VB я полный 0 =) (возможно уже не полный, 3 дня его учу )) ), то написание кода идет медленно.
0 |
414 / 262 / 82 Регистрация: 27.10.2012 Сообщений: 860 |
|
21.08.2014, 21:14 |
7 |
Так если строку надо делить на 3 зачем тогда цвет?
0 |
Феррим 0 / 0 / 0 Регистрация: 18.08.2014 Сообщений: 9 |
||||
22.08.2014, 04:57 [ТС] |
8 |
|||
изначально планировал по цвету определять так как количество ячеек каждого цвета может быть разным (хотя в 90% случаев они одинаковы). Добавлено через 7 минут
конечно это не идеал , глобальный цикл еще не добавлен, пока что пытаюсь заставить его работать с 1й строкой. Добавлено через 11 минут заранее благодарен за ответ
0 |
kalbasiatka 414 / 262 / 82 Регистрация: 27.10.2012 Сообщений: 860 |
||||
22.08.2014, 09:05 |
9 |
|||
Сообщение было отмечено Феррим как решение Решение Можно и по цвету, но зачем?
1 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,928 |
|
22.08.2014, 09:09 |
10 |
Сообщение было отмечено Феррим как решение Решение
командой можно определить цвет ячейки Код Range("A1").Interior.Color
1 |
0 / 0 / 0 Регистрация: 18.08.2014 Сообщений: 9 |
|
23.08.2014, 01:56 [ТС] |
11 |
класс! засунуть все в массив там обработать и вывести на другой лист я не додумался ). Добавлено через 2 часа 16 минут
0 |
kalbasiatka 414 / 262 / 82 Регистрация: 27.10.2012 Сообщений: 860 |
||||
23.08.2014, 09:15 |
12 |
|||
У меня ошибка )
1 |
0 / 0 / 0 Регистрация: 18.08.2014 Сообщений: 9 |
|
23.08.2014, 17:49 [ТС] |
13 |
огромное спасибо!
0 |
414 / 262 / 82 Регистрация: 27.10.2012 Сообщений: 860 |
|
23.08.2014, 20:28 |
14 |
А зачем? ведь в итоге всегда 3 цветных колонки. Сразу их разрисовать и делов то.
0 |
0 / 0 / 0 Регистрация: 18.08.2014 Сообщений: 9 |
|
23.08.2014, 22:33 [ТС] |
15 |
иногда бывает что желтых в строке больше чем красных и зеленых (или наоборот), и тогда макрос неправильно разносит эту строку. В ручную это поправить не составит труда (таких строк 1 на тысячу), но без цвета (среди 5ти тысяч строк) найти это место несколько проблематично. Добавлено через 5 минут
0 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,928 |
|
24.08.2014, 17:36 |
16 |
что означает знак % после переменной в 3й строке? Символ определения типа
0 |
На работе столкнулся с такой задачей — имеется таблица в Excel, в которой ведется табель выходов рабочих в цеху.
В таблице подсчитывается количество часов, фактически отработанных; часов переработки и часов сверх нормы. Так вот, необходимо сделать так, чтобы производилась автоматическая выборка ячеек таблицы по цвету заливки последних.
То есть, нужно отобрать все ячейки с заливкой определенного цвета, подсчитать их количество; а затем применить к полученному значению определенные формулы.
Чтобы было понятнее, приведу изображение подобной таблицы. В ней необходимо произвести подсчет ячеек с заливкой зеленого цвета:
В Excel нет встроенных (готовых) инструментов для выборки подобного рода; можно отбирать ячейки только по одному условию — по значению, находящемуся в них. Поэтому решение задачи получалось только одно — через VBA (пользовательские функции).
Прекрасное и готовое решение моей задачи я нашел на сайте http://www.excel-vba.ru/. Даже не одно, а целых два решения, под разные условия. Ниже привожу последовательность шагов, которые привели меня к успеху.
Сразу скажу, что изображения были сделаны в Excel 2007. В Excel 2010 все несколько по другому, но запутаться невозможно, если что.
Первое, что нужно сделать — заставить Excel работать с пользовательскими функциями. Фактически, мы будем писать сценарий на языке VBA в Excel, но такая возможность по умолчанию отключена в этой программе. Включить ее можно следующим образом.
Переходим в “Пуск — Параметры Excel” и находим в левом списке пункт “Надстройки”:
Выбираем в основном окне строчку “Пакет анализа — VBA” и жмем кнопочку “Перейти” в самом низу окна. Откроется еще одно окошко со списком доступных под Excel расширений (надстроек). Снова выбираем в этом списке “Пакет анализа — VBA” и соглашаемся, что хотим установить его, нажав кнопку “ОК”:
Потребуется установочный диск с Microsoft Office на нем (или же подключение к Интернет) чтобы программа получила необходимые пакеты для инсталляции. Если установка прошла успешно, то в “Ленте” появиться пункт “Разработчик” (Excel 2010). Можно перейти в него через эту панель или же с помощью сочетания клавиш Alt + F11.
Появиться окно, в котором выполняется написание кода на языке VBA, то есть фактически создаются пользовательские функции. Я писать их не буду, так как языка VBA не знаю и знать особого желания нет (все знать невозможно).
Вставка готовых функций в Excel VBA
Но есть готовые решения, которые я вставлю в виде кода с помощью меню “Insert — Module”. Просто берем отсюда код функций и вставляем в свой Excel. Затем сохраняем файл Excel с поддержкой VBA (макросов) и все готово для дальнейшей работы.
Вставленные функции появятся в списке формул таблицы:
Ниже представлен готовый код двух функций на VBA, написанных их автором Дмитрием Щербаковым. Первая функция с именем “CountByInteriorColor” выполняет подсчет количества ячеек по цвету заливки.
Вторая функция с именем “SumByInteriorColor” выполняет выборку ячеек по цвету заливки и суммирует все значения в этих ячейках.
Обе функции имеют одинаковый синтаксис и принимают три входных аргумента, первые два из которых обязательные, а третий — необязательный:
— диапазон с ячейками для подсчета
1
rRange
— ячейка-образец с цветом заливки
1
rColorCell
—
1
bSumHide
1
ИСТИНА
1
1
1
ЛОЖЬ
1
0
Функция подсчета количества ячеек
'---------------------------------------------------------------------------------------
' Procedure : CountByInteriorColor
' Author : The_Prist(Щербаков Дмитрий)
' http://www.excel-vba.ru
' Purpose : Функция подсчета ячеек на основе цвета заливки.
' Аргументы:
' rRange - диапазон с ячейками для подсчета.
' rColorCell - ячейка-образец с цветом заливки.
' bSumHide - ИСТИНА или 1 учитывает скрытые ячейки.
' ЛОЖЬ, 0 или опущен(по умолчанию) - скрытые ячейки не подсчитываются.
'---------------------------------------------------------------------------------------
Function CountByInteriorColor(rRange As Range, rColorCell As Range, Optional bSumHide As Boolean = False)
Dim lColor As Long, rCell As Range, lCnt As Long, vVal
lColor = rColorCell.Interior.Color
For Each rCell In rRange
If rCell.Interior.Color = lColor Then
If rCell.EntireRow.Hidden Or rCell.EntireColumn.Hidden Then
If bSumHide Then lCnt = lCnt + 1
Else
lCnt = lCnt + 1
End If
End If
Next rCell
CountByInteriorColor = lCnt
End Function
Синтаксис этой функции прост:
=CountByInteriorColor(D8:AG8;$E$65)
Функция подсчета суммы ячеек
'---------------------------------------------------------------------------------------
' Procedure : SumByInteriorColor
' Author : The_Prist(Щербаков Дмитрий)
' http://www.excel-vba.ru
' Purpose : Функция суммирования ячеек на основе цвета заливки.
' Аргументы:
' rRange - диапазон с ячейками для суммирования.
' rColorCell - ячейка-образец с цветом заливки.
' bSumHide - ИСТИНА или 1 учитывает скрытые ячейки.
' ЛОЖЬ, 0 или опущен(по умолчанию) - скрытые ячейки не суммируются.
'---------------------------------------------------------------------------------------
Function SumByInteriorColor(rRange As Range, rColorCell As Range, Optional bSumHide As Boolean = False)
Dim lColor As Long, rCell As Range, dblSum As Double, vVal
lColor = rColorCell.Interior.Color
For Each rCell In rRange
If rCell.Interior.Color = lColor Then
vVal = rCell.Value
If IsNumeric(vVal) Then
If rCell.EntireRow.Hidden Or rCell.EntireColumn.Hidden Then
If bSumHide Then dblSum = dblSum + vVal
Else
dblSum = dblSum + vVal
End If
End If
End If
Next rCell
SumByInteriorColor = dblSum
End Function
Синтаксис этой функции следующий:
=SumByInteriorColor(D8:AG37;E63)
При вставке пользовательской функции “CountByInteriorColor” и “SumByInteriorColor” можно воспользоваться либо “Мастером функций”, либо произвести указание диапазона ячеек и ячейку-критерий вручную.
Описание рабочей формулы
Готовый пример работы функции “CountByInteriorColor” можно посмотреть на рисунке “Табель выходов с зелеными ячейками”. В нем подсчет отработанного времени производится по следующей формуле:
=((Сумма фактически отработанных часов) - (Норма часов выхода за месяц)) + ((Кол-во дней с переработкой)*4)
Фактически эта формула получается такой (смотри строку №13 на рисунке):
=(AH13-AI13) + (CountByInteriorColor(D13:AG13;$E$65)*4)
Думаю, что больше сказать по поводу создания (точнее — вставки готового решения) пользовательских функций и способа выборки ячеек в таблице по цвету их заливки мне нечего.