Новости:

Из правил форума: Тема должна отражать суть вопроса, топики типа "help please" будут удаляться!

Главное меню

циклический расчет и фильтрация

Автор Александр Крамер, 06.01.2019, 16:19

« назад - далее »

Александр Крамер

Добрый день, дамы и господа! Есть файл, ниже прилагаю. Нужно на основе удовлетворения нескольких условий выводить в ячейке определенный буквенный код (примерная формула прописана в ячейке R3, будет понятно, что хочу). Суть в том, будет много строк, меняющихся вручную, записей (поле пометил светло синим). Нужно, чтобы формула в ячейке R3 проверяла условие для "AY" в строках выделенных светло синим, потом проверяла условие для другого буквенного кода и таких кодов будет порядка 20. При удовлетворении условия происходит вывод буквенного кода и срабатывает условное_форматирование. Ексель позволяет сделать только 64 вложения, для моей задачи этого мало (если использовать "если"). Может кто-то подскажет вариант с применением другой функции (если есть такой вариант). Понимаю, что это задача больше для циклов VBA, но моих знаний недостаточно, поэтому прошу помочь решить эту проблему с помощью формулы.

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

Надеюсь все доходчиво объяснил, очень нужна помощь, заранее спасибо!

boa

Очень тяжело понять логику ваших расчетов
Попробуйте вот такую формулу массива (считает в 4-й строке)
=ЕСЛИ(И(R2C>=R3C2:R31C2;R2C<=R3C3:R31C3;RC17>=R3C14:R31C14;RC17<=R3C15:R31C15);
               ЕСЛИ(R3C1:R31C1="AY";"AY";
                            ЕСЛИ(R3C1:R31C1="CZ";"CZ"; ""));"")

Кстати, может для вашей логики нужна и не массивная функция (считает в 3-й строке).
Ну и немножко привел в читабельный вид вашу формулу в 5-й строке.
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Александр Крамер

#2
Цитата: boa от 06.01.2019, 18:02
Очень тяжело понять логику ваших расчетов

Спасибо за ответ! Немного не понял, как там с массивами, плохо в них разбираюсь. Логика следующая: То, что выделено светло синим - там информация, которая будет меняться (Колонки B и С номера ресурсов, колонки N и O это время начала и окончания использования ресурсов) . Колонка Q это временная шкала. С R2 по АА2 шкала ресурсов, которые могут быть заняты (если условие срабатывает и ячейки окрашиваются). Колонки с D по M в данном случае не нужны.
Теперь к процессу. Буквенные аббревиатуры, это коды авиакомпаний. Я забиваю код авиакомпании (кол. А), проставляю диапазон ресурсов на которых авиакомпания будет обслуживаться (кол.В и С), следом я указываю временной интервал (кол. N и O) в течении которого эти ресурсы будут заняты. На выходе я хочу, чтобы появлялось графическое отображение  времени занятости ресурсов (цветные прямоугольники в правой части). Соответственно формула в каждой ячейка должна пробегать по строкам в голубом диапазоне и при выполнении всех условий окрашивала ячейку. 

boa

Почему у вас в 3 и 4-й строке одинаковые данные с разными названиями компаний?  (кол. А)
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Александр Крамер

Цитата: boa от 06.01.2019, 18:56
Почему у вас в 3 и 4-й строке одинаковые данные с разными названиями компаний?  (кол. А)

Извините, наверно ввел Вас в заблуждение этим, данные там будут отличаться. Это я так на скорую руку. В каждой строке будут разные и время и задействованные ресурсы. Так же авиакомпании могут повторяться, так как могут летать несколько раз в сутки.

Александр Крамер

Вот что я хочу получить. Тут я все вручную расставил. Дальше я все усложню и будет еще фильтр дней недели и прочее, но вот основу надо, с чего оттолкнуться.

boa

Тогда так (опять же формула массива)
{=ЕСЛИОШИБКА(ИНДЕКС(R3C1:R31C1;НАИБОЛЬШИЙ(
(R2C>=R3C2:R31C2)*
(R2C<=R3C3:R31C3)*
(RC17>=R3C14:R31C14)*
(RC17<=R3C15:R31C15)*
СТРОКА(R3C1:R31C1);1)-2);"")}
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Александр Крамер

Цитата: boa от 07.01.2019, 13:29
Тогда так (опять же формула массива)
{=ЕСЛИОШИБКА(ИНДЕКС(R3C1:R31C1;НАИБОЛЬШИЙ(
(R2C>=R3C2:R31C2)*
(R2C<=R3C3:R31C3)*
(RC17>=R3C14:R31C14)*
(RC17<=R3C15:R31C15)*
СТРОКА(R3C1:R31C1);1)-2);"")}


Спасибо большое очень помогли. А нельзя как то так сделать, чтобы в диапазоне (цветном) была надпись только в одной ячейке, остальные скрывались?

boa

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

Александр Крамер

Не знаю, чтобы я без вас делал) Спасибо огромное! Вы мне очень помогли!