是否有可能在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