【发布时间】:2014-03-25 10:59:42
【问题描述】:
鉴于已经满足两个条件(日期),我想搜索数据中是否存在数字(例如 1430)。如果该数字不存在,我想返回最大值,对于这两个条件,小于我的目标数字。
我正在使用以下方法: http://support.microsoft.com/kb/59482
此外,我通过 Excel 的帮助系统依靠 MATCH 的帮助文件,概述 MATCH_TYPE:
1 or omitted: MATCH finds the largest value that is less than or equal to lookup_value. The values in the lookup_array argument must be placed in ascending order, for example: ...-2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE.
因此,我对数据进行了排序,使两个日期系列从最旧到最新排序,目标值从最小到最大排序。
这个:
{=INDEX(data!$C$2:$C$21, MATCH(a2&b2&c2,data!$A$2:$A$21&data!$B$2:$B$21&data!$C$2:$C$21,1))}
(其中 a2 = 2/16/01,b2 = 3/17/01,c2 = 1430)
在我的小测试集上运行良好,按预期返回 1425:
Trade Maturity Strike
15-Feb-01 17-Mar-01 600.00
15-Feb-01 17-Mar-01 625.00
15-Feb-01 17-Mar-01 650.00
16-Feb-01 16-Mar-01 1300.00
16-Feb-01 16-Mar-01 1325.00
16-Feb-01 16-Mar-01 1375.00
16-Feb-01 17-Mar-01 1400.00
16-Feb-01 17-Mar-01 1410.00
16-Feb-01 17-Mar-01 1425.00
16-Feb-01 17-Mar-01 1450.00
16-Feb-01 17-Mar-01 1475.00
16-Feb-01 17-Mar-01 1500.00
16-Feb-01 18-Mar-01 600.00
16-Feb-01 18-Mar-01 625.00
16-Feb-01 18-Mar-01 650.00
16-Feb-01 18-Mar-01 675.00
13-Mar-01 21-Apr-01 600.00
13-Mar-01 21-Apr-01 625.00
13-Mar-01 21-Apr-01 650.00
13-Mar-01 21-Apr-01 675.00
但是在包含超过 82,000 行数据的实际测试集上失败了。具体来说,当我在整个数据集上运行搜索时,它会返回目标交易日期之前最后一个日期的最大值(例如 650)。
我已经搜索了几个小时,让它在我的脑海中浸泡了几天,但似乎无法解决这个问题。有什么想法吗?
【问题讨论】:
-
当你将 3 个数字连接在一起时(日期是数字)“600”大于“1500”,这就是它失败的原因,请参阅我的解决方案...