Страницы: 1
RSS
Формула поиска: отображать названия на пересечении данных
 
Уважаемые знатоки, я уже обращался с подобным вопросом, но там как мне казалось проблема была решена.
В процессе тестирования, оказалось, что я все таки не так понял. в старую тему писать не стал, потому что там о другом был вопрос, и создаю новую.
как вы можете увидеть в приложенном файле примере, на листе "Основной", есть таблица заполняемая человеком. там есть проверка, которая показывает пересечения, и все работает отлично (спасибо старой теме).
так же есть лист "Сетка_Место", где рисуется все то что внесено в основную таблицу.
и все было бы здорово и отлично, но вдруг обнаружился неприятный баг, который я совершенно не знаю как победить.
если вдруг на одно и тоже место, поставить одно и тоже время (или даже просто пересекающиеся), при этом ставить разные числа, то с точки зрения логики и проверки - все нормально. но на листе "Сетка_Место", это вдруг перестает рисоваться.
ЧТО, ЧТО, ЧТО я сделал не так?
 
Не зная предыдущей темы, трудно понять, что вы хотите получить.
Кто в теме - помогите автору сформулировать, чего он хочет.
 
vikttur, мне казалось, что это я предельно подробно описал.
я хочу что бы при выборе даты, в графике (условно назовем его календарь) который находится на листе "Сетка_место" на пересечении времени и места отображались названия (сейчас обозначенные словами "пример х")
далее описана уже выявленная проблема: что если вдруг на одном месте, в одно и тоже время, НО в разные даты стоят задания, то в сетке это не отображается.
вероятно, у меня не правильно составлена формула, но что именно я делаю не так, мне не понятно.
Прошу помощи в разборе этой проблемы.
 
Код
=ЕСЛИОШИБКА(ИНДЕКС(Рабочая_график[Название МК];ЕСЛИОШИБКА(1/(1/СУММПРОИЗВ((Рабочая_график[Место]=$A4)*($A$3=Рабочая_график[Дата])*(Рабочая_график[Время нач.]<=B$3)*(Рабочая_график[Время кон.]>=B$3);СТРОКА(Рабочая_график[Время нач.])-1));НД()));"")
F1 творит чудеса
 
в формулах СУММПРОИЗВ(...) не учтена была дата
Неизлечимых болезней нет, есть неизлечимые люди.
 
Максим Зеленский, будьте добры, подскажите пожалуйста, а что делает конструкция НД() в конце формулы?
 
в любом случае, спасибо всем ответившим, и так работает и сяк работает!!!
 
Цитата
sanden написал: а что делает конструкция НД() в конце формулы?
это я немного перестарался, масло масляное.
можно сократить:
Код
=ЕСЛИОШИБКА(ИНДЕКС(Рабочая_график[Название МК];1/(1/СУММПРОИЗВ((Рабочая_график[Место]=$A4)*($A$3=Рабочая_график[Дата])*(Рабочая_график[Время нач.]<=B$3)*(Рабочая_график[Время кон.]>=B$3);СТРОКА(Рабочая_график[Время нач.])-1)));"")

Проблема с этой ошибкой в следующем: если ни одно условие не удовлетворяет отборам, то СУММПРОИЗВ=0. И уже ИНДЕКС с аргументом номера строки 0 возвращает весь диапазон, а не одну строку из него, в итоге вся формула неверные данные выводит. Соответственно, надо заставить формулу считать, что СУММПРОИЗВ=0 нам не подходит. Можно через ЕСЛИ, но это удлинняет формулу почти в 2 раза: ЕСЛИ(СУММПРОИЗВ=0;ошибка;СУММПРОИЗВ)
Можно сделать немного проще: формула 1/(1/СУММПРОИЗВ(...)) в случае, если СУММПРОИЗВ=0, даст нам ошибку деления на 0, в итоге ИНДЕКС тоже даст ошибку, и мы поставим пустую строку в ячейку.
F1 творит чудеса
 
Максим Зеленский, а как бы сделать так, что бы формула выдавала не пустое значение, а ноль? или как то по другому можно настроить условное форматирование, что бы засвечивались непустые ячейки.
з.ы. разобрался, поставить 0 вместо "" в первой "еслиошибка"
Изменено: sanden - 09.04.2015 13:22:55
Страницы: 1
Наверх