Board logo

標題: 困擾的 EXCEL ( IF) [打印本頁]

作者: Cyssuc    時間: 2014-9-8 09:25     標題: 困擾的 EXCEL ( IF)

上班        下班
8        21

=IF(((Q2-P2)>8),8,
IF(Q2=0,0,
IF(P2=0,0,
IF((AND(P2<12,Q2>12)),(SUM(Q2-P2-1)),(SUM(Q2-P2))))))

假設
下班-上班  大於8  就用8計算
如果任何一格等於0 用0計算
如果上班小於12下班大於12 則下班-上班再減1
都不是的話則下班-上班

上面的計算結果 這樣正確嘛!?
作者: luhpro    時間: 2014-9-8 23:45

本帖最後由 luhpro 於 2014-9-8 23:46 編輯

回復 1# Cyssuc
1. 第二項任何一格等於0 可用 OR(Q2=0,P2=0) 來實現.
2. 只有兩個儲存格間的計算, 似乎不用用到 SUM 函數.

所以可得 :

=IF((Q2-P2)>8,8,IF(OR(Q2=0,P2=0),0,IF(AND(P2<12,Q2>12),Q2-P2-1,Q2-P2)))
作者: Cyssuc    時間: 2014-9-9 08:18

回復 2# luhpro


    8        14.5
答案應該等於14.5-8-1
故等於5.5

問題是 按上方列表計算答案是6.5   所以納悶。。。

請您是否可以在解答一次呢?!
作者: ML089    時間: 2014-9-9 09:18

本帖最後由 ML089 於 2014-9-9 09:20 編輯

回復 1# Cyssuc

早上 8~12,下午 13~17

= 早上時數 + 下午時數
= MAX(0,MIN(12,Q2)-MAX(8,P2)) + MAX(0,MIN(17,Q2)-MAX(13,P2))


=IF(AND(P2>0,Q2>0), MAX(0,MIN(12,Q2)-MAX(8,P2)) + MAX(0,MIN(17,Q2)-MAX(13,P2)), "")
作者: Cyssuc    時間: 2014-9-9 14:59

回復 4# ML089


    如果早上8點
中午12點下班

兩個公式 貌似都會錯誤

麻煩了
作者: ML089    時間: 2014-9-9 15:24

回復 5# Cyssuc

這樣哪裡有錯?
[attach]19118[/attach]
作者: ML089    時間: 2014-9-9 16:08

回復 3# Cyssuc

    8        14.5
答案應該等於14.5-8-1
故等於5.5

[attach]19119[/attach]
作者: Cyssuc    時間: 2014-9-9 17:00

回復 7# ML089


   
    我想哭的原因。。。。
作者: ML089    時間: 2014-9-9 17:23

回復 8# Cyssuc

可能需要按F9重新計算

不然將部分資料檔案上傳,我幫你看看問題在哪裡
作者: luhpro    時間: 2014-9-9 22:09

本帖最後由 luhpro 於 2014-9-9 22:21 編輯
回復  luhpro
    8        14.5
答案應該等於14.5-8-1
故等於5.5
問題是 按上方列表計算答案是6.5   所 ...
Cyssuc 發表於 2014-9-9 08:18

咦?
我的電腦算出來是對的耶...
[attach]19124[/attach]

回復  ML089
    我想哭的原因。。。。
Cyssuc 發表於 2014-9-9 17:00

話說表面上看不出來問題點,
是否你可以把 P50 與 Q 50 的公式也秀出來看看.
還有你可以測測看將 P50 與 Q50 兩個儲存格都先刪除值,
再將格式改為 "G/通用格式",
最後分別打上 13 與 17 兩個整數數值覆蓋上去看看是否 O50 的結果會變正常..
作者: Cyssuc    時間: 2014-9-11 14:53

回復 10# luhpro


    我已經 好氣餒~~  哈哈

感謝提醒  單純KEY 數字 是對的
作者: luhpro    時間: 2014-9-11 23:28

回復 11# Cyssuc
首先, 用來做計算的式子元素,不建議文字而最好是給數值,
建議你採用 =IF(TIME(16,0,0)<G96,17,...而非 =IF(TIME(16,0,0)<G96,"17",...
因為系統將文字自動轉換成數值的動作有可能因為浮點精度而產生誤差.

其次觀察你給的公式 :
Q96的式子 從 18.5 直接跳 17, 13.5 直接跳 12  確實是你想要的結果嗎?
還是打錯了?
若是等距計算可以用 =IF(G96<TIME(8,30,0),0,HOUR(G96)+IF(MINUTE(G96)<30,0.5,1)) 來完成.
若該式無誤則可改用:
=IF(OR(G96>=TIME(18,30,0),G96<TIME(16,30,0)),HOUR(G96)+IF(MINUTE(G96)<30,0.5,1),IF(G96>=TIME(17,20,0),17,16.5))
試試看.
作者: ML089    時間: 2014-9-12 09:37

回復 11# Cyssuc

你的資料是文字格式,當然會錯誤

公式修改如下

早上 8~12,下午 13~17

= 早上時數 + 下午時數
= MAX(0,MIN(12,Q2*1)-MAX(8,P2*1)) + MAX(0,MIN(17,Q2*1)-MAX(13,P2*1))

或直接用來源
= MAX(0,MIN(12/24,G2)-MAX(8/24,E2)) + MAX(0,MIN(17/24,G2)-MAX(13/24,E2))




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)