Board logo

標題: [發問] 關於IF [打印本頁]

作者: eghost    時間: 2014-9-4 22:40     標題: 關於IF

請教各位先進
假設我有A1、A2、A3三個日期(A1一定會有日期,A2及A3則不一定,A2的日期一定比A3早,三個日期在輸入時,一定是今天之後的日期)

A4要計算出A1或A2或A3到今天的日期還有多少天數(可以是負數)
A4顯示結果的條件如下:

1、如果A2與A3都沒有資料,則顯示今日-A1的天數
2、如果A2或A3有資料,則顯示今日-A2今日-A3的天數
3、如果A2及A3都有資料,則顯示今日-A2的天數
4、如果今日的日期已經超過了A2的日期,則顯示今日-A3的天數

這樣可以用IF的函數得到我要的答案嗎?
還是一定要用VBA?
作者: jackson7015    時間: 2014-9-5 08:35

本帖最後由 jackson7015 於 2014-9-5 08:37 編輯

回復 1# eghost
最笨的各層寫法,參考看看
=IF(AND(LEN(A2)<1,LEN(A3)<1),TODAY()-A1,IF(LEN(A2)>0,TODAY()-A2,IF(LEN(A3)>0,TODAY()-A3,IF(AND(LEN(A2)>0,LEN(A3)>0),TODAY()-A2,IF(TODAY()>A2,TODAY()-A3,"")))))

在請其他前輩簡化
作者: p212    時間: 2014-9-5 09:36

本帖最後由 p212 於 2014-9-5 09:46 編輯

回復 1# eghost
使用定義名稱的解法
1、定義名稱「x」,「參照到」輸入
=IF((工作表1!$A$2="")*(工作表1!$A$3=""),1,IF(OR((工作表1!$A$2<>"")*(工作表1!$A$3<>"")*((TODAY()-工作表1!$A$2)<=0),(工作表1!$A$2<>"")*(工作表1!$A$3="")),2,IF((工作表1!$A$2="")*(工作表1!$A$3<>""),3,3)))
2、儲存格A4輸入公式
=TODAY()-INDEX($A$1:$A$3,x)
請參考!
[註] 原問1#有點奇怪、衝突!抑為吾人不解?似乎儲存格A4顯示結果的條件之4無存在的必要。
假設我有A1、A2、A3三個日期(A1一定會有日期,A2及A3則不一定,A2的日期一定比A3早,三個日期在輸入時,一定是今天之後的日期)
A4顯示結果的條件如下:
4、如果今日的日期已經超過了A2的日期,則顯示今日-A3的天數
作者: luhpro    時間: 2014-9-6 01:47

回復 1# eghost
解析題目:
1、如果A2與A3都沒有資料,則顯示今日-A1的天數
2、如果A2或A3有資料,則顯示今日-A2或今日-A3的天數
3、如果A2及A3都有資料,則顯示今日-A2的天數
4、如果今日的日期已經超過了A2的日期,則顯示今日-A3的天數
可知:
1. 若 A2 有資料, 則顯示 今日-A2 的天數
2. 否則 若 A3 有資料, 則顯示 今日-A3 的天數
3. 否則顯示 今日-A1 的天數
可得 :
A4=TODAY()-IF(A2<>0,A2,IF(A3<>0,A3,A1))

以下為使用 CHOOSE 函數的方法:
A4=TODAY()-CHOOSE((A1<>0)+((A2<>0)*2)+((A3<>0)*4),A1,0,A2,A3,A3,0,A2)
作者: eghost    時間: 2014-9-9 19:49

回復 2# jackson7015


大大,算出來正負號是相反的,為什麼?
而且只要今天的日期是在A2及A3之後,他就會算今日-A2的天數
作者: jackson7015    時間: 2014-9-10 09:15

本帖最後由 jackson7015 於 2014-9-10 09:17 編輯
回復  jackson7015


大大,算出來正負號是相反的,為什麼?
而且只要今天的日期是在A2及A3之後,他就 ...
eghost 發表於 2014-9-9 19:49


1.問題看錯,修正一下
=IF(AND(LEN(A2)<1,LEN(A3)<1),A1-TODAY(),IF(LEN(A2)>0,A2-TODAY(),IF(LEN(A3)>0,A3-TODAY(),IF(AND(LEN(A2)>0,LEN(A3)>0),A2-TODAY(),IF(TODAY()>A2,A3-TODAY(),"")))))

2.因為如果A2或A3有資料,則顯示今日-A2或今日-A3的天數,因為今日日期一定在A1:A3日期之前,且有A2或A3其一資料才會計算,所以依照你的排序A2>A3計算

就如同#2大大所言,第4項條件是和你問題有衝突
作者: eghost    時間: 2014-9-10 15:19

本帖最後由 eghost 於 2014-9-10 15:20 編輯

回復 6# jackson7015


解釋一下:
日期剛開始在輪入時,一定是依<A1一定會有日期,A2及A3則不一定,A2的日期一定比A3早,三個日期在輸入時,一定是今天之後的日期>這個條件下去輪入的,

且先後順序會是       過去的日子---今日---A1---A2---A3---未來更之後的日子

日期輸入後就不大會去更動了,所以當A1、A2、A3的日期都還在今天之後時,適用條件1~3,
但總有一天開檔案的時侯A1、A2及A3的日期都過了今天了,

例如像是這樣           過去的日子---A1---A2---今日---A3---未來更之後的日子
或是這樣的時侯       過去的日子---A1---A2---A3---今日---未來更之後的日子

還是要計算到A3還有幾天或是超過了A3幾天,超過時要顯示負數,所以才會有第四個條件產生。

以上補充,感謝各位先進指正。
作者: jackson7015    時間: 2014-9-10 16:02

回復 7# eghost


    這樣第四點條件就要優先第2或3項排序
我把公式條件放在第1判斷
=IF(AND(TODAY()>A2,LEN(A3)>0),A3-TODAY(),IF(AND(LEN(A2)<1,LEN(A3)<1),A1-TODAY(),IF(LEN(A2)>0,A2-TODAY(),IF(LEN(A3)>0,A3-TODAY(),IF(AND(LEN(A2)>0,LEN(A3)>0),A2-TODAY(),"")))))
在測試看看有沒有符合吧




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