2014-03-01 65 views
1

这里就是我的工作:是否可以在excel中保持单元格中的值?

A  B  C  D  E  F 
1 | 2/22 | 2/28 | 3/1  | 
2 |Est | Act | Est | Act | Est | Act | 
3 | 8 10  2  1  1  0 | 

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

我想要做的就是让这些值,其中的总和:

如果今天是小于或等于A列中的日期在这里,总结实际值自该日起已经过去。否则,如果今天大于A列中的日期,则将估计值相加,因为我试图获得包括预测值在内的总小时数。

所以我写了,我以为会这样一个公式:

=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预估的天= 12.

虽然在这种情况下,由于我的公式查看“合并”下的所有单元格,我不确定它是否可能。如果我在这个例子中打印A1和B1的值,我会分别得到Feb-14和Jan-00,这对我的公式是个问题

这是否有意义?有可能解决它吗?

回答

1

或许真的有点像:

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

的乘法什么报考条件。

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

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

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

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

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


更详细地,A1:F1<=TODAY()返回的真假的阵列一样,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} 

因为你得到1仅当TRUE得到由另一TRUE相乘,你只要有参与乘法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

+0

这是绝对优秀 - 感谢你和很好的解释。非常感谢! –

+0

@SteveK不客气! – Jerry

相关问题