Excel formula 确定范围内日期范围数的Excel公式

Excel formula 确定范围内日期范围数的Excel公式,excel-formula,Excel Formula,我有一个复杂的场景,我试图在Excel公式中编写,而不进入宏 场景是,我看到一个日期范围,称为范围a。即2011年1月10日至2011年4月5日 我有一个3列的查找表;从日期,到日期,费率。此表包含大约50行,每行表示一个独特的3个月周期(每年四个月)和相应的费率 我需要能够取范围A,找出每个四分之一的天数,然后用这些天数乘以四分之一的比率 在2011年1月10日-2011年4月5日的例子中,我应该得到81*2011年第一季度利率+5*2011年第二季度利率 这将是一个简单的for循环和VLOO

我有一个复杂的场景,我试图在Excel公式中编写,而不进入宏

场景是,我看到一个日期范围,称为范围a。即2011年1月10日至2011年4月5日

我有一个3列的查找表;从日期,到日期,费率。此表包含大约50行,每行表示一个独特的3个月周期(每年四个月)和相应的费率

我需要能够取范围A,找出每个四分之一的天数,然后用这些天数乘以四分之一的比率

在2011年1月10日-2011年4月5日的例子中,我应该得到81*2011年第一季度利率+5*2011年第二季度利率

这将是一个简单的for循环和VLOOKUP夫妇,但我需要避免宏的。有人有其他建议吗

谢谢


斯科特。

我将把这个问题分解成几个部分,因为最后的等式相当长

我们要做两件事,首先要把你的约会范围分开。我的测试范围在单元格F16中。这是通过使用
=MATCH(DATEVALUE(LEFT(F16,FIND(“-”,F16))、A1:A12,1)
=MATCH(DATEVALUE(RIGHT(F16,LEN(F16)-2-FIND(“-”,F16))、A1:A12,1来完成的,其中
A1
C12
是您的
从日期到
速率的
数组。这两个匹配语句将为我们提供第一个季度和最后一个季度范围所属的行。使用这些行号,我们使用
address()
创建引用,例如
=address(MATCH(DATEVALUE)(左(F16,FIND(“-”,F16))、A1:A12,1)、2)和“:”&address(MATCH(DATEVALUE)(右(F16,LEN(F16)-2-FIND(“-”,F16))、A1:A12,1)、2)
。在我的测试用例中,前面的公式将吐出
$B$1:$B$9

第二部分是找出总数。我们将使用
sumproduct()
。下面是简单的
sumproduct()
公式:
=sumproduct((B1:B7-A1:A7+1),C1:C7)
。现在测试的范围是静态的。它将采用数组格式的季度末减去季度初,并向每个季度加1。这是因为
1/31/13-1/1/13=30天
,而我们希望它是31天。然后将该数组乘以每个月的费率

现在,当我们将其组合在一起时,我们使用第一个范围,使用
indirect()
,并将我们的动态范围替换为简单的
sumproduct()
公式,最后使用
=sumproduct((indirect(ADDRESS)(MATCH(DATEVALUE)(左,FIND(“-”),A1:A12,1),2)&“&ADDRESS(MATCH(DATEVALUE)(右,LEN(F16)-2-FIND(“-”)A1:A12,1),2)间接地址(匹配日期值(左(F16,FIND(“-”,F16)),A1:A12,1),1)和“:”地址(匹配日期值(右(F16,LEN(F16)-2-FIND(“-”,F16)),A1:A12,1),1)),间接地址(匹配日期值(左(F16,FIND(“-”,F16)),A1:A12,1),3)和地址(匹配日期值(右(F16,LEN(F16)-2-FIND(“),A1:A11>),/A11>)

现在这个公式没有考虑部分月份。我们用
=((DATEVALUE,LEFT(F16,FIND(“-”,F16)))-间接(ADDRESS(MATCH)(DATEVALUE,LEFT(F16,FIND(“-”,F16))),A1:A12,1),1)减去部分月份(从前面的等式中偷取);*间接(ADDRESS(MATCH(DATEVALUE,LEFT(F16,FIND(“-”,F16))),A1:A12,1))
=(ADDRESS(ADDRESS)(MATCH,DATEVALUE,RIGHT(F16,LEN(F16)-2-FIND))(“-”,F16)),A1:A12,1),2))-DATEVALUE(右(F16,LEN(F16)-2-FIND(“-”,F16)))*间接(地址(匹配(DATEVALUE(右(F16,LEN(F16)-2-FIND(“-”,F16)),A1:A12,1),3))
,我们完成了

最后一个等式:
=SUMPRODUCT((间接地址(匹配日期值(左(F16,FIND(“-”,F16))),A1:A12,1),2)和“:”和地址(匹配日期值(右(F16,LEN(F16)-2-FIND(“-”,F16)),A1:A12,1),2)间接地址(匹配日期值(左(F16,FIND(“-”,F16))),A1:A12,1)和地址(匹配日期值(右(F16,LEN(F16)-2-FIND(“-”),F16)),A1:1),间接地址+1,1)(MATCH(日期值(左(F16,FIND(“-”,F16)))、A1:A12,1)、3)和“::”和地址(MATCH(日期值(右(F16,LEN(F16)-2-FIND(“-”,F16))、A1:A12,1)、3))-((日期值(左(F16,FIND(“-”,F16)))间接(地址(匹配(日期值(左(F16,FIND(“-”,F16))、A1:A12,1)))))间接(地址(匹配(日期值)、左(F16,FIND(“-”,F16))、F16))、间接地址)(A1:A12,1)))(匹配日期值(右(F16,LEN(F16)-2-FIND(“-”,F16)),A1:A12,1),2))-日期值(右(F16,LEN(F16)-2-FIND(“-”,F16)))*间接地址(匹配日期值(右(F16,LEN(F16)-2-FIND(“-”,F16)),A1:A12,1),3))


如果你把数据区域分成两个单独的单元,它会使方程变得更小,并且有更高的正确工作的可能性,因为误差空间更小。

我将把这个分解成几个部分,因为最终的方程会很长

我们必须做两件事,首先分离您的日期范围。我的范围在单元格
F16
中进行测试。这是使用
=MATCH(DATEVALUE(左(F16,FIND(“-”,F16))、A1:A12,1)
=MATCH(右(F16,LEN(F16)-2-FIND(“-”,F16))、A1:A12,1完成的
其中
A1
C12
是您的
从日期
比率
数组。这两个匹配语句将为我们提供第一季度和最后季度范围内的行。使用这些行号,我们使用
地址()
创建引用,例如
=address(match(DATEVALUE(左(F16,FIND(“-”,F16))、A1:A12,1)、2)和“:”和地址(MATCH(DATEVALUE(右(F16,LEN(F16)-2-FIND(“-”,F16))、A1:A12,1)、2)
。在我的测试用例中,前面的公式将吐出
$B$1:$B$9

第二部分是求总数。我们将使用
sumproduct()
。下面是简单的
sumproduct()
公式:
=sumproduct((B1:B7-A1:A7+1),C1:C7)
。对于测试来说,范围现在只是静态的。它将以数组格式取季度末减去季度初,并向每个季度添加1。这是因为
1/31/13-