У меня Excel 2007, следовательно МАКСЕСЛИМН нет, и хотелось бы реализовать наиболее корректно поиск ставки сотрудника, а так же изменение её простым добавлением строки.
Есть лист Сотрудники Фамилия Имя, Дата изменения ставки, Ставка при этом фамилия сотрудника в столбце может повторяться с другой датой при изменении ставки
на втором листе Зарплата идет список Дата, время работы, ставка
в зависимости от колонки Дата на листе Зарплата - из таблицы сотрудников колонка Ставка должна получать значение ставки, которая предшествовала (или равна) дате изменения этой ставки.
Сейчас я делаю это функцией =НАИБОЛЬШИЙ(ЕСЛИ(Сотрудники!A:A=C5;Сотрудники!D:D);ЕСЛИ(G5;2;1)) и Ctrl=Shift+Enter но при 500 заполненых строках эта таблица дико тормозит (оно и понятно) кроме того не работает если в интервале было три ставки
и скопировать её в остальные ячейки колонки H. А из столбцов F и G удалите формулы. Считать должно правильно для любого количества изменений ставок внутри интервала (единственное, если на листе "Сотрудники" для какого-то сотрудника для какой-то даты будет задвоение, т.е. будут указаны две ставки, то формула выдаст значение, которое стоит в таблице первым). Для 500 строчек тормоза конечно есть, но я бы не назвал их дикими. Если у Вас таблица на листе "Сотрудники" выходит за 2000ю строку, поставьте в формуле вместо 2000 то кол-во строк, какое вам надо.
Если бы на листе "Сотрудники" записи для каждого сотрудника были бы упорядочены по возрастанию по дате в колонке B, то можно было бы попробовать формулу:
А для ускорения лучше использовать строго заданный диапазон без пустых строк. Например сделать "умную таблицу" и ссылаться на её колонки. В этом случае формулам не придётся лазить по ненужным строкам и всё будет работать быстрее.
Попробовал формулу с ПРОСМОТРом (заменил в формуле ссылки на столбцы целиком на ссылки на заполненную часть листа, т.е. вместо А:А поставил A$2:A$2000 и тд). На 500 записях на листе "Время работы" и 2000 записях на листе "Сотрудники" выигрыш в скорости по сравнению с формулой массива есть, но едва заметный.