Новости:

Теперь на форум можно залогиниться / зарегистрироваться с помощью ВКонтакте. Уже существующие пользователи могут связать свою учетную запись с аккаунтом ВКонтакте одним кликом в профиле пользователя http://forum.msexcel.ru/index.php?action=profile;area=account

Главное меню

ВПР по условиям

Автор Shadowmaker, 16.09.2014, 14:42

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

Shadowmaker

Есть файл со списком сотрудников и рядом параметров привязанным к этим сотрудникам (должности, даты вступления в должность и т.п.) Нужно на отдельном листе этого файла подставить должность, соответствующую определённой дате.

Например:
ФИО                                   / Должность / дата назначения
Иванов Василий Батькович / МП             / 20.03.2010
Иванов Василий Батькович / КАМ           / 20.03.2012
Иванов Василий Батькович / РМ             / 20.03.2014

На отдельном листе должно получиться:
состояние на: 01.07.2013
Иванов Василий Батькович / КАМ

vikttur

Тема названа неправильно. ВПР тут не пойдет.
Файл вместо Вас рисовать?

cheshiki1

#2
файл пример в студию.
ИЛИ
ВПР ищет по первому столбцу. Так что или столбец с датами переносите в начало или смотрите в сторону ИНДЕКС(столбец фамилий;ПОИСКПОЗ(дата;столбец с датами;1)) - даты должны быть отсортированы по возрастанию.
название темы должно отражать суть вопроса

vikttur

Цитироватьили столбец с датами переносите в начало
Вряд ли поможет. Сотрудник не один, пересечения дат неизбежны.
Без примера данных в файле (то, что в сообщении - не пример: непонятно, как расположены разные фамилии между собой, какой порядок дат...) нечего гадать.

IKor

Несмотря на то, что я согласен с необходимостью публикации более подробных примеров, я рискну предложить решение в первом приближении.
Цитата: vikttur от 16.09.2014, 15:00
Вряд ли поможет. Сотрудник не один, пересечения дат неизбежны.
На мой взгляд важно лишь отсортировать таблицу по возрастанию по столбцу дат...

Shadowmaker

Файл приложил - собственно в нём в жёлтой ячейке и должна быть искомая формула...

vikttur

формула массива (Ctrl+Shift+Enter)
=ИНДЕКС(Данные!B2:B26;МАКС(ЕСЛИ(Данные!A2:A26=A2;ЕСЛИ(Данные!C2:C26<=B1;СТРОКА(2:26)-1))))
Уберите на листе с формулой двоеточие возле ФИО

IKor

В приципе подойдет и обыяная не массивная формула поиска последнего вхождения заданного ФИО в диапазоне, ограниченном снизу заданной датой
=ПРОСМОТР(2;1/(СМЕЩ(Данные!$A$1;1;0;ЕСЛИОШИБКА(ПОИСКПОЗ(B1;Данные!$C$2:$C$26;1);СЧЁТЗ(Данные!$C$2:$C$26));1)=Лист1!A2);Данные!$B$2:$B$26)
НО таблица все-таки должна быть отсортирована по возрастанию дат.

Функция возвращает ошибку, если задать дату ранее первого вхождения заданного ФИО - поэтому требуется обработка, например:
=ЕСЛИОШИБКА(...;A2&" на указанную дату еще не вступил в должность")

Shadowmaker

Спасибо, разобрался насколько смог. Отсортировать лист по датам конечно же можно. Обработку ошибки догадался включить сам - там действительно попадаются такие кто не был принят на работу на ту дату.