Показать сообщение отдельно
Старый 28.05.2010, 10:20   #13  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Thumbs up Формула массива в Excel
Цитата:
Сообщение от Андре Посмотреть сообщение
Значит можно попробовать сгруппировать все цвета по вхождению в них корней наиболее распространенных 7-8 цветов: "син", "красн", "зел", "черн", "бел" ..
Идея мне очень понравилась. Поэтому в дополнение к своим тезисам о сортировках в Excel предлагаю формулу массива, которую следует ввести в ячейку B1 (название цвета предполагается в A1). И в этой ячейки отобразится название "базового" цвета. При вводе следует использовать комбинацию клавиш Shift+Ctrl+Enter (а не просто Enter). После ввода формулы в B1 ее можно распространить на другие ячейки колонки B обычным копированием:

Формула массива ищет 14 цветов, которые мне пришли в голову: "радуга" + еще несколько. При желании список легко расширяем. Привожу версию формулы в английской и русской версии Excel (установленный разделитель списка - запятая):
Код:
=CHOOSE( MIN( IF( NOT( ISERR( SEARCH(
{"кра","ора","жел","зел","гол","син","фио","бел","сер","чер","кор","беж","роз","сир"},
A1))),{1,2,3,4,5,6,7,8,9,10,11,12,13,14},9999)),
"красный","оранжевый","желтый","зеленый","голубой","синий","фиолетовый","белый","серый","черный","коричневый","бежевый","розовый","сиреневый")

=ВЫБОР( МИН( ЕСЛИ( НЕ( ЕОШ( ПОИСК(
{"кра";"ора";"жел";"зел";"гол";"син";"фио";"бел";"сер";"чер";"кор";"беж";"роз";"сир"},
A1))),{1;2;3;4;5;6;7;8;9;10;11;12;13;14},9999)),
"красный","оранжевый","желтый","зеленый","голубой","синий","фиолетовый","белый","серый","черный","коричневый","бежевый","розовый","сиреневый")
Для удобства визуального восприятия я вставил пробелы и добавил переносы строк.

Чтобы не париться с ручным вводом (а также с выяснением региональных настроек), прилагаю файл, в котором эта формула уже введена (см. ячейки колонки B). Обратите внимание, что 4 последних строки - по желанию заказчика Также обратите внимание, что "синекрасный" цвет детектируется как "красный", так как "кра" находится левее в списке выбора.

P.S. А для ситуации, когда в одной ячейке встречаются два базовых цвета ("син" и "кра" - в синекрасном), предлагается сигнальная формула в ячейке C1, подсчитывающая кол-во базовых цветов. В подавляющем большинстве значением будет 1. А на значения больше 1 надо будет обратить повышенное внимание (файл Excel обновил).
Код:
=СУММ( ЕСЛИ( НЕ( ЕОШ( ПОИСК(
{"кра";"ора";"жел";"зел";"гол";"син";"фио";"бел";"сер";"чер";"кор";"беж";"роз";"сир"},
A1))),1,0))
Благодаря этой второй формуле заметил, что формулы можно ввести и как обычные (не массива). Дело в том, что когда я эти формулы конструировал, то промежуточные варианты требовали "массивный" ввод. Но поскольку в окончательных версиях появились агрегирующие функции МИН и СУММ, возвращающие одно значение, то необходимость в массиве отпала Т.е. можно вводить, нажимая просто Enter.
Вложения
Тип файла: xls ColorFormula.xls (37.5 Кб, 182 просмотров)

Последний раз редактировалось Gustav; 28.05.2010 в 12:13.
За это сообщение автора поблагодарили: Андре (2), Just_smile (1).