Всем привет!
У меня почти такая же проблема что у Buchhalter:
есть диапазоны дат, есть также искомое значение (конкретная календарная дата). Надо определить конкретный диапазон дат, который содержит искомую календарную дату и получить значение ячейки напротив нужного диапазона.
напротив ячейки содержащую дату нужно ставить значение из массива. В моем случае это курс доллара на эту дату.
В приведенном примере у Buchhalter только два столбца с датами, а у меня их много.
Я пытался пользоваться формулой приведенной Все имена заняты, не получилось.
Во вложенном файле я указал два варианта:
Вариант 1 — в массиве, содержащую даты, указаны все даты периода
Вариант 2 — в массиве, содержащую даты, указаны только первая и последняя дата периода.
Какую формулу нужно применять в каждом из вариантов?
Пожалуйста, помогите разобраться с проблемой.
Пусть имеется диапазон с датами. Найдем дату из этого диапазона, которая является ближайшей к заданной. Решение этой задачи аналогично решению, изложенного в статье
Поиск ЧИСЛА ближайшего к заданному
.
Пусть в диапазоне
A4:A12
имеется список дат. Будем в нем искать дату из ячейки
С4
. Если диапазон не содержит искомого значения, то будет возвращено ближайшее значение.
Искомая дата необязательно должна совпадать с какой-нибудь датой или даже находиться в диапазоне поиска (см.
Файл примера
):
|
|
|
=
= |
ищется наибольшее значение, которое меньше, чем искомое значение (если искомая дата меньше, чем минимальное значение из диапазона, то будет возвращена ошибка #Н/Д) |
если столбец не отсортирован по возрастанию, то результат непредсказуем |
= |
ищется |
столбец м.б. не отсортирован |
= |
ищется |
столбец м.б. не отсортирован |
= |
ищется |
столбец м.б. не отсортирован |
= |
ищется |
столбец м.б. не отсортирован |
= |
ищется |
столбец м.б. не отсортирован |
Последние 5 решений реализованы с использованием
формул массива
. Для пошагового просмотра хода вычислений используйте клавишу
F9
.
Как видно из таблицы, применение функции
ВПР()
со значением аргумента
интервальный_просмотр
равным ИСТИНА, имеет недостатки. Во-первых, найденное значение м.б. далеко не ближайшим (задав в качестве критерия дату 06.02.2009 получим не ближайшую дату 07.02.2009, а наибольшее значение, которое меньше, чем искомое значение, т.е. 05.01.2009). Во-вторых, если искомая дата меньше, чем минимальное значение из диапазона, то будет возвращена ошибка #Н/Д. В-третьих, требуется
сортировка
списка, что не всегда удобно.
Хорошим решением является
формула массива
=ИНДЕКС(A4:A12; ПОИСКПОЗ(МИН(ABS(A4:A12-C4));ABS(A4:A12-C4);0))
свободная от всех указанных недостатков, но имеющая свои: формула относительно сложная и является
формулой массива
.
Совет
: т.к. дата в MS EXCEL хранится в числовом виде (см. статью
Как Excel хранит дату и время
), то формулы для поиска ближайшего числа также будут работать для дат (см. раздел
Ближайшее ЧИСЛО
).
Rommeo Пользователь Сообщений: 6 |
Всем привет. Очень нужна помощь в обработке массива данных. Есть база данных обращений клиентов за услугами. Есть столбцы А — дата покупки, B — ID клиента, C — услуга Надо высчитать: Заранее огромное спасибо! Прикрепленные файлы
Изменено: Rommeo — 08.12.2019 17:55:32 |
Юрий М Модератор Сообщений: 60586 Контакты см. в профиле |
|
Lefevr Пользователь Сообщений: 119 |
Rommeo, сколько это будет стоить?) … в этом мире не лжет, потому что не в состоянии, только одна вещь, и это — математика. |
Rommeo Пользователь Сообщений: 6 |
#4 08.06.2017 14:51:45
Ну как база.. таблица =)) Данный просто собрать пришлось из разных источников.
оО |
||||
Юрий М Модератор Сообщений: 60586 Контакты см. в профиле |
Rommeo, я вот о чём: Вы зашли на форум, ни «привета» от Вас нет, ни просьбы — только «есть» и «надо». А с таким подходом — Вам правильно Lefevr подсказывает — в платный раздел прямая дорога )) |
Rommeo Пользователь Сообщений: 6 |
#6 08.06.2017 15:02:21
Сори =) Да, подправил пост. Как-то на работе уж очень закрутился =) и.. ВСЕМ ПРИВЕТ! =) |
||
Юрий М Модератор Сообщений: 60586 Контакты см. в профиле |
#7 08.06.2017 15:06:38
Если с «первым» разом всё понятно, то как понять «прошлый» раз? В названии темы звучит «предпоследний» — это понятно, а «прошлый» — это что? |
||
Rommeo Пользователь Сообщений: 6 |
#8 08.06.2017 15:13:25
В этом столбце надо показать, когда клиент совершал предыдущую покупку. К примеру клиент № 9 совершал покупку 3 раза. 01.янв, 25 янв и 30.янв. Я как-то поиском все нигде не могу найти как это правильно общитать. С первым столбцом тут наверно будет через =МАКС. Но вот что дальше у меня что-то ход мыслей останавливается! Спасибо! |
||
Юрий М Модератор Сообщений: 60586 Контакты см. в профиле |
#9 08.06.2017 15:18:52 А как же быть с этим?
По названию темы получается, что нужно найти первую и предпоследнюю даты. И всё. |
||
Rommeo Пользователь Сообщений: 6 |
Ну если считать из примера выше — то 25.янв будет предпоследняя дата покупки относительно всех трех покупок. Если считать относительно покупки совершенной 30.янв — то это будет предыдущая покупка. Как тогда тут правильнее описать это в теме? Предпоследняя или предыдущая? Ведь обсчитывать нужно каждую покупку клиента относительно всех предыдущих дат. Изменено: Rommeo — 08.06.2017 15:26:24 |
Юрий М Модератор Сообщений: 60586 Контакты см. в профиле |
#11 08.06.2017 15:35:34
Представьте, что 5 покупок. Если разговор про предпоследнюю, то на выходе должно получиться всего 2 значения: первая покупка и предпоследняя. Никаких промежуточных. |
||
Kuzmich Пользователь Сообщений: 7998 |
#12 08.06.2017 15:47:01
В вашем примере клиент № 9 совершал покупки 09.01.2013 , 28.02.2013 и 08.07.2013
Какая дата имеется в виду? |
||||
Юрий М Модератор Сообщений: 60586 Контакты см. в профиле |
Кузьмич, если исходить из #8, то должны получиться даты: |
jakim Пользователь Сообщений: 1947 |
Если есть возможность, воспользуйтесь функцией АГРЕГАТ. |
Kuzmich Пользователь Сообщений: 7998 |
Для клиента №9 три покупки |
АlехМ Пользователь Сообщений: 1100 |
Первая покупка формула массива |
Rommeo Пользователь Сообщений: 6 |
Кнопка цитирования не для ответа [МОДЕРАТОР] УИИИ!!! Все работает!! Огромное СПАСИБО!!! |
colonel Пользователь Сообщений: 45 |
Приветствую всех! Дабы не плодить тем, напишу здесь, поскольку мой кейс очень сильно похож с предыдущим и имеет, видимо, похожее решение. 1) Есть массив данных: имена мастеров и даты проведения ими осмотров оборудования. Даты не разбросаны хаотично, а отсортированы по возрастанию. От предыдущей задачи отличие в том, что мне не нужно определять даты предыдущего осмотра для каждого из осмотров в таблице. Для каждого из мастеров нужно найти: а) дату последнего осмотра до заданной даты Пожалуйста, подскажите решение или в каком направлении двигаться. 2) Здесь же озвучу другой вопрос, связанный с этими мастерами. График их визитов ведется в Google Docs. Через Power Query я вытягиваю даты и в Excel они все оказываются на 1462 дня больше (на 5 лет). Даты идут в нормальном порядке, по возрастанию, но все увеличены. В Google Docs отображаются корректно. Есть ли идеи за счет чего это может происходить? Изменено: colonel — 08.12.2019 16:58:27 |
БМВ Модератор Сообщений: 21385 Excel 2013, 2016 |
Два варианта во вложении. По вопросам из тем форума, личку не читаю. |
colonel Пользователь Сообщений: 45 |
БМВ, благодарю за быстрый ответ. Кажется, Ваше решение не учитывает ячейку Е1. Где нужно указывать дату относительно которой ищется последний и предпоследний осмотр. |
БМВ Модератор Сообщений: 21385 Excel 2013, 2016 |
colonel, если кажется, то надо проверить. По вопросам из тем форума, личку не читаю. |
colonel Пользователь Сообщений: 45 |
БМВ, прошу извинить) My fault. Я завтыкал, что у меня везде 2015 год, а в Е1 я на автомате вносил даты 2019 года. Не взглянете ли еще на вторую часть вопроса? Я подредактировал свой начальный пост. |
БМВ Модератор Сообщений: 21385 Excel 2013, 2016 |
#23 08.12.2019 17:44:09
Поросите Николая отредактировать правила и тогда ….. По вопросам из тем форума, личку не читаю. |
||
colonel Пользователь Сообщений: 45 |
#24 08.12.2019 17:54:41 БМВ, сейчас пороюсь в поиске и создам новую, если ничего не найду. Большое спасибо за помощь. |
Совет: Попробуйте использовать новые функции ПРОСМОТРX и XMATCH, а также улучшенные версии функций, описанные в этой статье. Эти новые функции работают в любом направлении и возвращают точные совпадения по умолчанию, что упрощает и упрощает работу с ними по сравнению с предшественниками.
Предположим, у вас есть список номеров офисов, и вам нужно знать, какие сотрудники работают в каждом из них. Таблица очень угрюмая, поэтому, возможно, вам кажется, что это сложная задача. С функцией подытов на самом деле это довольно просто.
Функции ВВ., а также ИНДЕКС и ВЫБОРПОЗ — одни из самых полезных функций в Excel.
Примечание: Мастер подметок больше не доступен в Excel.
Ниже в качестве примера по выбору вы можете найти пример использования в этой области.
=ВПР(B2;C2:E7,3,ИСТИНА)
В этом примере B2 является первым аргументом —элементом данных, который требуется для работы функции. В случае СРОТ ВЛ.В.ОВ этот первый аргумент является искомой значением. Этот аргумент может быть ссылкой на ячейку или фиксированным значением, таким как «кузьмина» или 21 000. Вторым аргументом является диапазон ячеек C2–:E7, в котором нужно найти и найти значение. Третий аргумент — это столбец в диапазоне ячеек, содержащий ищите значение.
Четвертый аргумент необязателен. Введите истина или ЛОЖЬ. Если ввести ИСТИНА или оставить аргумент пустым, функция возвращает приблизительное совпадение значения, указанного в качестве первого аргумента. Если ввести ЛОЖЬ, функция будет соответствовать значению, заведомо первому аргументу. Другими словами, если оставить четвертый аргумент пустым или ввести ИСТИНА, это обеспечивает большую гибкость.
В этом примере показано, как работает функция. При вводе значения в ячейку B2 (первый аргумент) в результате поиска в ячейках диапазона C2:E7 (2-й аргумент) выполняется поиск в ней и возвращается ближайшее приблизительное совпадение из третьего столбца в диапазоне — столбца E (третий аргумент).
Четвертый аргумент пуст, поэтому функция возвращает приблизительное совпадение. Иначе потребуется ввести одно из значений в столбец C или D, чтобы получить какой-либо результат.
Если вы хорошо разучились работать с функцией ВГТ.В.В., то в равной степени использовать ее будет легко. Вы вводите те же аргументы, но выполняется поиск в строках, а не в столбцах.
Использование индекса и MATCH вместо ВРОТ
При использовании функции ВПРАВО существует ряд ограничений, которые действуют только при использовании функции ВПРАВО. Это означает, что столбец, содержащий и look up, всегда должен быть расположен слева от столбца, содержащего возвращаемого значения. Теперь, если ваша таблица не построена таким образом, не используйте В ПРОСМОТР. Используйте вместо этого сочетание функций ИНДЕКС и MATCH.
В данном примере представлен небольшой список, в котором искомое значение (Воронеж) не находится в крайнем левом столбце. Поэтому мы не можем использовать функцию ВПР. Для поиска значения «Воронеж» в диапазоне B1:B11 будет использоваться функция ПОИСКПОЗ. Оно найдено в строке 4. Затем функция ИНДЕКС использует это значение в качестве аргумента поиска и находит численность населения Воронежа в четвертом столбце (столбец D). Использованная формула показана в ячейке A14.
Дополнительные примеры использования индексов и MATCH вместо В ПРОСМОТР см. в статье билла Https://www.mrexcel.com/excel-tips/excel-vlookup-index-match/ Билла Джилена (Bill Jelen), MVP корпорации Майкрософт.
Попробуйте попрактиковаться
Если вы хотите поэкспериментировать с функциями подытовки, прежде чем попробовать их с собственными данными, вот примеры данных.
Пример работы с ВЛОКОНПОМ
Скопируйте следующие данные в пустую таблицу.
Совет: Прежде чем врезать данные в Excel, установите для столбцов A–C ширину в 250 пикселей и нажмите кнопку «Перенос текста» (вкладка «Главная», группа «Выравнивание»).
Плотность |
Вязкость |
Температура |
0,457 |
3,55 |
500 |
0,525 |
3,25 |
400 |
0,606 |
2,93 |
300 |
0,675 |
2,75 |
250 |
0,746 |
2,57 |
200 |
0,835 |
2,38 |
150 |
0,946 |
2,17 |
100 |
1,09 |
1,95 |
50 |
1,29 |
1,71 |
0 |
Формула |
Описание |
Результат |
=ВПР(1,A2:C10,2) |
Используя приблизительное соответствие, функция ищет в столбце A значение 1, находит наибольшее значение, которое меньше или равняется 1 и составляет 0,946, а затем возвращает значение из столбца B в той же строке. |
2,17 |
=ВПР(1,A2:C10,3,ИСТИНА) |
Используя приблизительное соответствие, функция ищет в столбце A значение 1, находит наибольшее значение, которое меньше или равняется 1 и составляет 0,946, а затем возвращает значение из столбца C в той же строке. |
100 |
=ВПР(0,7,A2:C10,3,ЛОЖЬ) |
Используя точное соответствие, функция ищет в столбце A значение 0,7. Поскольку точного соответствия нет, возвращается сообщение об ошибке. |
#Н/Д |
=ВПР(0,1,A2:C10,2,ИСТИНА) |
Используя приблизительное соответствие, функция ищет в столбце A значение 0,1. Поскольку 0,1 меньше наименьшего значения в столбце A, возвращается сообщение об ошибке. |
#Н/Д |
=ВПР(2,A2:C10,2,ИСТИНА) |
Используя приблизительное соответствие, функция ищет в столбце A значение 2, находит наибольшее значение, которое меньше или равняется 2 и составляет 1,29, а затем возвращает значение из столбца B в той же строке. |
1,71 |
Пример ГВ.Г.В.В.
Скопируйте всю таблицу и вставьте ее в ячейку A1 пустого листа Excel.
Совет: Прежде чем врезать данные в Excel, установите для столбцов A–C ширину в 250 пикселей и нажмите кнопку «Перенос текста» (вкладка «Главная», группа «Выравнивание»).
Оси |
Подшипники |
Болты |
4 |
4 |
9 |
5 |
7 |
10 |
6 |
8 |
11 |
Формула |
Описание |
Результат |
=ГПР(«Оси»;A1:C4;2;ИСТИНА) |
Поиск слова «Оси» в строке 1 и возврат значения из строки 2, находящейся в том же столбце (столбец A). |
4 |
=ГПР(«Подшипники»;A1:C4;3;ЛОЖЬ) |
Поиск слова «Подшипники» в строке 1 и возврат значения из строки 3, находящейся в том же столбце (столбец B). |
7 |
=ГПР(«П»;A1:C4;3;ИСТИНА) |
Поиск буквы «П» в строке 1 и возврат значения из строки 3, находящейся в том же столбце. Так как «П» найти не удалось, возвращается ближайшее из меньших значений: «Оси» (в столбце A). |
5 |
=ГПР(«Болты»;A1:C4;4) |
Поиск слова «Болты» в строке 1 и возврат значения из строки 4, находящейся в том же столбце (столбец C). |
11 |
=ГПР(3;{1;2;3:»a»;»b»;»c»;»d»;»e»;»f»};2;ИСТИНА) |
Поиск числа 3 в трех строках константы массива и возврат значения из строки 2 того же (в данном случае — третьего) столбца. Константа массива содержит три строки значений, разделенных точкой с запятой (;). Так как «c» было найдено в строке 2 того же столбца, что и 3, возвращается «c». |
c |
Примеры индекса и match
В последнем примере функции ИНДЕКС и MATCH совместно возвращают номер счета с наиболее ранней датой и соответствующую дату для каждого из пяти городов. Так как дата возвращается как число, для ее формата используется функция ТЕКСТ. Функция ИНДЕКС использует результат, возвращенный функцией ПОИСКПОЗ, как аргумент. Сочетание функций ИНДЕКС и ПОИСКПОЗ используется в каждой формуле дважды — сперва для возврата номера счета, а затем для возврата даты.
Скопируйте всю таблицу и вставьте ее в ячейку A1 пустого листа Excel.
Совет: Перед тем как вировать данные в Excel, установите для столбцов A–D ширину в 250 пикселей и нажмите кнопку «Перенос текста» (вкладка «Главная», группа «Выравнивание»).
Счет |
Город |
Дата выставления счета |
Счет с самой ранней датой по городу, с датой |
3115 |
Казань |
07.04.12 |
=»Казань = «&ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Казань»,$B$2:$B$33,0),1)& «, Дата выставления счета: » & ТЕКСТ(ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Казань»,$B$2:$B$33,0),3),»m/d/yy») |
3137 |
Казань |
09.04.12 |
=»Орел = «&ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Орел»,$B$2:$B$33,0),1)& «, Дата выставления счета: » & ТЕКСТ(ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Орел»,$B$2:$B$33,0),3),»m/d/yy») |
3154 |
Казань |
11.04.12 |
=»Челябинск = «&ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Челябинск»,$B$2:$B$33,0),1)& «, Дата выставления счета: » & ТЕКСТ(ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Челябинск»,$B$2:$B$33,0),3),»m/d/yy») |
3191 |
Казань |
21.04.12 |
=»Нижний Новгород = «&ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Нижний Новгород»,$B$2:$B$33,0),1)& «, Дата выставления счета: » & ТЕКСТ(ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Нижний Новгород»,$B$2:$B$33,0),3),»m/d/yy») |
3293 |
Казань |
25.04.12 |
=»Москва = «&ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Москва»,$B$2:$B$33,0),1)& «, Дата выставления счета: » & ТЕКСТ(ИНДЕКС($A$2:$C$33,ПОИСКПОЗ(«Москва»,$B$2:$B$33,0),3),»m/d/yy») |
3331 |
Казань |
27.04.12 |
|
3350 |
Казань |
28.04.12 |
|
3390 |
Казань |
01.05.12 |
|
3441 |
Казань |
02.05.12 |
|
3517 |
Казань |
08.05.12 |
|
3124 |
Орел |
09.04.12 |
|
3155 |
Орел |
11.04.12 |
|
3177 |
Орел |
19.04.12 |
|
3357 |
Орел |
28.04.12 |
|
3492 |
Орел |
06.05.12 |
|
3316 |
Челябинск |
25.04.12 |
|
3346 |
Челябинск |
28.04.12 |
|
3372 |
Челябинск |
01.05.12 |
|
3414 |
Челябинск |
01.05.12 |
|
3451 |
Челябинск |
02.05.12 |
|
3467 |
Челябинск |
02.05.12 |
|
3474 |
Челябинск |
04.05.12 |
|
3490 |
Челябинск |
05.05.12 |
|
3503 |
Челябинск |
08.05.12 |
|
3151 |
Нижний Новгород |
09.04.12 |
|
3438 |
Нижний Новгород |
02.05.12 |
|
3471 |
Нижний Новгород |
04.05.12 |
|
3160 |
Москва |
18.04.12 |
|
3328 |
Москва |
26.04.12 |
|
3368 |
Москва |
29.04.12 |
|
3420 |
Москва |
01.05.12 |
|
3501 |
Москва |
06.05.12 |
Поиск значения по дате из массива |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |