返回列表 上一主題 發帖

[發問] 求問!!表格中月份的比對問題!!

本帖最後由 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))))
向下複製公式

TOP

回復 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的用法,嘗試好多次都沒辦法打出完整的公式 請各位高手幫忙解惑

詳情附件:

test.zip (8.23 KB)

TOP

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

回復 11# p212


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

TOP

本帖最後由 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))))

TOP

回復 14# p212


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

TOP

回復 14# p212


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

TOP

本帖最後由 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))))

TOP

        靜思自在 : 【停滯不前,終無所得】人都迷於尋找奇蹟,因而停滯不前;縱使時間再多、路再長,也了無用處,終無所得。
返回列表 上一主題