alexhorse Пользователь Сообщений: 43 |
Доброго времени суток. В оглавлении и описании изложил суть. Пол несколько часов пытался сам решить и в сети найти как это сделать без кучи дополнительных столбцов. Уже начинаю думать что это невозможно. Сложность в том что как искать только по месяцу с годом в дате?! |
БМВ Модератор Сообщений: 21385 Excel 2013, 2016 |
#2 26.02.2017 00:30:11 Может так?
Прикрепленные файлы
Изменено: БМВ — 26.02.2017 00:30:50 По вопросам из тем форума, личку не читаю. |
||
Пытливый Пользователь Сообщений: 4587 |
#3 26.02.2017 00:31:01 Здравствуйте.
потом протянуть вниз. Кому решение нужно — тот пример и рисует. |
||
gling Пользователь Сообщений: 4024 |
#4 26.02.2017 00:55:18 Здравствуйте. Или так, тоже Формула Массива
|
||
Ігор Гончаренко Пользователь Сообщений: 13746 |
#5 26.02.2017 02:19:48
Прикрепленные файлы
Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
||
jakim Пользователь Сообщений: 1947 |
#6 26.02.2017 11:46:48 Ещё две формулы
Прикрепленные файлы
|
||||
alexhorse Пользователь Сообщений: 43 |
Интересно. Я думал что формула ИНДЕКС с ПОИСКПОЗ не сработает, так как задать нужно месяц и год в формате даты, а искать-то будет в числовом формате )) Слушайте, это не поиск, а произведение искусства ))) Всем огромное благодарю Изменено: alexhorse — 26.02.2017 20:25:57 |
БМВ Модератор Сообщений: 21385 Excel 2013, 2016 |
Просто из любопытства, почему не подошел мой вариант? По вопросам из тем форума, личку не читаю. |
alexhorse Пользователь Сообщений: 43 |
БМВ,подошел. Я не писал что не подошел. Просто возился сам до того как написать на форум, и пытался что-то выдумать как раз с наиболее популярным вариантом пары функций ИНДЕКС и ПОИСКПОЗ. Я бы сказал, что Ваше решение самое оригинальное, никогда бы не додумался. Просто как-то привычнее и надежнее кажется ИНДЕС+ПОИСКПОЗ, читал что эта «парочка» стабильна и по ряду причин предпочтительнее ВПР и других вариантов… |
БМВ Модератор Сообщений: 21385 Excel 2013, 2016 |
#10 26.02.2017 20:46:08 ок, ну тогда добавлю, что если задача расширится до поиска например не цифрового значения, то добавляетя излюбленная комбинация ИНДЕС+ПОИСКПОЗ или ВПР
и получаем уже не сумму, а то что рядом. Прикрепленные файлы
По вопросам из тем форума, личку не читаю. |
||
Alexey Ko Пользователь Сообщений: 171 |
БМВ, как вы избавились от формулы в виде массива? потому что вместо этого А:А как весь столбец? |
БМВ Модератор Сообщений: 21385 Excel 2013, 2016 |
Я не избавлялcz, я сразу не использовал :-). Все три используемые функции работают со столбцами, и судя по всему там идет встроенное определение области с данными. (для собственых VBA функций предусматреть пересечение выбранного диапазона с UsedRange тоже не сложно), что позволяет не сильно думать о том, что расчет будет долгим при одинаковых даных. Изменено: БМВ — 27.02.2017 10:49:09 По вопросам из тем форума, личку не читаю. |
TimurOne Пользователь Сообщений: 1 |
#13 30.06.2020 18:24:05 Всем привет! |
Поиск значения по дате из массива |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Пусть имеется диапазон с датами. Найдем дату из этого диапазона, которая является ближайшей к заданной. Решение этой задачи аналогично решению, изложенного в статье
Поиск ЧИСЛА ближайшего к заданному
.
Пусть в диапазоне
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 хранит дату и время
), то формулы для поиска ближайшего числа также будут работать для дат (см. раздел
Ближайшее ЧИСЛО
).
Perform a lookup on dates and times in Excel: vlookup, hlookup, index/match, any kind of lookup.
This tutorial shows you how to accurately use a lookup function on dates/times. This is important because time can be very tricky in Excel and sometimes you get positive results mixed-in with hidden negative results.
The VLOOKUP() function will be used as the example but the important steps are the same for any lookup function or formula.
Sections:
Date/Time Lookup Problem
Steps to fix a Date/Time Lookup
Notes
Date/Time Lookup Problem
The problem is that dates and times in excel are stored as numbers and times are the decimal part of the number. (format any date as General to see this)
Since times are stored as decimals, it is easy to miss an error in them and, in fact, a couple numbers can be off and you will still get a time that looks like it should when you format it as a date.
Here are some examples:
Both dates/times look the same:
Change the format to General so we can see their number equivalents:
They still look the same!!!
Now, show a few more decimal places:
You can see they are not the same!
After the 8 in the first one, there is a zero, but there is a 3 after the 8 in the second one.
This is what causes very frustrating problems when performing lookups on dates/times and this is the problem that needs to be fixed.
Steps to fix a Date/Time Lookup
To make times work in lookups, we need to round them.
- Insert a new column to the left of the dates/times.
- Input =ROUND(B1,5) into cell A1:
B1 is the starting cell for the list of dates. - Copy the formula down by selecting the first cell, A1 and double-clicking the quick-fill handle in the lower right hand of the cell.
- Copy the new data.
- Select all of the old data and then hit Alt + E + S + V and Enter (it’s called paste special — values). Now, your old data will have been replaced with the new data and it will have been rounded to the 5th digit after the decimal point.
Then, delete the new column that you created with the ROUND() function.
This means that the date and time that you see will actually be the date and time that is stored.
But, we aren’t done yet! - The Vlookup function, or whichever lookup function you use, now needs to be adjusted to work with the rounded numbers.
Enter a normal Vlookup function BUT put ROUND(lookup_value,5) in for the lookup_value argument.
The ROUND part has been highlighted for you.
Without the ROUND function, the VLOOKUP function would have looked like this, with only D4 in for the lookup_value:
However, you must include the ROUND function or this will not work since we already rounded the date/time values in our list. - Now you have a working lookup on a table of dates and times.
If you want to test out the Vlookup with and without the ROUND function, try it on the 10:34 time; without ROUND, it returns «value 4» and with it, it returns «value 5».
Notes
Dates and times in Excel are often tricky to deal with. This tutorial focuses on cleaning date/time data so that you can use it in lookups. If you type all of your dates and times in Excel by hand, you probably won’t need this tutorial; however, if you import lots of date/time data into Excel, this tutorial will be a life-saver!
Download the sample file attached to this tutorial to see the examples in Excel.
Similar Content on TeachExcel
Convert Time to Minutes and Vice Versa in Excel
Tutorial: How to convert a time into minutes in Excel and also how to get minutes back into a time f…
Understanding Formulas and Functions in Excel
Tutorial: In this tutorial I will cover the basic concepts of Formulas and Functions in Excel.
A for…
Calculate the Difference Between Two Times in Excel
Tutorial:
Here, youll learn how to get the difference between two times in Excel.
A common example…
How to Resize Rows and Columns in Excel Quickly
Tutorial: Resizing rows and columns in Excel is an easy process. Simply left click in between the co…
How to Input, Edit, and manage Formulas and Functions in Excel
Tutorial: In this tutorial I am going to introduce how to input, edit and manage excel formulas. To …
Get the Number(s) Out of a Cell that Contains Both Text and Numbers in Excel — UDF
Macro: This free Excel UDF allows you to get the numbers out of a cell that contain both text…
Subscribe for Weekly Tutorials
BONUS: subscribe now to download our Top Tutorials Ebook!
Всем привет!
У меня почти такая же проблема что у Buchhalter:
есть диапазоны дат, есть также искомое значение (конкретная календарная дата). Надо определить конкретный диапазон дат, который содержит искомую календарную дату и получить значение ячейки напротив нужного диапазона.
напротив ячейки содержащую дату нужно ставить значение из массива. В моем случае это курс доллара на эту дату.
В приведенном примере у Buchhalter только два столбца с датами, а у меня их много.
Я пытался пользоваться формулой приведенной Все имена заняты, не получилось.
Во вложенном файле я указал два варианта:
Вариант 1 — в массиве, содержащую даты, указаны все даты периода
Вариант 2 — в массиве, содержащую даты, указаны только первая и последняя дата периода.
Какую формулу нужно применять в каждом из вариантов?
Пожалуйста, помогите разобраться с проблемой.