Последняя дата и связанные с ней данные

Автор СветланаМ, 9 сентября 2015, 14:37

0 Пользователи и 1 гость просматривают эту тему.

СветланаМ

Не пинайте сильно, я только учусь!
Осваиваю разные формулы, уже несколько дней бьюсь, ничего не выходит.
На одном листе есть список товаров. На другом листе ведется учет покупок - когда, сколько и по какой цене делались покупки. Понятно, что один и тот же товар может покупаться в разные дни по разной цене. И я хочу, чтобы в списке товаров отображалась дата последней покупки данного товара и цена. Но никак у меня это не получается сделать.
Файл во вложении, нужно, чтобы автоматически заполнялись столбцы "Дата" и "Цена" на листе "Товары"
Помогите, пожалуйста!

JohnSUN

Добро пожаловать на форум!
Если покупка делалась дважды в один и тот же день, но по разным ценам, отображаем большую из них? Например, для Хлеб 12.01.15 я внёс ещё одну строку с ценой 14 - цена в Товары тоже отобразится 14.

Как работают эти формулы?
Произведение диапазона на условие
$Покупки.$A$3:$A$31*($Покупки.$B$3:$B$31=A3)
даст массив
{01.01.2015, 0, 03.01.2015, 0, 0, 06.01.2015, 0, 0, 0, 0, 0, 12.01.2015, 0, 0, 0, 12.01.2015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} Просто каждая дата из колонки A умножается на результат сравнения товара в колонке B с названием товара в ячейке A3 (Хлеб). Совпало название? Результат сравнения TRUE (единица). Не совпало? Результат FALSE(ноль). И очередная дата множится на эти ноль или единицу.
Функция LARGE() выберет из этого массива самое большое значение - 12.01.2015
Можно было бы записать вся формулу чуть короче, просто как формулу массива (ввод таких формул нужно заканчивать не просто Enter, а Ctrl+Shift+Enter)
{=LARGE($Покупки.$A$3:$A$31*($Покупки.$B$3:$B$31=A3);1)}
Чтобы не связываться с формулой массива, можем просто "обернуть" результат в функцию SUMPRODUCT()

Очень похоже отыскиваем цену. Произведение
$Покупки.$D$3:$D$31*($Покупки.$B$3:$B$31=A3)*($Покупки.$A$3:$A$31=C3)
даст массив
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
Функция MAX() выбирает из всех этих значений максимальное, а функция SUMPRODUCT() избавляет нас от необходимости нажимать Ctrl+Shift+Enter
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

rami

Может быть лучший вариант — использовать Сводную таблицу? Один раз всё настроить, а потом только обновлять одним щелчком. Правда цену придется вычислять не в сводной таблице, а по формуле сбоку. И цветные украшения и объединённые ячейки лучше не использовать. см. пример:

СветланаМ

JohnSUN, спасибо огромное за такую оперативную помощь! (кнопочку "спасибо" не  нашла) Это именно то, что я и мучилась сделать. Только я и последнюю дату пыталась искать функцией MAX на все лады :o Отдельная благодарность за подробное и понятное разъяснение логики работы этих формул, многое сразу стало понятным.

rami, за Ваш пример тоже спасибо, правда, с ним я пока еще до конца не разобралась. Но разберусь обязательно. Пока же мне все-таки лучше те формулы, что дал JohnSUN. Мой файл - это ведь просто абстрактный урок, мне надо было понять принцип и логику построения таких формул, где надо найти в списке одной таблицы какую-то запись по условию, и взять из соответствующей строки нужные данные в другую таблицу.