先上說明:(為了便於區分嵌套的循環,外層使用 是-否,內層使用 yes-no)
1、判斷表頭年份大於開始時間或者表頭時間小於結束時間,直接填0
2、判斷表頭時間和開始時間是同一年:
是:判斷結束時間和開始時間是否是同一年?
yes--》(結束時間-開始時間+1天)*每天費用
no--》(年末-開始時間計算+1天)*每天費用
否:判斷表頭時間和結束時間是否同一年?
yes--》(結束時間-當年的第一天+1天)*每天費用
no--》表頭當年天數*每天費用
再上代碼:
第一種方法,使用內置DAYS()計算天數 對於WPS不友好,不兼容WPS
=
IF(
OR(VALUE(LEFT(G$2,4))<YEAR($B3),VALUE(LEFT(G$2,4))>YEAR($C3)),
0,
IF(
YEAR($B3)=VALUE(LEFT(G$2,4)),
IF(
YEAR($B3)=YEAR($C3),
(DAYS($C3,$B3)+1)*$F3,
(DAYS(TEXT(LEFT(G$2,4)&1231,"0-00-00"),$B3)+1)*$F3
),
IF(
YEAR($C3)=VALUE(LEFT(G$2,4)),
(DAYS($C3,TEXT(LEFT(G$2,4)&"0101","0-00-00"))+1)*$F3,
(DAYS(TEXT(VALUE(LEFT(G$2,4))&1231,"0-00-00"),TEXT(LEFT(G$2,4)&"0101","0-00-00"))+1)*$F3
)
)
)
第二種方法:日期直接相減,支持WPS
=IF(
OR(VALUE(LEFT(G$2,4))<YEAR($B3),VALUE(LEFT(G$2,4))>YEAR($C3)),
0,
IF(
YEAR($B3)=VALUE(LEFT(G$2,4)),
IF(
YEAR($B3)=YEAR($C3),
($C3-$B3+1)*$F3,
(TEXT(LEFT(G$2,4)&1231,"0-00-00")-$B3+1)*$F3
),
IF(
YEAR($C3)=VALUE(LEFT(G$2,4)),
($C3-TEXT(LEFT(G$2,4)&"0101","0-00-00")+1)*$F3,
(TEXT(VALUE(LEFT(G$2,4))&1231,"0-00-00")-TEXT(LEFT(G$2,4)&"0101","0-00-00")+1)*$F3)
)
)
注意幾點:
1、注意單元格部分根據自己需求調整 主要是開始時間、結束時間、日均費用以及標題時間。
2、表格中的表頭是帶有“年”字的所以需要進行截取。
3、注意修改單元格格式,小數點位數根據需要修改。
表格內容: