在最接近指定日期的列表中查找上一个日期
Posted
技术标签:
【中文标题】在最接近指定日期的列表中查找上一个日期【英文标题】:Find a previous date on a list closest to a specified date 【发布时间】:2014-03-12 19:51:48 【问题描述】:我想要一个 VBA 代码或公式,它们将采用可变日期值并在日期列表范围内找到它。如果它找不到日期,我希望它找到最接近的先前日期值。 VLOOKUP
非常适合查找精确匹配,但我正在努力寻找最接近的前一个日期。
我唯一的想法是创建一个循环,如果它不匹配,它会继续从变量 date 中减去一天,直到它可以在列表中找到匹配项。这似乎不是最好或最有效的方法,我希望有人可以推荐一个更简单的解决方案。
例子:
Variable Date = 01/26/2014
Date List
02/04/2014
01/27/2014
01/24/2014
01/13/2014
12/29/2013
Desired Result = 01/24/2014
任何帮助将不胜感激。
【问题讨论】:
你可以使用MATCH函数,match_type
参数等于1:If match_type is 1, MATCH finds the largest value that is less than or equal to lookup_value. Lookup_array must be placed in ascending order
如果它被订购它更容易使用查找
【参考方案1】:
我做的有点不同,不需要数组
使用CountIf()
查找比您要查找的数字更大的数字
然后我使用了=Large
,这将在列表中找到第n个日期,我们在countIF()
中寻找第n个日期
=LARGE(A:A,COUNTIF(A:A,">="&TODAY()))
【讨论】:
【参考方案2】:假设您的日期列表在单元格A1:A5
中并且您的检查日期在单元格C1
中,您可以输入此函数以数组公式的形式输入:
=MAX(($A$1:$A$5<=C1)*A1:A5)
记住,要将其作为数组公式输入,请在输入公式时点击 Ctrl
+ Shift
+ Enter
.
希望这能解决问题!
【讨论】:
@John Bustos - 在这个线程上提问可能为时已晚,但我希望通过 vba 计算公式。我试过 'prev_date = Application.Max((Date_Array @JohnW,在 VBA 中,我会做一个快速的for
循环并继续写最大的 <=
变量,直到你遍历整个数组......我认为那将是最有效的方法...如果您愿意,请发布另一个问题,如果您无法从我的描述中解决,我会给您代码....【参考方案3】:
如果您将最终参数设置为true
,Vlookup 实际上可以做到这一点,它会寻找近似匹配。您需要将日期从最旧到最新排序,它将返回不在您的搜索词之后的第一个日期。
【讨论】:
以上是关于在最接近指定日期的列表中查找上一个日期的主要内容,如果未能解决你的问题,请参考以下文章