Board logo

標題: [發問] 如何計算當月到指定某月份的期數值 [打印本頁]

作者: jackson7015    時間: 2013-12-16 16:47     標題: 如何計算當月到指定某月份的期數值

本帖最後由 jackson7015 於 2013-12-16 16:51 編輯

1.假設我要計算今日104/11/25期數(每個月算1期)
那以下的公式要如何精簡,或更有效率?
A1:104/11/25
B1=((12-MONTH(TODAY()))+1)+(12*(LEFT(A1,3)-(LEFT(TODAY(),3)-314)-1))+MID(A1,5,2)
ps.當月份也需算進去

2.承上,假設分成只計算單月份或者雙月份的部分
若C1顯示單月雙月,則計算該單雙月期數
該如何編寫 ?
ps.當月份也須併入單雙月計算

謝謝~:)
作者: p212    時間: 2013-12-16 17:20

本帖最後由 p212 於 2013-12-16 17:29 編輯

回復 1# jackson7015
參與討論「計算今日到104/11/25的期數(每個月算1期)」之另一種算法:
B1=ROUNDUP(YEARFRAC(TODAY(),DATE(LEFT(A1,3)+1911,MID(A1,5,2),RIGHT(A1,2)),0)*12,0)
使用YEARFRAC函數可精準地計算兩個日期相差多少年(計算至小數位)
請參考!
作者: jackson7015    時間: 2013-12-18 08:33

回復 2# p212

感謝P大的協助
的確可以使用YEARFRAC來精細計算

目前計算奇數或偶數月份的時候,有些問題
以下是改正後的計算列

B1=IF(OR(AND(LEFT(C1)="雙",ISODD(MONTH(TODAY()))),AND(LEFT(C1)="單",ISEVEN(MONTH(TODAY())))),IF(LEN(A1)>0,ROUNDUP(YEARFRAC(TODAY(),DATE(LEFT(A1,3)+1911,MID(A1,5,2),RIGHT(A1,2)),0)*12,0),"")-1,IF(LEN(A1)>0,ROUNDUP(YEARFRAC(TODAY(),DATE(LEFT(A1,3)+1911,MID(A1,5,2),RIGHT(A1,2)),0)*12,0),""))

但是會有錯誤,因為若是計算後期月份數,無法只計算奇數或偶數月份的加總
不曉得是否也是利用ISODD和ISEVEN來做計算 ?
作者: jackson7015    時間: 2013-12-24 16:48

新增範例檔案
[attach]17103[/attach]
作者: jackson7015    時間: 2013-12-27 08:47

想了2.3天,也搜尋過站上一般區的相關寫法
還是想不出該怎麼編寫

不曉得是否有大大能幫忙 ?
謝謝
作者: softsadwind    時間: 2013-12-27 11:41

本帖最後由 softsadwind 於 2013-12-27 11:43 編輯

回復 5# jackson7015

       [attach]17132[/attach]
    我把你的日期格式重新輸入一次,改變格式成為日期,用中華民國曆顯示出來
    [attach]17131[/attach]

     參考看看.....

[attach]17133[/attach]
作者: softsadwind    時間: 2013-12-27 12:04

回復 6# softsadwind

   
    E3 = DATE(YEAR(D3),MONTH(D3)+(F3-1),25)

   E3改這樣子比較簡單@@ 他自動會把超過12個月換成年份...

   兩個月一期的公司又不一樣
   E13 =DATE(YEAR(D13),MONTH(D13)+2*F13-2,25)
作者: jackson7015    時間: 2013-12-27 16:01

回復 6# softsadwind
回復 7# softsadwind

非常感謝softsadwind大大的幫忙解惑
原來可以直接使用DATEDIF直接來做月份的加減判斷

而且還間接地幫忙做了期數倒推的截止日部分(原本已KEYIN)
現在反而還可以做檢算

自己也利用特殊單雙月計算部分的地方做了LEN的判斷
原本要以LEFT做單/雙判斷,不過用LEN比較快捷點
感謝大大的協助~:loveliness:
作者: softsadwind    時間: 2013-12-27 16:27

用是不是文字格式 來判斷用那一個公式
G3=IF(ISTEXT(B3),IF(A$2<E3,IF(A$2<D3,F3,IF(DAY(A$2)=DAY(D3),INT((DATEDIF(A$2+1,E3,"M")+2)/2),INT((DATEDIF(A$2,E3,"M")+2)/2))),"0"),IF(A$2<E3,IF(A$2<D3,F3,IF(DAY(A$2)=DAY(D3),DATEDIF(A$2,E3,"M"),DATEDIF(A$2,E3,"M")+1)),"0"))

參考看看




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