Добрый день. Пытаюсь написать формулу, которая вытащит значение из таблицы по номеру договора и на самую последнюю дату. т.е. имеются столбцы: №договора; дата значения; значение
Удалось найти максимальную дату по номеру договора =СУММПРОИЗВ(МАКС(($A$15:$A$336="№договора")*($B$15:$B$336))) т.о. остается узнать из какой строки тянется значение, сдвинуться на 1 столбец вправо и вытащить значение ячейки с этим адресом.
Однако, что-то не получается... вот, что набросал, для поиска адреса, но в данном случае формула почему-то возвращает адрес ячейки с более ранней датой по указанному договору. =АДРЕС(ПОИСКПОЗ(СУММПРОИЗВ(МАКС(($A$15:$A$336=C343)*($B$15:$B$336)));($B$15:$B$336);0);2;4)
что делать в 3-м шаге?
Возможно, есть решения и проще? По сути нужен ВПР, который возвратит не самое первое сверху значение, а самое последнее (только это не поможет, если даты будут указаны не в хронологическом порядке). Хотелось бы обойтись без формул массивов и без VBA.
Добрый день. Пытаюсь написать формулу, которая вытащит значение из таблицы по номеру договора и на самую последнюю дату. т.е. имеются столбцы: №договора; дата значения; значение
Удалось найти максимальную дату по номеру договора =СУММПРОИЗВ(МАКС(($A$15:$A$336="№договора")*($B$15:$B$336))) т.о. остается узнать из какой строки тянется значение, сдвинуться на 1 столбец вправо и вытащить значение ячейки с этим адресом.
Однако, что-то не получается... вот, что набросал, для поиска адреса, но в данном случае формула почему-то возвращает адрес ячейки с более ранней датой по указанному договору. =АДРЕС(ПОИСКПОЗ(СУММПРОИЗВ(МАКС(($A$15:$A$336=C343)*($B$15:$B$336)));($B$15:$B$336);0);2;4)
что делать в 3-м шаге?
Возможно, есть решения и проще? По сути нужен ВПР, который возвратит не самое первое сверху значение, а самое последнее (только это не поможет, если даты будут указаны не в хронологическом порядке). Хотелось бы обойтись без формул массивов и без VBA.BacR
Большое спасибо за оба ответа. Это то, что нужно, очень полезно и познавательно. Принцип работы второй формулы понятен. Все же, первая проще и буду использовать её, но прежде хотелось бы разобраться в принципе её работы. Простите за мою серость, конечно, но как она находит нужную дату? Здесь же идет привязка только к номеру договора "1/(A5:A326=A331)"? И что дает деление единицы на это условие?
Большое спасибо за оба ответа. Это то, что нужно, очень полезно и познавательно. Принцип работы второй формулы понятен. Все же, первая проще и буду использовать её, но прежде хотелось бы разобраться в принципе её работы. Простите за мою серость, конечно, но как она находит нужную дату? Здесь же идет привязка только к номеру договора "1/(A5:A326=A331)"? И что дает деление единицы на это условие?BacR
1. 1/(A5:A326=A331) дает массив из единиц и ошибок деления на ноль 2. В ПРОСМОТРе мы ищем число 2 в массиве из п.1. Конечно же, не находим и поэтому формула "запоминает" последнее (нижнее) значение из массива п.1, в котором есть неошибочное значение. 3. И выводит из массива дат соответствующую п.2 дату.
1. 1/(A5:A326=A331) дает массив из единиц и ошибок деления на ноль 2. В ПРОСМОТРе мы ищем число 2 в массиве из п.1. Конечно же, не находим и поэтому формула "запоминает" последнее (нижнее) значение из массива п.1, в котором есть неошибочное значение. 3. И выводит из массива дат соответствующую п.2 дату._Boroda_
т.е. если даты будут в хаотичном порядке, и последнее (нижнее) значение будет приходиться на более раннюю дату (не последнюю), то формула выдаст её значение? т.о. второй пример будет более исчерпывающим?
т.е. если даты будут в хаотичном порядке, и последнее (нижнее) значение будет приходиться на более раннюю дату (не последнюю), то формула выдаст её значение? т.о. второй пример будет более исчерпывающим?BacR
Пардон. МАКС в данном случае не работает. Перенес строку наверх и все равно возвращает значение самой нижней строчки... подставить СУММПРОИЗВ(МАКС(($A$15:$A$336="№договора")*($B$15:$B$336))) тоже не помогло (возвращает также последнее (нижнее) значение). _Boroda_ Ваша формула работает в обоих случаях, но нужно знать дату. Возможно ли внедрить вычисление нужной даты в Вашу указанную формулу? (максимальную дату не из всего списка, а именно по указанному договору)
Пардон. МАКС в данном случае не работает. Перенес строку наверх и все равно возвращает значение самой нижней строчки... подставить СУММПРОИЗВ(МАКС(($A$15:$A$336="№договора")*($B$15:$B$336))) тоже не помогло (возвращает также последнее (нижнее) значение). _Boroda_ Ваша формула работает в обоих случаях, но нужно знать дату. Возможно ли внедрить вычисление нужной даты в Вашу указанную формулу? (максимальную дату не из всего списка, а именно по указанному договору)BacR
Сообщение отредактировал BacR - Вторник, 20.05.2014, 14:11