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 Всем привет! |
Для работы с датами в Excel в разделе с функциями определена категория «Дата и время». Рассмотрим наиболее распространенные функции в этой категории.
Как Excel обрабатывает время
Программа Excel «воспринимает» дату и время как обычное число. Электронная таблица преобразует подобные данные, приравнивая сутки к единице. В результате значение времени представляет собой долю от единицы. К примеру, 12.00 – это 0,5.
Значение даты электронная таблица преобразует в число, равное количеству дней от 1 января 1900 года (так решили разработчики) до заданной даты. Например, при преобразовании даты 13.04.1987 получается число 31880. То есть от 1.01.1900 прошло 31 880 дней.
Этот принцип лежит в основе расчетов временных данных. Чтобы найти количество дней между двумя датами, достаточно от более позднего временного периода отнять более ранний.
Пример функции ДАТА
Построение значение даты, составляя его из отдельных элементов-чисел.
Синтаксис: год; месяц, день.
Все аргументы обязательные. Их можно задать числами или ссылками на ячейки с соответствующими числовыми данными: для года – от 1900 до 9999; для месяца – от 1 до 12; для дня – от 1 до 31.
Если для аргумента «День» задать большее число (чем количество дней в указанном месяце), то лишние дни перейдут на следующий месяц. Например, указав для декабря 32 дня, получим в результате 1 января.
Пример использования функции:
Зададим большее количество дней для июня:
Примеры использования в качестве аргументов ссылок на ячейки:
Функция РАЗНДАТ в Excel
Возвращает разницу между двумя датами.
Аргументы:
- начальная дата;
- конечная дата;
- код, обозначающий единицы подсчета (дни, месяцы, годы и др.).
Способы измерения интервалов между заданными датами:
- для отображения результата в днях – «d»;
- в месяцах – «m»;
- в годах – «y»;
- в месяцах без учета лет – «ym»;
- в днях без учета месяцев и лет – «md»;
- в днях без учета лет – «yd».
В некоторых версиях Excel при использовании последних двух аргументов («md», «yd») функция может выдать ошибочное значение. Лучше применять альтернативные формулы.
Примеры действия функции РАЗНДАТ:
В версии Excel 2007 данной функции нет в справочнике, но она работает. Хотя результаты лучше проверять, т.к. возможны огрехи.
Функция ГОД в Excel
Возвращает год как целое число (от 1900 до 9999), который соответствует заданной дате. В структуре функции только один аргумент – дата в числовом формате. Аргумент должен быть введен посредством функции ДАТА или представлять результат вычисления других формул.
Пример использования функции ГОД:
Функция МЕСЯЦ в Excel: пример
Возвращает месяц как целое число (от 1 до 12) для заданной в числовом формате даты. Аргумент – дата месяца, который необходимо отобразить, в числовом формате. Даты в текстовом формате функция обрабатывает неправильно.
Примеры использования функции МЕСЯЦ:
Примеры функций ДЕНЬ, ДЕНЬНЕД и НОМНЕДЕЛИ в Excel
Возвращает день как целое число (от 1 до 31) для заданной в числовом формате даты. Аргумент – дата дня, который нужно найти, в числовом формате.
Чтобы вернуть порядковый номер дня недели для указанной даты, можно применить функцию ДЕНЬНЕД:
По умолчанию функция считает воскресенье первым днем недели.
Для отображения порядкового номера недели для указанной даты применяется функция НОМНЕДЕЛИ:
Дата 24.05.2015 приходится на 22 неделю в году. Неделя начинается с воскресенья (по умолчанию).
В качестве второго аргумента указана цифра 2. Поэтому формула считает, что неделя начинается с понедельника (второй день недели).
Скачать примеры функций для работы с датами
Для указания текущей даты используется функция СЕГОДНЯ (не имеет аргументов). Чтобы отобразить текущее время и дату, применяется функция ТДАТА ().
С помощью функции ВПР() можно выполнить поиск в столбце таблицы (называется ключевым столбцом), а затем вернуть значение из той же строки, но другого столбца. Здесь рассмотрим более сложный поиск: искать будем не среди всех значений ключевого столбца, а только среди значений удовлетворяющих дополнительному условию.
Точное совпадение
Сначала вкратце напомним работу ВПР() — VLOOKUP() с аргументом
интервальный_просмотр
= ЛОЖЬ (когда ищется значение в ключевом столбце точно соответствующее критерию).
Задача: Для заданного пользователем Товара найти в таблице соответствующую цену и количество (см. файл примера ).
Решение очевидно ( =ВПР(B10;B13:C15;2;0) ) и подробно рассмотрено
в статье про ВПР()
.
Предположим, что исходная таблица усложнилась — добавился столбец с номерами заказов.
Теперь необходимо искать заданный Товар не по всему столбцу Товар, а лишь в строках, относящегося к заданному пользователем Заказу.
Найдем количество и цену для товара Мандарины в Заказе 2.
В ячейках
А21
и
В21
введем номер Заказа и наименование товара.
В ячейке
С21
введем
формулу массива
:
=ЕСЛИ(МАКС(ЕСЛИ((Таб1[Заказ]=A21)*(Таб1[Товар]=B21);Таб1[Количество];»»));МАКС(ЕСЛИ((Таб1[Заказ]=A21)*(Таб1[Товар]=B21);Таб1[Количество];»»));»В заказе нет искомого Товара»)
Аналогичную формулу можно использовать для поиска цены.
Ближайшее ЧИСЛО (ДАТА)
В предыдущей задаче предполагалось, что наименование Товара присутствует в Заказе в единственном экземпляре и точно соответствует критерию поиска. Однако, существует класс задач, когда это не так. Особенно часто встречаются задачи поиска ближайшего ЧИСЛА (если точное значение в ключевом столбце не найдено, то выводится ближайшее).
Примечание
. Формулы, созданные для поиска ближайших ЧИСЕЛ, работают и для ДАТ, т.к. даты в MS EXCEL
хранятся в числовом формате
.
Сначала вкратце напомним работу ВПР() — VLOOKUP() с аргументом
интервальный_просмотр
= ИСТИНА (когда ищется значение в ключевом столбце точно или приблизительно совпадающее с критерием).
Задача: Для указанной пользователем Даты найти соответствующую ей цену (см. файл примера ).
Решение — формула =ВПР(B10;Табл2.1;2) , где
Табл2.1
—
таблица в формате MS EXCEL 2007
.
Напомним, что для ВПР() с аргументом
интервальный_просмотр
= ИСТИНА требуется сортированный по возрастанию ключевой столбец (Дата). При отсутствии в столбце точного совпадения выводится наибольшее значение, которое меньше искомого. При наличии нескольких одинаковых подходящих значений в ключевом столбце, учитывается, то что ниже. Поэтому Цена выведена 220р., а не 240 и не 230.
Теперь необходимо для заданной пользователем Даты найти соответствующую ей цену, но эта Цена и дата должны относится к заданному пользователем Продавцу.
Другими словами, найдем цену на дату, ближайшей к заданной, но только для определенно продавца.
В ячейках
А25
и
В25
введем Продавца и дату.
Прежде чем писать формулу, определимся, что значит «ближайший». На самом деле можно дать несколько определений, нужный вариант выбирается исходя из условий решаемой задачи.
Вот несколько возможных определений:
1. В терминах функции ВПР() «ближайший» — это наибольшее значение, которое меньше искомого. При наличии нескольких одинаковых подходящих значений в ключевом столбце, учитывается, то что расположено ниже в таблице. Понятно, что такое значение может быть не обязательно ближайшим.
2. Другой вариант: наименьшее значение, которое больше искомого. При наличии нескольких одинаковых значений в ключевом столбце, учитывается, то что выше.
3. Ближайшее, т.е. та дата, которая ближе, чем все остальные (м.б. раньше или позже заданной). Если таких дат несколько, то учитывается нижняя и выводится соответствующая ей цена.
Еще несколько вариантов предложено в файле примера .
Понятно, что для каждого определения ближайшего требуется своя
формулы массива
(все их можно найти в файле примера ).
Формулы для определения цены, как правило, используют результат формулы определяющей ближайшую дату.
Ближайшее время
Поскольку как и дата, так и время в EXCEL хранятся в числовом формате (см. здесь
https://excel2.ru/articles/kak-excel-hranit-datu-i-vremya
), то формулы будут работать и для дат с указанием времени, например 03.12.2018 15:06.
В файле примера есть лист для демонстрации работы функции ВПР() для столбца данных со временем (требуется сортировка по возрастанию).
На том же листе решена и другая задача: в столбце, содержащих время в часах и минутах, выделяются строки, которые попадают в заданный интервал времени (сортировка не обязательна).
Это глава из книги: Майкл Гирвин. Ctrl+Shift+Enter. Освоение формул массива в Excel.
Предыдущая глава Оглавление Следующая глава
При создании формул массива, операторы массива могут значительно увеличить время расчета. В этой короткой главе рассматриваются два примера, в которых обычная формула справляется с задачей значительно быстрее формулы массива.
Подсчет дат, когда критерий сформулирован в виде текста. На рис. 12.1 показан набор данных с датами в стандартном формате Excel, то есть в виде порядковых чисел. В тоже время, критерии заданы как число (год) и текст (месяц). Цель – подсчитать, сколько дат соответствуют критерию. Проблема в том, что у нас несоответствие формата данных: в столбце A даты как порядковые номера, а критерий – смесь чисел и текста. На рис. 12.1 приведено пять различных формул, которые можно использовать для достижения цели.
Рис. 12.1. Подсчет количества дат (заданных порядковыми номерами) по двум критериям: году (число) и месяцу (текст)
Скачать заметку в формате Word или pdf, примеры в формате Excel2013
Давайте подробнее изучим работу этих пяти формул.
Формула [1]:
- Если вы можете позволить себе вспомогательный столбец, функция СЧЁТЕСЛИ будет самым простым решением.
- Функция МЕСЯЦ возвращает число между 1 и 12, а функция ГОД – число (год).
- Хотя Excel требует, чтобы аргумент функции МЕСЯЦ был представлен датой в числовом формате, этот аргумент может распознать и текст. Однако МЕСЯЦ(Окт) вернет ощибку, а вот если добавить к названию месяца любое число, например, 1, то Excel справится. Используйте, как в формуле выражение Окт1, заданное фрагментом F8&1, или 1Окт, заданное фрагментом 1&F8.
- Формулы с вспомогательными столбцами как правило работают быстрее.
Формула [2]:
- Если у вас Excel 2007 или более поздний, вы можете использовать функции СЧЁТЕСЛИМН и КОНМЕСЯЦА.
- Вам даны год (в виде числа) и месяц (как текст). Это означает, что вы можете вычислить дату начала и конца месяца, а затем определить даты, попажающие между ними.
- Месяц всегда начинается с первого числа, так что вы можете создать нижнюю границу диапазона конкатенацией:
"
>=1"
&F8&E8. Операции конкатенации возвращают текст, но это не страшно, т.к. функция СУММЕСЛИМН понимает даты в виде текста. - Вы используете функцию КОНМЕСЯЦА с аргументом число_месяцев равным нулю; это позволяет получить последнюю дату текущего месяца. Функция КОНМЕСЯЦА является динамической: она возвращает 28 или 29 для февраля и 30 или 31 для любого другого месяца.
- Эта формула является самой быстрой, если вам нужно получить решение в одной ячейке.
Формула [3]:
- Если у вас Excel версии младше 2007 г., вы можете использовать две функции СЧЁТЕСЛИ, одну – для верхнего диапазона, вторую – для нижнего. Фокус в том, чтобы сначала сосчитать все значения, которые равны или меньше верхней границы, а затем вычесть все значения, которые меньше нижней границы.
- В Excel 2003 или более ранней, чтобы добавить функцию КОНМЕСЯЦА, вам нужно выбрать Инструменты → Надстройки → Анализ Данных.
- Эта формула работает быстрее, чем формулы [4] и [5].
Формула [4]:
- Функции МЕСЯЦ и ГОД возвращают числа, извлекая их из порядкового номера даты.
- Далее сравниваются два фрагмента, каждый полкченный конкатенацией.
Формула [5]:
- Функция ТЕКСТ используется для представления чисел в виде текста. Второй аргумент этой функции – формат – определяет, как будет представлено число. Вы может конвертировать весь столбец А в текст, состоящий из 7 символов: 3 буквы месяца и 4 цифры года.
Нахождение объема продаж за год. На рис. 12.4 показан пример несоответствие формата года в критерии Е6 (число) и формата дат в диапазоне А2:А6 (порядковый номер). Цель – найти сумму продаж за год. На рисунке представлены шесть вариантов формул, которые могут решить задачу. Обратите внимание, что в формулах [1] и [2] критерии начала и конца года жестко зашиты в коде, т.к. они не могут изменяться. Это 1/1 и 31/12). Формулы размещены на рисунке в порядка увеличения скорости работы.
Рис. 12.4. Формата года в критерии Е6 (число) не соответствует формату дат в диапазоне А2:А6 (порядковый номер)
Поиск даты в ячейке с текстом
Поиск даты в ячейке с текстом
Добрый день, уважаемые читатели и подписчики блога! Сегодня поговорим о поиске даты в ячейке с текстом.
Представим ситуацию — в ячейке с текстом есть дата, но находится она в абсолютно разных частях текста:
В таком случае привычные нам ЛЕВСИМВ, ПРАВСИМВБ и ПСТР (в обычном их употреблении) будут почти бессильны. Для решения данной задачи сначала превратим свою таблицу в умную сочетанием Ctrl+T, чтобы потом было проще работать с данными (воспользоваться всеми прелестями мгновенного заполнения). Добавим ещё один столбец.
Теперь всё же воспользуемся функцией ПСТР. Немного разбавив её синтаксис функцией ПОИСК.
=ПСТР(A2;ПОИСК(«??.??.????»;A2);10)
Нам нужно определить начальную позицию даты, знаем, что в дате 10 символов с точками и последовательностью 2символа, точка, 2 символа, точка, 4 символа — «??.??.????».
«??.??.????» — это символы подстановки, я называю их «маской» поиска. Передадим их в функцию ПОИСК.
Последним аргументом передадим количество возвращаемых символов. Вот и всё!
Благодаря умной таблице столбец заполнится формулами сам (по крайней мере в 19 версии офиса).
Всем удачи!
Вас может заинтересовать статья — «Как скрыть лист в Excel».