Board logo

標題: [發問] 求問!!表格中月份的比對問題!! [打印本頁]

作者: rszo    時間: 2013-8-26 11:04     標題: 求問!!表格中月份的比對問題!!

現在表格中1998/6/1的年月日會以今天的時間2013/8/26下去跑總共有多長來輸出,是不是可以設定成2013/5/5 下去跑共經過多長時間來輸出?
附件表格中的C欄公式為:
=IF(B2<>"",DATEDIF(B2,TODAY(),"y")&"年"&DATEDIF(B2,TODAY(),"ym")&"個月","")
會導致C欄輸出為 15年2個月

D欄公式:
=IF(C2<>"",DATEDIF(B2,TODAY(),"y"),"")
只看年分,月份無條件捨去

是不是能修改成:
A                                B                           C                              D
2013/5/5        1998/6/1           14年11個月             14年

請問要如何修改?

[attach]15854[/attach]
作者: p212    時間: 2013-8-26 12:24

本帖最後由 p212 於 2013-8-26 12:29 編輯

回復 1# rszo
以您提供的範例執行修改:
1、A2儲存格輸入2013/5/5
2、C2儲存格公式原有的TODAY()改成A2即可,C2儲存格修改後如下列公式:
=IF(B2<>"",DATEDIF(B2,A2,"y")&"年"&DATEDIF(B2,A2,"ym")&"個月","")
3、D2儲存格公式修改方式亦同
=IF(C2<>"",DATEDIF(B2,A2,"y"),"")
請問這樣可以嗎?
作者: rszo    時間: 2013-8-26 13:08

回復 2# p212


    感謝回復!這樣改確實可以使用了!之前修改的時候不知道要把"()"一起修改掉,難怪都不會成功!
作者: rszo    時間: 2013-8-26 13:29

本帖最後由 rszo 於 2013-8-26 13:32 編輯

因為新手還在邊爬文邊實習的階段,對於IF的用法還不是很熟悉,另請教一個問題,若C欄剛好為14年0個月
要多加甚麼限制才能讓D欄輸出為13年?但是只有剛好月數為0的樂的情況才-1年,其他情況(EX:14年1個月以上)則維持14年
作者: rszo    時間: 2013-8-26 13:36

回復 4# rszo


    超過3分鐘不能再編輯,這裡再補充一下
以上情況如果再加一個條件:1年0個月維持輸出1年,2年0個月以上才繼續套用上述情況要怎麼修改?
作者: p212    時間: 2013-8-26 13:39

本帖最後由 p212 於 2013-8-26 13:43 編輯

回復 4# rszo
D2儲存格公式修改為
=IF(C2<>"",YEARFRAC(B2,A2),"")
這樣可以嗎?
ps.小數位數請自行設定
作者: rszo    時間: 2013-8-26 14:11

十分感謝您的回復!
剛剛測試了一下,若2013/5/5可以讓有小數點的情況發生
但是若日期A2改成2013/7/31,D5則會輸出14.05
這樣修改好像只有某些特定日期能小於14(小數位數自行設定無條件捨去的話)
補充:以上情況如果再加一個條件:1年0個月維持輸出1年,2年0個月以上才繼續套用上述情況
這樣子有沒有其他方法修改呢?
作者: rszo    時間: 2013-8-26 15:04

回復 6# p212


不好意思,剛剛沒注意沒點到回復按鈕.
   
十分感謝您的回復!
剛剛測試了一下,若2013/5/5可以讓有小數點的情況發生
但是若日期A2改成2013/7/31,D5則會輸出14.05
這樣修改好像只有某些特定日期能小於14(小數位數自行設定無條件捨去的話)
補充:以上情況如果再加一個條件:1年0個月維持輸出1年,2年0個月以上才繼續套用上述情況
這樣子有沒有其他方法修改呢?
作者: rszo    時間: 2013-8-26 15:19

回復 6# p212


    這是我剛剛測試出來的檔案
因為以後都想要以某月的月初或月尾來做標準時間下去run
遇到如D5或I2的情況則此方法不適用,能有其他方法嗎?


[attach]15855[/attach]
作者: p212    時間: 2013-8-26 16:12

本帖最後由 p212 於 2013-8-26 16:20 編輯

回復 9# rszo
請問
在start_date為1999/7/13且end_date為2013/7/31時,使用YEARFRAC函數精準地計算該二日期相差為「14.05」年之情況下,
您要的答案是「13」而不為「14」?抑另為其他答案?
可否再將條件整理一下(如範例檔加註欄位名稱、敘述用意等)以供大夥兒一齊討論?
謝謝!
作者: p212    時間: 2013-8-26 16:33

本帖最後由 p212 於 2013-8-26 16:39 編輯

回復 9# rszo
承10#回覆_您要的答案是「13」而不為「14」?
請參考下列作法
1、請在9#範例檔之D2儲存格輸入
=IF(C2="","",IF(DATEDIF(B2,$A$2,"ym")=0,INT(YEARFRAC(B2,$A$2)-1),INT(YEARFRAC(B2,$A$2))))
向下複製公式
2、請在9#範例檔之J2儲存格輸入
=IF(I2="","",IF(DATEDIF(H2,$G$2,"ym")=0,INT(YEARFRAC(H2,$G$2)-1),INT(YEARFRAC(H2,$G$2))))
向下複製公式
作者: rszo    時間: 2013-8-26 16:53

回復 10# p212


  謝謝您花時間,在此我再整理一下,免得大家看得頭痛
在start_date為1999/7/13且end_date為2013/7/31時,使用YEARFRAC函數精準地計算該二日期相差為「14.05」年之情況下,
您要的答案是「13」而不為「14」?A:我希望得到的答案為13

我希望在C列中若是"月份為0"的話則D列輸出年份-1,但C列年份若為1的情況下D列輸出年份不-1,一切情況皆須C列中年份>1 and 月份為0 的情況下才執行.

我目前的邏輯是這樣(不知道有沒有邏輯錯誤還是太複雜化):
IF N年0月時 N=0則N=0 否則 IF N年0月時N=1.則N=1否則IF N年0月時 N-1否則N=N
不是很熟if的用法,嘗試好多次都沒辦法打出完整的公式 請各位高手幫忙解惑

詳情附件:

[attach]15856[/attach]
作者: rszo    時間: 2013-8-26 17:13

本帖最後由 rszo 於 2013-8-26 17:15 編輯

回復 11# p212


再次的感謝您!以此公式下去跑可以執行
不過12#中新增的附件內1年0個月的情況下不想要年份-1的話 這要怎樣增加if還是其他函數下去RUN呢?
作者: p212    時間: 2013-8-27 08:29

本帖最後由 p212 於 2013-8-27 08:32 編輯

回復 13# rszo
以12#提供的附件檔修改公式
請在D3儲存格輸入
=IF(C3="","",IF(AND(DATEDIF(B3,A3,"y")>1,DATEDIF(B3,A3,"ym")=0),INT(YEARFRAC(B3,A3)-1),INT(YEARFRAC(B3,A3))))
作者: rszo    時間: 2013-8-27 09:06

回復 14# p212


    感謝您的回復!以您給的公式下去可以順利執行
我現在則在測試有沒有甚麼特定日期會導致有誤差的情況發生.
看來我的邏輯概念還太差了需要再加強..
作者: rszo    時間: 2013-8-27 09:44

回復 14# p212


剛測試了一下,好像在run的時候若是A與B列日期只相差1天的話
會變成:
            A                           B                        C                       D
  2013/7/31         2011/8/1          1年11個月            2
這情況是不是因為日期太接近所以小數點無限趨近於0.999999=1呢?
作者: p212    時間: 2013-8-27 11:21

本帖最後由 p212 於 2013-8-27 11:24 編輯

回復 16# rszo
1、YEARFRAC(start_date,end_date,basis)函數用以精準地計算兩個日期相差多少年(含小數)
其中basis係指所採用的日計利基的類型,若無特殊需求,建議basis採用0或省略即可
請依您的需求選擇basis修改
basis-----------日計利基的類型
0或省略--------US (NASD) 30/360
1---------------實際天數/實際天數
2---------------實際/360
3---------------實際/365
4---------------歐洲 30/360

2、basis採用「1」可能較貼近您的需求,承13#之D3儲存格公式修改參考如下。
=IF(C3="","",IF(AND(DATEDIF(B3,A3,"y")>1,DATEDIF(B3,A3,"ym")=0),INT(YEARFRAC(B3,A3,1)-1),INT(YEARFRAC(B3,A3,1))))




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