VicKos
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Тоже попробовал убрать второе условие с проверкой на слово "преподаватель" и добавил проверку "наставник" в столбце РОЛЬ1 =ЕСЛИОШИБКА(ПРОСМОТР(2;1/(([@Кафедра]=тНаставники[Кафедра])*(ИЛИ(тНаставники[Роль 1]="наставник";тНаставники[Роль 2]="наставник")));тНаставники[Преподаватель]);"") Но почему то такая формула выдаёт неверный результат - в кафедру физики упорно лепит Филкина, а должен быть Кузнецов (Хотя, правильно - проверку на "преподавателя" я же убрал, поэтому на ассистента формула не обращает внимания). При этом на других кафедрах результат правильный. Что то тут некорректно именно с функцией ИЛИ. Добавлено: Сначала пробовал рассуждать так: Код: Если в качестве примера взять предыдущий файл со страницы 52 и попробовать применить к формуле kimtan`а новое условие "Наставник может стоять в столбце РОЛЬ1 или РОЛЬ2 и заведомо не известно в каком", рассмотрим старую формулу: =ЕСЛИОШИБКА(ПРОСМОТР(2;1/(([@Кафедра]=тНаставники[Кафедра])*(тНаставники[Роль 1]="преподаватель")*(тНаставники[Роль 2]="наставник"));тНаставники[Преподаватель]);"") Условие 1 - ([@Кафедра]=тНаставники[Кафедра]) Условие 2 - (тНаставники[Роль 1]="преподаватель") Условие 3 - (тНаставники[Роль 2]="наставник") Результат работы формулы берётся из строки таблицы, в которой выполняются все три условия - (1*1*1=1). В тех строках, где хотя бы одно условие не выполняется, - результат произведения условий будет равен 0 (0*1*1=0). Если слово "наставник" может находиться не только в столбце [Роль 2], но и в столбце [Роль 1], тогда следует уточнить условия поиска: Условие 3 - (ИЛИ(тНаставники[Роль 1]="наставник");(тНаставники[Роль 2]="наставник")) НО! В Условии 2 формула уже проверяла столбец [Роль 1] на наличие слова "преподаватель" и, если там вместо "преподаватель" будет "наставник", то Условие 2 окажется невыполненным. Значит, необходимо изменить и Условие 2: Условие 2 - (ИЛИ(тНаставники[Роль 1]="преподаватель");(тНаставники[Роль 1]="наставник")) Формула с новыми условиями: =ЕСЛИОШИБКА(ПРОСМОТР(2;1/(([@Кафедра]=тНаставники[Кафедра])*(ИЛИ(тНаставники[Роль 1]="преподаватель");(тНаставники[Роль 1]="наставник"))*(ИЛИ(тНаставники[Роль 1]="наставник");(тНаставники[Роль 2]="наставник")));тНаставники[Преподаватель]);"") | Тоже ничего не получилось, неверный результат. ================================= Вот так вроде работает: =ЕСЛИОШИБКА(ПРОСМОТР(2;1/(([@Кафедра]=тНаставники[Кафедра])*(тНаставники[Роль 1]="наставник"));тНаставники[Преподаватель]);ЕСЛИОШИБКА(ПРОСМОТР(2;1/(([@Кафедра]=тНаставники[Кафедра])*(тНаставники[Роль 1]="преподаватель")*(тНаставники[Роль 2]="наставник"));тНаставники[Преподаватель]);"")) если "наставник" случайно попал в столбец [Роль 1], его найдёт первая половина формулы (не обращая внимания на значение во втором стобце), а если нет, то вторая половина по столбцу [Роль 2]. | Всего записей: 44 | Зарегистр. 28-07-2010 | Отправлено: 15:56 10-06-2011 | Исправлено: VicKos, 18:00 10-06-2011 |
|