Как найти минимум и максимум в определенном диапазоне дат - PullRequest
1 голос
/ 27 июня 2019

введите описание изображения здесь Я хочу получить минимальное значение во втором столбце для определенного диапазона, который попадает в определенный диапазон дат.Это все в Excel.

Для экземпляра:
Столбец1: 1/1/2019 1/10/2109 1/15/2019 2/15/2019
Столбец2: 50 55 60 70

Строка 1 будет 1/1/2019 и 50.Строка 1, столбец 1 будет 1/1/2019.

Если какая-либо дата в столбце 1 находится между 1/05/2019 - 2/30/2019, укажите минимальное число в столбце 2 для этого конкретного диапазона дат (1/5/2019 - 2/30/2019).

Я не знаю, поможет ли макрос, или я могу просто набрать формулу в Excel.Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Например, вы могли бы использовать формулу массива следующим образом (с ответом, связанным в комментариях здесь (помните @ScottCraner):

enter image description here

Формула в ячейке E4 выглядит следующим образом:

=MIN(IF((A1:A4>=E1)*(A1:A4<=E2),B1:B4))

Введено в виде массива путем подтверждения формулы с помощью Ctrl Shift Enter

Будучи помещенным в агрегат, это все еще формула массива, но вам не нужно подтверждать ее так:

=AGGREGAAT(15,6,B1:B4/((A1:A4>=E1)*(A1:A4<=E2)),1)
0 голосов
/ 27 июня 2019

попробуйте это.Я проверил это, и это работает.Позвольте мне объяснить настройки, так как вы не предоставили пример вашего формата.В этом макросе есть два листа, лист 1 содержит даты в столбце 1 и значения в столбце 2. Обратите внимание, что вы должны располагать даты в порядке возрастания, то есть строка 1 имеет самую старую дату, затем следует следующая ближайшая дата вкалендарь, и в самом низу должна быть самая последняя дата.

Лист2 содержит различные даты, которые вы хотите получить значения из листа1.Я предположил, что первая дата, которую вы хотите найти, начинается в столбце Row1 на Sheet2, и вы можете искать столько дат, сколько хотите.

Логика такова: начиная с первой ячейки в sheet2, для каждойячейка в столбце 1 sheet2, сравните дату с начальным столбцом 1 строки 1 sheet1, который является самым старым, если значение ниже, то макрос извлекает значение, если оно не ниже, то ищет следующую ячейку в sheet1 и т. д.... надеюсь, это поможет

Sub findMinValue()

Dim lastrow1 As Long, lastrow2 As Long
Dim ws1 As Worksheet, ws2 As Worksheet
Dim i As Integer, ii As Integer

Set ws1 = Worksheets("sheet1")
Set ws2 = Worksheets("sheet2")

lastrow1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row
lastrow2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row

ws2.Select

For ii = 1 To lastrow2
    For i = 1 To lastrow1
        If ws2.Cells(ii, 1) < ws1.Cells(i, 1) Then
        ws2.Cells(ii, 2).Value = ws1.Cells(i, 2).Value
        Exit For
        Else 'do nothing
        End If
    Next i
Next ii

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...