Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Возвратить значение из таблицы по №дог. На последнюю дату - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Возвратить значение из таблицы по №дог. На последнюю дату
BacR Дата: Вторник, 20.05.2014, 11:32 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Пытаюсь написать формулу, которая вытащит значение из таблицы по номеру договора и на самую последнюю дату.
т.е. имеются столбцы:
№договора; дата значения; значение

Удалось найти максимальную дату по номеру договора
=СУММПРОИЗВ(МАКС(($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.
К сообщению приложен файл: 7010385.xlsx (20.0 Kb)
 
Ответить
СообщениеДобрый день.
Пытаюсь написать формулу, которая вытащит значение из таблицы по номеру договора и на самую последнюю дату.
т.е. имеются столбцы:
№договора; дата значения; значение

Удалось найти максимальную дату по номеру договора
=СУММПРОИЗВ(МАКС(($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
Дата добавления - 20.05.2014 в 11:32
_Boroda_ Дата: Вторник, 20.05.2014, 11:42 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16803
Репутация: 6559 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Так нужно?
Код
=ПРОСМОТР(2;1/(A5:A326=A331);C5:C326)

Кстати, для даты просто поменяйте в формуле столбец С на В
К сообщению приложен файл: 7010385_1.xlsx (19.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
Код
=ПРОСМОТР(2;1/(A5:A326=A331);C5:C326)

Кстати, для даты просто поменяйте в формуле столбец С на В

Автор - _Boroda_
Дата добавления - 20.05.2014 в 11:42
китин Дата: Вторник, 20.05.2014, 11:46 | Сообщение № 3
Группа: Модераторы
Ранг: Экселист
Сообщений: 7031
Репутация: 1079 ±
Замечаний: 0% ±

Excel 2007;2010;2016
можно так (правда массивная)
Код
=ИНДЕКС($A$5:$C$326;ПОИСКПОЗ($A$331&$B$330;$A$5:$A$326&$B$5:$B$326;0);3)
[offtop]люблю же я усложнять :'(


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852


Сообщение отредактировал китин - Вторник, 20.05.2014, 11:48
 
Ответить
Сообщениеможно так (правда массивная)
Код
=ИНДЕКС($A$5:$C$326;ПОИСКПОЗ($A$331&$B$330;$A$5:$A$326&$B$5:$B$326;0);3)
[offtop]люблю же я усложнять :'(

Автор - китин
Дата добавления - 20.05.2014 в 11:46
BacR Дата: Вторник, 20.05.2014, 13:03 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Большое спасибо за оба ответа. Это то, что нужно, очень полезно и познавательно.
Принцип работы второй формулы понятен.
Все же, первая проще и буду использовать её, но прежде хотелось бы разобраться в принципе её работы.
Простите за мою серость, конечно, но как она находит нужную дату? Здесь же идет привязка только к номеру договора "1/(A5:A326=A331)"? И что дает деление единицы на это условие?
 
Ответить
СообщениеБольшое спасибо за оба ответа. Это то, что нужно, очень полезно и познавательно.
Принцип работы второй формулы понятен.
Все же, первая проще и буду использовать её, но прежде хотелось бы разобраться в принципе её работы.
Простите за мою серость, конечно, но как она находит нужную дату? Здесь же идет привязка только к номеру договора "1/(A5:A326=A331)"? И что дает деление единицы на это условие?

Автор - BacR
Дата добавления - 20.05.2014 в 13:03
_Boroda_ Дата: Вторник, 20.05.2014, 13:12 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16803
Репутация: 6559 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
1. 1/(A5:A326=A331) дает массив из единиц и ошибок деления на ноль
2. В ПРОСМОТРе мы ищем число 2 в массиве из п.1. Конечно же, не находим и поэтому формула "запоминает" последнее (нижнее) значение из массива п.1, в котором есть неошибочное значение.
3. И выводит из массива дат соответствующую п.2 дату.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение1. 1/(A5:A326=A331) дает массив из единиц и ошибок деления на ноль
2. В ПРОСМОТРе мы ищем число 2 в массиве из п.1. Конечно же, не находим и поэтому формула "запоминает" последнее (нижнее) значение из массива п.1, в котором есть неошибочное значение.
3. И выводит из массива дат соответствующую п.2 дату.

Автор - _Boroda_
Дата добавления - 20.05.2014 в 13:12
BacR Дата: Вторник, 20.05.2014, 13:20 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
т.е. если даты будут в хаотичном порядке, и последнее (нижнее) значение будет приходиться на более раннюю дату (не последнюю), то формула выдаст её значение? т.о. второй пример будет более исчерпывающим?
 
Ответить
Сообщениет.е. если даты будут в хаотичном порядке, и последнее (нижнее) значение будет приходиться на более раннюю дату (не последнюю), то формула выдаст её значение? т.о. второй пример будет более исчерпывающим?

Автор - BacR
Дата добавления - 20.05.2014 в 13:20
_Boroda_ Дата: Вторник, 20.05.2014, 13:39 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 16803
Репутация: 6559 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
В таком виде - да. Но можно переписать немного
Код
=ПРОСМОТР(2;1/(A5:A326=A331)/(B5:B326=B330);C5:C326)
, где в B331 - посчитанная дата


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВ таком виде - да. Но можно переписать немного
Код
=ПРОСМОТР(2;1/(A5:A326=A331)/(B5:B326=B330);C5:C326)
, где в B331 - посчитанная дата

Автор - _Boroda_
Дата добавления - 20.05.2014 в 13:39
BacR Дата: Вторник, 20.05.2014, 13:47 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Т.к. дата заранее неизвестна и нужна последняя, подставил МАКС, теперь то, что нужно.
=ПРОСМОТР(2;1/(A5:A326=A331)/МАКС(B5:B326);C5:C326)

Огромное спасибо.
 
Ответить
СообщениеТ.к. дата заранее неизвестна и нужна последняя, подставил МАКС, теперь то, что нужно.
=ПРОСМОТР(2;1/(A5:A326=A331)/МАКС(B5:B326);C5:C326)

Огромное спасибо.

Автор - BacR
Дата добавления - 20.05.2014 в 13:47
BacR Дата: Вторник, 20.05.2014, 14:06 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Пардон.
МАКС в данном случае не работает. Перенес строку наверх и все равно возвращает значение самой нижней строчки... подставить СУММПРОИЗВ(МАКС(($A$15:$A$336="№договора")*($B$15:$B$336))) тоже не помогло (возвращает также последнее (нижнее) значение).
_Boroda_ Ваша формула работает в обоих случаях, но нужно знать дату. Возможно ли внедрить вычисление нужной даты в Вашу указанную формулу?
(максимальную дату не из всего списка, а именно по указанному договору)


Сообщение отредактировал BacR - Вторник, 20.05.2014, 14:11
 
Ответить
СообщениеПардон.
МАКС в данном случае не работает. Перенес строку наверх и все равно возвращает значение самой нижней строчки... подставить СУММПРОИЗВ(МАКС(($A$15:$A$336="№договора")*($B$15:$B$336))) тоже не помогло (возвращает также последнее (нижнее) значение).
_Boroda_ Ваша формула работает в обоих случаях, но нужно знать дату. Возможно ли внедрить вычисление нужной даты в Вашу указанную формулу?
(максимальную дату не из всего списка, а именно по указанному договору)

Автор - BacR
Дата добавления - 20.05.2014 в 14:06
BacR Дата: Вторник, 20.05.2014, 14:35 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Заработало
=ПРОСМОТР(2;1/(A5:A326=A331)/(B5:B326=СУММПРОИЗВ(МАКС(($A$15:$A$326=A331)*($B$15:$B$326))));C5:C326)
hands
 
Ответить
СообщениеЗаработало
=ПРОСМОТР(2;1/(A5:A326=A331)/(B5:B326=СУММПРОИЗВ(МАКС(($A$15:$A$326=A331)*($B$15:$B$326))));C5:C326)
hands

Автор - BacR
Дата добавления - 20.05.2014 в 14:35
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!