2014-03-01 62 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

相關問題