是否有可能在Excel中保持单元格的值?

以下是我正在处理的内容:

ABCDEF 1 | 2/22 | 2/28 | 3/1 | 2 |Est | Act | Est | Act | Est | Act | 3 | 8 10 2 1 1 0 | 

在这个例子中,date单元格被合并,目标是date应该跨越其下面的估计和实际列。

我想要做的是获得这些价值的总和:

如果今天小于或等于此处A列中的date,那么将自该date以来的实际值累计。 否则,如果今天大于A列中的date,则将估计值相加,因为我试图获得包括预测值在内的总计小时数。

所以我写了一个我认为会这样做的公式:

 =SUM(IF(TODAY()<=A1:F1,IF(A2:F2="Act",A3:F3),IF(TODAY()>A1:F1,IF(A2:F2="Est",A3:F3)))) 

我开始的那天是2/28,我希望总数是11(Act)+ 1 Est = 12。

但在这种情况下,由于我的公式考虑了“合并”下的所有单元格,我不确定它是否可能。 如果我在这个例子中打印A1和B1的值,那么我会分别得到2月14日和1月00这是我的公式

这有道理吗? 是否有可能解决它?

也许有点像这样的:

 =SUMPRODUCT((A1:F1<=TODAY())*(A1:F1<>"")*B3:G3)+SUMPRODUCT((A1:F1>TODAY())*A3:F3) 

乘法是适用条件。

A1:F1<=TODAY()获取今天和以前的所有date。

A1:F1<>""确保不包含空白单元格(在合并的单元格中,只有最右侧的单元格地址具有该值,其他单元格被视为空白)。

B3:G3是以实际值开始的范围。

SUMPRODUCT((A1:F1<=TODAY())*(A1:F1<>"")*B3:G3)获得所有实际值的总和。

稍微不复杂的SUMPRODUCT((A1:F1>TODAY())*A3:F3)得到所有估计值的总和。


更详细地说, A1:F1<=TODAY()返回一个true和false的数组,就像A1:F1<>""A1:F1>TODAY() 。 在你的例子中,我们有A1:F1<=TODAY()这是:

 {2/22,0,2/28,0,3/1,0}<=TODAY() 

给出数组{TRUE,TRUE,TRUE,TRUE,FALSE,TRUE} 。 同样, `A1:F1<>""给出数组:

 {TRUE,FALSE,TRUE,FALSE,TRUE,FALSE} 

当它们相乘时,它们被转换成1和0,1为真,0为假。 (A1:F1<=TODAY())*(A1:F1<>"")从而给出数组:

 {1,0,1,0,0,0} 

因为只有在TRUE乘以另一个TRUE时才得到1,一旦乘法中包含FALSE ,您就得到0。

数组然后变成:

 {1,0,1,0,0,0}*B3:G3 

这是:

 {1,0,1,0,0,0}*{10,2,1,1,0,0} 

给:

 (10,0,1,0,0,0} 

然后SUMPRODUCT增加这些数字给予11`

同样,如果我们有SUMPRODUCT((A1:F1>TODAY())*A3:F3) ,我们得到:

 SUMPRODUCT({FALSE,FALSE,FALSE,FALSE,TRUE,FALSE}*{8,10,2,1,1,0}) 

哪一个给1