Как найти максимальное значение даты

Есть две таблицы, в первой есть типы от 1 до 5, а во второй указан тип и дата, надо в клетку с максимальной датой вывести, дату исключив например тип 4 и 2

таблицы

В данном примере самая большая дата 05.10.2022, но нам надо исключить тип 4, следовательно так-же и с тип 2 где дата 01.10.2022, а значит самая большая дата будет 30.09.2022 у типа 3

задан 25 сен 2022 в 6:50

Edvard's user avatar

1

Вариант 1 Можно использовать формулу массива (Excel 2007+):

=МАКС($D$6:$D$13*($C$6:$C$13<>"ТИП 2")*($C$6:$C$13<>"ТИП 4"))

(вводить Ctrl+Shift+Enter, признак формулы массива — она после ввода отображается в фигурных скобках):
введите сюда описание изображения

Константы «ТИП …» можно заменить ссылками на соотв. ячейки

Вариант 2 Функция МАКСЕСЛИ()(Excel 2019+):

=МАКСЕСЛИ($D$6:$D$13;$C$6:$C$13;"<>" & $A$6;$C$6:$C$13;"<>" & $A$8)

Результат:
введите сюда описание изображения

ответ дан 25 сен 2022 в 9:01

Алексей Р's user avatar

Алексей РАлексей Р

7,1822 золотых знака4 серебряных знака17 бронзовых знаков

В свободный столбец формулу:

=ЕСЛИ(ИЛИ(тип={2;4});;дата)

где тип — ссылка на ячейку столбца с типами; дата — ссылка на ячейку столбца с датами; {2;4} — перечень исключаемых типов.

Формула выведет в отдельный столбец все даты нужных типов. Дальше просто:

=МАКС(доп_столбец)

Без доп. столбца, для любого количества исключаемых значений (формула массива, вводится одновременным нажатием Ctrl+Shift+Enter, после ввода должна обрамиться фигурными скобками):

=МАКС(D2:D99*ЕНД(ПОИСКПОЗ(C2:C99;F1:F9;)))

здесь C2:C99 — даты; D2:D99 — типы; F1:F9 — перечень исключаемых типов

Если исключений несколько, диапазон F1:F9 можно заменить массивом констант
{"ТИП 2";"ТИП 4"}

ответ дан 25 сен 2022 в 7:26

vikttur_Stop_RU_war_in_UA's user avatar

4

I have a DataColumn of DateTime, I would like to know how I can have only the sooner date (min) and the later date (max).

Thanks

asked Nov 28, 2011 at 16:40

francops henri's user avatar

francops henrifrancops henri

5153 gold badges17 silver badges29 bronze badges

1

object maxDate = dataTable.Compute("MAX(TheDateColumnName)", null);
object minDate = dataTable.Compute("MIN(TheDateColumnName)", null);

Rafael Herscovici's user avatar

answered Jun 11, 2012 at 18:18

Fergara's user avatar

1

This would give what you are looking for:

// Initial Code for Testing
DataTable dt = new DataTable();

dt.Columns.Add("Dates", typeof(DateTime));
dt.Rows.Add(new object[] { DateTime.Now });
dt.Rows.Add(new object[] { DateTime.Now.AddDays(1) });
dt.Rows.Add(new object[] { DateTime.Now.AddDays(2) });

This is the code you would use:

// Actual Code
DataColumn col = dt.Columns[0]; // Call this the one you have

DataTable tbl = col.Table;

var first = tbl.AsEnumerable()
               .Select(cols => cols.Field<DateTime>(col.ColumnName))
               .OrderBy(p => p.Ticks)
               .FirstOrDefault();

var last = tbl.AsEnumerable()
              .Select(cols => cols.Field<DateTime>(col.ColumnName))
              .OrderByDescending(p => p.Ticks)
              .FirstOrDefault();

answered Nov 28, 2011 at 17:07

Kyle Rosendo's user avatar

Kyle RosendoKyle Rosendo

24.9k7 gold badges80 silver badges118 bronze badges

1

To add to the answer from kyle, isn’t it easier to just do:

for greatest date:

var last = tbl.AsEnumerable()
               .Max(r => r.Field<DateTime>(col.ColumnName));

and for earliestdate:

var first = tbl.AsEnumerable()
               .Min(r => r.Field<DateTime>(col.ColumnName));

Mark Bad's user avatar

answered Nov 13, 2012 at 10:52

MichelZ's user avatar

MichelZMichelZ

4,1545 gold badges30 silver badges35 bronze badges

Just retreive a List of DateTime from your DataColumn,
Foreach row in your DataColumn add the current element to your List of DateTime.

List<DateTime> and use Sort method then get the first and the last values.

Depending of your framework version, for 2.0 use above, for >=3.5
you can use Max and Min
or
With linq .OrderByDesc(p => p.X).FirstOrDefault(); on your DateTime List

answered Nov 28, 2011 at 16:45

Christophe Debove's user avatar

Christophe DeboveChristophe Debove

6,04820 gold badges73 silver badges124 bronze badges

4

DataTable dt = new DataTable("MyDataTable");
DataColumn dc = new DataColumn("DateColumn");
dc.DataType = typeof(DateTime);
dt.Columns.Add(dc);
for (int i = 0; i <= 5; i++)
{
    DataRow newRow = dt.NewRow();
    newRow[0] = DateTime.Now.AddDays(i);
    dt.Rows.Add(newRow);
}

DateTime maxDate =  
    Convert.ToDateTime(
                        ((from DataRow dr in dt.Rows
                          orderby Convert.ToDateTime(dr["DateColumn"]) descending
                          select dr).FirstOrDefault()["DateColumn"]
                          )
                        );

DateTime minDate = 
    Convert.ToDateTime(
                        ((from DataRow dr in dt.Rows
                          orderby Convert.ToDateTime(dr["DateColumn"]) ascending
                          select dr).FirstOrDefault()["DateColumn"]
                          )
                        );

answered Nov 28, 2011 at 17:31

Elias Hossain's user avatar

Elias HossainElias Hossain

4,4001 gold badge19 silver badges33 bronze badges

Simpliest for me:
make a dataset with a Table «Tablename» and a column «itemDate» ,set Datatyp System.DateTime

you can read all elements in a list of datetime and search for minDate

Dim List_Date As New List(Of DateTime)
Dim minDate As DateTime

For Each elem As DataRow In DataSet1.Tables("Tablename").Rows
            List_Date.Add(elem.Item("itemDate"))
Next

minDate = List_Date.Min

answered Feb 8, 2020 at 11:12

PeterN's user avatar

PeterNPeterN

2171 gold badge4 silver badges15 bronze badges

Поиск минимального или максимального значения по условию

В Microsoft Excel давно есть в стандартном наборе функции СЧЁТЕСЛИ (COUNTIF), СУММЕСЛИ (SUMIF) и СРЗНАЧЕСЛИ (AVERAGEIF) и их аналоги, позволяющие искать количество, сумму и среднее в таблице по одному или нескольким условиям. Но что если нужно найти не сумму или среднее, а минимум или максимум по условию(ям)? 

Предположим, нам нужно найти минимальную цену для каждого товара в базе данных по поставщикам:

min-if1.png

Таким образом, условием будет наименование товара (бумага, карандаши, ручки), а диапазоном для выборки — столбец с ценами.

Для будущего удобства, конвертируем исходный диапазон с ценами в «умную таблицу». Для этого выделите его и выберите на вкладке Главная — Форматировать как таблицу (Home — Format as Table) или нажмите Ctrl+T. Наша «поумневшая» таблица автоматически получит имя Таблица1, а к столбцам можно будет, соответственно, обращаться по их именам, используя выражения типа Таблица1[Товар] или Таблица1[Цена]. При желании, стандартное имя Таблица1 можно подкорректировать на вкладке Конструктор (Design), которая появляется, если щелкнуть в любую ячейку нашей «умной» таблицы. Подробнее о таких таблицах и их скрытых возможностях можно почитать здесь.

Способ 1. Функции МИНЕСЛИ и МАКСЕСЛИ в Excel 2016

Начиная с версии Excel 2016 в наборе функции Microsoft Excel наконец появились функции, которые легко решают нашу задачу — это функции МИНЕСЛИ (MINIFS) и МАКСЕСЛИ (MAXIFS). Синтаксис этих функции очень похож на СУММЕСЛИМН (SUMIFS):

=МИНЕСЛИ(Диапазон_чисел; Диапазон_проверки1; Условие1; Диапазон_проверки2; Условие2 … )

где

  • Диапазон_чисел — диапазон с числами, из которых выбирается минимальное или максимальное
  • Диапазон_проверки — диапазон, который проверяется на выполнение условия
  • Условие — критерий отбора

Например, в нашем случае:

Поиск минимального по условию функцией МИНЕСЛИ

Просто, красиво, изящно. Одна проблема — функции МИНЕСЛИ и МАКСЕСЛИ появились только начиная с 2016 версии Excel. Если у вас (или тех, кто будет потом работать с вашим файлом) более старые версии, то придется шаманить другими способами.

Способ 2. Формула массива

min-if2.png

В английской версии это будет, соответственно =MIN(IF(Table1[Товар]=F4;Table1[Цена]))

Не забудьте после ввода этой формулы в первую зеленую ячейку G4 нажать не Enter, а Ctrl+Shift+Enter, чтобы ввести ее как формулу массива. Затем формулу можно скопировать на остальные товары в ячейки G5:G6.

Давайте разберем логику работы этой формулы поподробнее. Функция ЕСЛИ проверяет каждую ячейку массива из столбца Товар на предмет равенства текущему товару (Бумага). Если это так, то выдается соответствующее ему значение из столбца Цена. В противном случае – логическое значение ЛОЖЬ (FALSE).

Таким образом внешняя функция МИН (MIN) выбирает минимальное не из всех значений цен, а только из тех, где товар был Бумага, т.к. ЛОЖЬ функцией МИН игнорируется. При желании, можно выделить мышью всю функцию ЕСЛИ(…) в строке формул

min-if3.png

… и нажать на клавиатуре F9, чтобы наглядно увидеть тот самый результирующий массив, из которого потом функция МИН и выбирает минимальное значение:

min-if4.png

Способ 3. Функция баз данных ДМИН

Этот вариант использует малоизвестную (и многими, к сожалению, недооцененную) функцию ДМИН (DMIN) из категории Работа с базой данных (Database) и требует небольшого изменения результирующей таблицы:

min-if5.png

Как видите, зеленые ячейки с результатами транспонированы из столбца в строку и над ними добавлена мини-таблица (F4:H5) с условиями. Логика работы этой функции следующая:

min-if6.png

  • База_данных — вся наша таблица вместе с заголовками.
  • Поле — название столбца из шапки таблицы, из которого выбирается минимальное значение.
  • Критерий — таблица с условиями отбора, состоящая (минимально) из двух ячеек: названия столбца, по которому идет проверка (Товар) и критерия (Бумага, Карандаши, Ручки).

Это обычная формула (не формула массива), т.е. можно вводить и использовать ее привычным образом. Кроме того, в той же категории можно найти функции БДСУММ (DSUM), ДМАКС (DMAX), БСЧЁТ (DCOUNT), которые используются совершенно аналогично, но умеют находить не только минимум, но и сумму, максимум и количество значений по условию.

Способ 4. Сводная таблица

Если в исходной таблице очень много строк, но данные меняются не часто, то удобнее будет использовать сводную таблицу, т.к. формула массива и функция ДМИН могут сильно тормозить Excel.

Установите активную ячейку в любое место нашей умной таблицы и выберите на вкладке Вставка — Сводная таблица (Insert — Pivot Table). В появившемся окне нажмите ОК:

min-if7.png

В конструкторе сводной таблицы перетащите поле Товар в область строк, а Цену в область значений. Чтобы заставить сводную вычислять не сумму (или количество), а минимум щелкните правой кнопкой мыши по любому числу и выберите в контекстном меню команду Итоги по — Минимум:

min-if8.png

Вытаскивать данные из сводной в дальнейшие расчеты теперь можно с помощью функции ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ (GET.PIVOT.DATA), которую мы подробно разбирали ранее:

min-if9.png

Ссылки по теме

  • Зачем нужна функция ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ
  • Выборочное вычисление суммы, среднего и т.д. по одному или нескольким критериям
  • Что такое «умные таблицы» в Excel и как с ними работать

«SQL Последнее обновление 15 марта 2019 07:13:38 (UTC / GMT +8 часов)

script1adsense2code

script1adsense3code

Функция MAX () на дату

В этой части вы увидите использование функции SQL MAX () для типа даты столбца таблицы.

Пример:

Пример таблицы: заказы

Чтобы получить максимальное значение ord_date из таблицы orders, можно использовать следующий оператор SQL:

SELECT MAX (ord_date) AS "Max Date" 
FROM orders;

Выход:

 Макс Дата
---------
20 октября-08

SQL MAX () для значения даты с помощью где

Чтобы получить данные «ord_num», «ord_amount», «ord_date», «agent_code» из таблицы «orders» при следующих условиях:

1. «ord_date» равно максимальному «ord_date»,

2. максимальное значение ‘ord_date’ для тех агентов, чей код_агента ‘A002’,

можно использовать следующий оператор SQL:

SELECT ord_num, ord_amount, ord_date, agent_code
FROM orders
WHERE ord_date=(
SELECT MAX(ord_date) FROM orders WHERE agent_code='A002');

Выход:

 ORD_NUM ORD_AMOUNT ORD_DATE AGENT_CODE
--------- ---------- --------- ----------
   200122 2500 16-сен-08 A004
   200119 4000 16-SEP-08 A010
   200123 500 16-сен-08 A002
   200135 2000 16-SEP-08 A010

SQL MAX () на дату с группировкой по

Чтобы получить данные «agent_code» и максимального значения «ord_date» с заданным пользователем псевдонимом столбца «Max Date» для каждого агента из таблицы заказов со следующим условием:

1. ‘agent_code’ должен входить в группу

можно использовать следующий оператор SQL:

SELECT agent_code, MAX(ord_date) AS "Max Date"
FROM orders 
GROUP BY agent_code;

Выход:

 AGENT_CODE Макс. Дата
---------- ---------
A004 23-SEP-08
A002 16-SEP-08
A007 20 июня 2008 года
A009 13-июл-08
A011 30-июл-08
A012 26 августа 2008 года
A010 16-SEP-08
A013 15-AUG-08
A001 20-ОКТ-08
A008 15-AUG-08
A006 20-июл-08
A005 10-октябрь-08
A003 20-июл-08

SQL MAX () на значение даты с подзапросом

Чтобы получить данные «agent_code», «ord_date» и «cust_code» из таблицы «orders» при следующих условиях:

‘ord_date’ будет равна максимальной ‘ord_date’ таблицы ‘orders’ со следующим условием —

‘agent_code’ таблицы ‘orders’ должен быть равен ‘agent code’ из
таблица ‘orders’ упоминается как псевдоним ‘S’

можно использовать следующий оператор SQL:

SELECT agent_code, ord_date, cust_code 
FROM orders S 
WHERE ord_date=(
SELECT MAX(ord_date) 
FROM orders 
WHERE agent_code = S.agent_code);

Выход:

 AGENT_CODE ORD_DATE CUST_CODE
---------- --------- ----------
A008 15-AUG-08 C00002
A006 20 июля 2010 года C00023
A010 16-SEP-08 C00007
A004 23-SEP-08 C00008
A011 30 июля 2010 года C00025
A005 10-OCT-08 C00018
A001 20-OCT-08 C00014
A002 16-SEP-08 C00022
A009 13-июл-08 C00010
A007 20 июня 2010 года C00017
A006 20 июля 2010 года C00024
A003 20 июля 2010 года C00015
A010 16-SEP-08 C00007
A012 26-AUG-08 C00012
A013 15-AUG-08 C00013

SQL MAX () для значения даты с использованием соединения

Пример таблицы: заказы

Пример таблицы: отправка

Чтобы получить все столбцы из таблиц ‘orders’ и ‘despatch’ после объединения, с соблюдением следующего условия:

1. «ord_date» должно быть наибольшим (максимальным) из таблицы «orders»,

2. наибольшее (максимальное) значение ord_date должно быть равно таблице ord_date of orders,

3. ‘agent_code’ таблицы ‘orders’ должен быть равен ‘agent_code’ таблицы ‘despatch’ для присоединения,

можно использовать следующий оператор SQL:

SELECT * FROM orders 
LEFT JOIN despatch 
ON orders.agent_code = despatch.agent_code 
WHERE orders.ord_date=(
SELECT MAX(ord_date) FROM orders);

Выход:

 ORD_NUM ORD_AMOUNT ADVANCE_AMOUNT ORD_DATE CUST_C AGENT_ ORD_DESCRIPTION DES_NU DES_DATE DES_AMOUNT ORD_NUM ORD_DATE ORD_AMOUNT AGENT_CODE
---------- ---------- -------------- --------- ------ - ----- ----------------------------- ------ --------- - --------- ---------- --------- ---------- ------
    200117 800 200 20-OCT-08 C00014 A001 D003 25-OCT-08 900 200117 20-OCT-08 800 A001

Примечание. Выводы указанного оператора SQL, показанного здесь, взяты с использованием Oracle Database 10g Express Edition.

Вот слайд-презентация всех агрегатных функций.

Упражнения по SQL

  • Упражнения по SQL, практика, решение
  • SQL Получить данные из таблиц [33 Упражнения]
  • Булевы и реляционные операторы SQL [12 упражнений]
  • Подстановочные знаки SQL и специальные операторы [22 упражнения]
  • Агрегатные функции SQL [25 упражнений]
  • Вывод запроса форматирования SQL [10 упражнений]
  • SQL-запросы к нескольким таблицам [7 упражнений]
  • ФИЛЬТРАЦИЯ И СОРТИРОВКА в базе данных персонала [38 упражнений]
  • SQL СОЕДИНЯЕТ
    • SQL СОЕДИНЯЕТСЯ [29 упражнений]
    • SQL присоединяется к базе данных HR [27 упражнений]
  • SQL ПОДПИСИ
    • ПОДПИСИ SQL [39 упражнений]
    • SQL ПОДПИСИ по базе данных HR [55 упражнений]
  • SQL Union [9 упражнений]
  • SQL View [16 упражнений]
  • Управление учетными записями пользователей SQL [16 упражнение]
  • База данных фильмов
    • ОСНОВНЫЕ запросы к базе данных фильмов [10 упражнений]
    • ПОДПИСКИ на фильм База данных [16 упражнений]
    • ПРИСОЕДИНЯЕТСЯ к базе данных фильма [24 упражнения]
  • Футбольная база
    • Вступление
    • ОСНОВНЫЕ запросы по футболу базы данных [29 упражнений]
    • ПОДПИСКИ по футбольной базе данных [33 упражнения]
    • ПРИСОЕДИНЯЕТСЯ к запросам по футбольной базе данных [61 упражнений]
  • База данных больницы
    • Вступление
    • ОСНОВНЫЕ, ПОДПИСИ И СОЕДИНЕНИЯ [39 упражнений]
  • База данных сотрудников
    • ОСНОВНЫЕ запросы к базе данных сотрудников [115 упражнений]
    • БРОНИРОВАНИЕ на сотрудника База данных [77 Упражнения]
  • Еще не все!

Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.

Предыдущий: Макс, где, в
Далее: Максимальное количество, имея

Предположим, у вас есть таблица, как показано на скриншоте ниже, и вам нужно найти максимальное или минимальное значение между двумя датами с 2016/7/1 до 2016/12/1, как этого добиться? Формулы в этой статье могут помочь вам в этом.

Найдите максимальное или минимальное значение в определенном диапазоне дат с помощью формул массива


Найдите максимальное или минимальное значение в определенном диапазоне дат с помощью формул массива

Приведенные ниже формулы массива могут помочь вам найти максимальное или минимальное значение между двумя датами в Excel. Пожалуйста, сделайте следующее.

1. Выберите пустую ячейку, чтобы найти максимальное или минимальное значение.

Поиск максимального значения между датами 2016/7/1 и 2016/12/1:

2. Введите в нее формулу ниже, а затем нажмите Ctrl + Shift + Enter ключи, чтобы получить результат.

=MAX(IF((A5:A17<=$D$1)*(A5:A17>=$B$1),B5:B17,»»))

Поиск минимального значения между датой 2016/7/1 и 2016/12/1:

2. Скопируйте или введите в нее формулу ниже, а затем нажмите Ctrl + Shift + Enter ключи, чтобы получить результат. 

=MIN(IF((A5:A17<=$D$1)*(A5:A17>=$B$1), B5:B17, «»))

Внимание: В двух приведенных выше формулах массива A5: A17 — это список дат, в котором существует определенный диапазон дат; $ D $ 1 и $ B $ 1 — дата окончания и дата начала, на основе которых вы найдете максимальное или минимальное значение; и B5: B17 — диапазон значений, содержащий найденные вами максимальные и минимальные значения. Измените их, как вам нужно, в формуле массива.


Статьи по теме:

  • Как найти позицию первого / последнего числа в текстовой строке в Excel?
  • Как найти первую или последнюю пятницу каждого месяца в Excel?
  • Как vlookup найти первое, второе или n-е значение соответствия в Excel?
  • Как найти значение с наибольшей частотой в диапазоне в Excel?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (6)


Оценок пока нет. Оцените первым!

Понравилась статья? Поделить с друзьями:
  • Как найти количество в одном проценте
  • Как найти начисление по транспортному налогу
  • Как найти тома если он ушел
  • Как найти человека по институту
  • Нттр 403 запрещено как исправить