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/2019
和50
。
第1行,第1列为1/1/2019
。
如果第1列中的某个日期介于1/05/2019
-2/30/2019
之间,请在该列中指定该特定日期范围内的最小数字(1/5/2019
-2/30/2019
)。
我不知道宏是否有帮助,或者我是否可以在excel中键入公式。感谢您的帮助。
答案 0 :(得分:1)
例如,您可以使用一个数组公式(记住答案here中的答案(@ScottCraner的积分)):
单元格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