Поиск по датам excel

 

alexhorse

Пользователь

Сообщений: 43
Регистрация: 11.02.2013

Доброго времени суток. В оглавлении и описании изложил суть. Пол несколько часов пытался сам решить и в сети найти как это сделать без кучи дополнительных столбцов. Уже начинаю думать что это невозможно. Сложность в том что как искать только по месяцу с годом в дате?!

 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

#2

26.02.2017 00:30:11

Может так?

Код
=SUMIFS(B:B;A:A;">"&EOMONTH(D3;-1);A:A;"<="&EOMONTH(D3;0))

Прикрепленные файлы

  • Copy of poisk_mesat_god.xls (27 КБ)

Изменено: БМВ26.02.2017 00:30:50

По вопросам из тем форума, личку не читаю.

 

Пытливый

Пользователь

Сообщений: 4587
Регистрация: 22.12.2012

#3

26.02.2017 00:31:01

Здравствуйте.
В F3 можно вот такую формулу массива (массива!!!)

Код
=ЕСЛИОШИБКА(ИНДЕКС($A$3:$B$13;ПОИСКПОЗ(МЕСЯЦ(D3)&ГОД(D3);МЕСЯЦ($A$3:$A$13)&ГОД($A$3:$A$13);0);2);"")

потом протянуть вниз.

Кому решение нужно — тот пример и рисует.

 

gling

Пользователь

Сообщений: 4024
Регистрация: 01.01.1970

#4

26.02.2017 00:55:18

Здравствуйте. Или так, тоже Формула Массива

Код
=ЕСЛИОШИБКА(ИНДЕКС($B$3:$B$13;ПОИСКПОЗ(ТЕКСТ(D3;"М.Г");ТЕКСТ($A$3:$A$13;"М.Г");));"")
 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#5

26.02.2017 02:19:48

Код
=ИНДЕКС(C2;ПОИСКПОЗ(ДАТА(ГОД(RC[-2]);ЦЕЛОЕ((МЕСЯЦ(RC[-2])-1)/3)*3+1;1);C1;))

Прикрепленные файлы

  • poisk_mesat_god.xls (22 КБ)

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

jakim

Пользователь

Сообщений: 1947
Регистрация: 01.03.2013

#6

26.02.2017 11:46:48

Ещё две формулы

Код
=MAX(INDEX(B$3:B$13*(YEAR(A$3:A$13)=YEAR(D3))*(MONTH(A$3:A$13)=MONTH(D3));0))
Код
=IFERROR(AGGREGATE(15;6;B$3:B$13/(YEAR(A$3:A$13)=YEAR(D3))/(MONTH(A$3:A$13)=MONTH(D3));1);"")

Прикрепленные файлы

  • poisk_mesat_god.xls (28 КБ)

 

alexhorse

Пользователь

Сообщений: 43
Регистрация: 11.02.2013

Интересно. Я думал что формула ИНДЕКС с ПОИСКПОЗ не сработает, так как задать нужно месяц и год в формате даты, а искать-то будет в числовом формате ))
спасибо за помощь

Слушайте, это не поиск, а произведение искусства ))) Всем огромное благодарю

Изменено: alexhorse26.02.2017 20:25:57

 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

Просто  из любопытства, почему не подошел мой вариант?

По вопросам из тем форума, личку не читаю.

 

alexhorse

Пользователь

Сообщений: 43
Регистрация: 11.02.2013

БМВ,подошел. Я не писал что не подошел. Просто возился сам до того как написать на форум, и пытался что-то выдумать как раз с наиболее популярным вариантом пары функций ИНДЕКС и ПОИСКПОЗ. Я бы сказал, что Ваше решение самое оригинальное, никогда бы не додумался. Просто как-то привычнее и надежнее кажется ИНДЕС+ПОИСКПОЗ, читал что эта «парочка» стабильна и по ряду причин предпочтительнее ВПР и других вариантов…

 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

#10

26.02.2017 20:46:08

ок, ну тогда добавлю, что если задача расширится до поиска например не цифрового значения, то добавляетя излюбленная комбинация  ИНДЕС+ПОИСКПОЗ или ВПР

Код
=IFERROR(INDEX(C:C;MATCH(SUMIFS(A:A;A:A;">"&EOMONTH(D3;-1);A:A;"<="&EOMONTH(D3;0));A:A);0);"-")

и получаем уже не сумму, а то что рядом.

Прикрепленные файлы

  • Copy of poisk_mesat_god.xls (28 КБ)

По вопросам из тем форума, личку не читаю.

 

Alexey Ko

Пользователь

Сообщений: 171
Регистрация: 01.01.1970

БМВ, как вы избавились от формулы в виде массива? потому что вместо этого А:А как весь столбец?

 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

Я не избавлялcz, я сразу не использовал :-).  Все три используемые функции работают со столбцами, и судя по всему там идет встроенное определение области с данными. (для собственых VBA функций предусматреть пересечение выбранного диапазона с UsedRange тоже не сложно), что позволяет не сильно думать о том, что расчет будет долгим при одинаковых даных.
Сумма — просто посчитает сумму по условию и исходя из уникальности это будет сумма равная единственному числу в столбце A. Далее ищем его позицию в столбце и смотрим что там в этой строке в другом столбце. Если просто заменить столбец на используемую область, нужно только скоррректировать что вернет MATCH с учетом первой строки данных.

Изменено: БМВ27.02.2017 10:49:09

По вопросам из тем форума, личку не читаю.

 

TimurOne

Пользователь

Сообщений: 1
Регистрация: 10.05.2020

#13

30.06.2020 18:24:05

Всем привет!
Можете подсказать, как узнать кол-во по месяцу и году с применением СЧЕТЕСЛИМН. Все пытаюсь, не получается.
=СЧЕТЕСЛИМН(ДИАПАЗОН_УСЛОВИЙ-1;УСЛОВИЕ-1;(ГОД(ДИАПАЗОН_ГОД);ГОД(УСЛОВИЕ-2);МЕСЯЦ(ДИАПАЗОН_МЕСЯЦ);МЕСЯЦ(УСЛОВИЕ-3)

Поиск значения по дате из массива

Adelante225

Дата: Четверг, 10.05.2018, 09:36 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Здравствуйте, прошу помощи. Ситуация: необходимо найти значение из таблицы на листе «индексы» по дате в столбце «Дата» на листе «1». Самостоятельно, к сожалению, составить формулу не получается.

К сообщению приложен файл:

3048029.xls
(36.5 Kb)

 

Ответить

sboy

Дата: Четверг, 10.05.2018, 09:41 |
Сообщение № 2

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2566


Репутация:

724

±

Замечаний:
0% ±


Excel 2010

Добрый день.

Код

=ИНДЕКС(индексы!$H$3:$AB$14;МЕСЯЦ(C7);ПОИСКПОЗ(ГОД(C7);индексы!$H$2:$AB$2;))

К сообщению приложен файл:

7606122.xls
(38.0 Kb)


Яндекс: 410016850021169

 

Ответить

_Boroda_

Дата: Четверг, 10.05.2018, 09:42 |
Сообщение № 3

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Самое простое на мой взгляд

Код

=СУММПРОИЗВ((ГОД(C7)=индексы!H$2:AB$2)*(ТЕКСТ(C7;»ММММ»)=индексы!G$3:G$14)*индексы!H$3:AB$14)

Или вот еще

Код

=ГПР(ГОД(C7);индексы!H$2:AB$14;МЕСЯЦ(C7)+1;)


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Adelante225

Дата: Четверг, 10.05.2018, 09:48 |
Сообщение № 4

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

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

 

Ответить


Пусть имеется диапазон с датами. Найдем дату из этого диапазона, которая является ближайшей к заданной. Решение этой задачи аналогично решению, изложенного в статье

Поиск ЧИСЛА ближайшего к заданному

.

Пусть в диапазоне

A4:A12

имеется список дат. Будем в нем искать дату из ячейки

С4

. Если диапазон не содержит искомого значения, то будет возвращено ближайшее значение.

Искомая дата необязательно должна совпадать с какой-нибудь датой или даже находиться в диапазоне поиска (см.

Файл примера

):


Решение


Результат поиска


Примечание

=

ВПР(C4;A4:A12;1;ИСТИНА)

=

ПРОСМОТР(C4;A4:A12;A4:A12)

ищется наибольшее значение, которое меньше, чем искомое значение (если искомая дата меньше, чем минимальное значение из диапазона, то будет возвращена ошибка #Н/Д)

если столбец не отсортирован по возрастанию, то результат непредсказуем

=

ИНДЕКС(A4:A12; ПОИСКПОЗ(МИН(ABS(A4:A12-C4));ABS(A4:A12-C4);0))

ищется

ближайшая

к критерию дата (если обнаружено 2 ближайших числа (одно больше, другое меньше критерия), то выводится то, которое расположено выше (номер строки меньше))

столбец м.б. не отсортирован

=

ИНДЕКС(A4:A12; ПОИСКПОЗ(МАКС(ЕСЛИ(A4:A12<=C4;A4:A12;»»)); $A$4:$A$12;0);1)

ищется

наибольшее значение, которое меньше

, чем искомое значение (если искомая дата меньше, чем минимальное значение из диапазона, то будет возвращена ошибка #Н/Д)

столбец м.б. не отсортирован

=

ИНДЕКС(A4:A12; ПОИСКПОЗ(МИН(ЕСЛИ(A4:A12>=C4;A4:A12;»»)); $A$4:$A$12;0);1)

ищется

наименьшее значение, которое больше

, чем искомое значение (если искомая дата больше, чем максимальное значение из диапазона, то будет возвращена ошибка #Н/Д)

столбец м.б. не отсортирован

=

МАКС(ЕСЛИ(МИН(ABS(A4:A12-C4))=ABS(A4:A12-C4);A4:A12;МИН(A4:A12)))

ищется

ближайшая

к критерию дата (если обнаружено 2 ближайших числа (одно больше, другое меньше критерия), то выводится то, которое больше

столбец м.б. не отсортирован

=

МИН(ЕСЛИ(МИН(ABS(A4:A12-C4))=ABS(A4:A12-C4);A4:A12;МАКС(A4:A12)))

ищется

ближайшая

к критерию дата (если обнаружено 2 ближайших числа (одно больше, другое меньше критерия), то выводится то, которое меньше

столбец м.б. не отсортирован

Последние 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.

  1. Insert a new column to the left of the dates/times.
  2. Input =ROUND(B1,5) into cell A1:

    B1 is the starting cell for the list of dates.
  3. 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.
  4. Copy the new data.
  5. 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!
  6. 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.
  7. 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 — в массиве, содержащую даты, указаны только первая и последняя дата периода.

Какую формулу нужно применять в каждом из вариантов?

Пожалуйста, помогите разобраться с проблемой.

Like this post? Please share to your friends:
  • Поиск по горизонтали excel
  • Поиск по гиперссылкам гиперссылок excel
  • Поиск по выпадающему списку в excel vba
  • Поиск по выпавшему списку в excel
  • Поиск по выделенному тексту word