如何找到特定日期范围内的最小值和最大值

时间:2019-06-27 01:44:28

标签: excel vba excel-formula

enter image description here我想在第二列中获取属于特定日期范围内的特定范围内的最小值。这一切都在excel中。

例如:
第1栏:1/1/2019 1/10/2109 1/15/2019 2/15/2019
第2栏:50 55 60 70

行1将为1/1/201950。 第1行,第1列为1/1/2019

如果第1列中的某个日期介于1/05/2019-2/30/2019之间,请在该列中指定该特定日期范围内的最小数字(1/5/2019-2/30/2019)。

我不知道宏是否有帮助,或者我是否可以在excel中键入公式。感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

例如,您可以使用一个数组公式(记住答案here中的答案(@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)

答案 1 :(得分:0)

尝试一下。我对其进行了测试,并且可以正常工作。让我解释一下设置,因为您没有提供格式示例。此宏中有两张纸,第一张纸包含第1列中的日期,第2列中的值。请注意,您必须将日期按升序排列,这意味着row1具有最早的日期,然后跟随上一个最近的日期日历,最底部应该是最晚日期。

Sheet2包含您要从sheet1获取值的不同日期。我假设您要搜索的第一个日期从Sheet2的Row1 column1开始,并且您可以搜索任意数量的日期。

逻辑是,从sheet2中的第一个单元格开始,对于sheet2第1列中的每个单元格,将日期与sheet1的第1列第1列开始日期(最早的)进行比较,如果该值较低,则宏提取该值,如果它不是较低的,那么它将搜索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