需求:因為國內的法定假日并非六日,有補班和長假等等,再由于每個人入職時間不同這個天數也是不一樣的,我需要參考入職時間計算一下截止到今天的每個人實際作業天數。
于是我參考2020年放假安排,將所有需要上班的日子做成一張表。
表1:需要上班的日子(僅用1月為例)
日期 星期
2020/1/2 星期四
2020/1/3 星期五
2020/1/6 星期一
2020/1/7 星期二
2020/1/8 星期三
2020/1/9 星期四
2020/1/10 星期五
2020/1/13 星期一
2020/1/14 星期二
2020/1/15 星期三
2020/1/16 星期四
2020/1/17 星期五
2020/1/19 星期日
2020/1/20 星期一
2020/1/21 星期二
2020/1/22 星期三
2020/1/23 星期四
2020/1/31 星期五
表2:人員資訊
姓名 入職時間
張三 2019/12/12
李四 2020/1/15
需要的結果:
在powerpivot中建立計算欄位“實際作業天數"用于計算這個實際值
以下是我用自己的理解寫的運算式(僅表達意圖)
設定今天為2020-1-20
實際作業天數 = count ( 表1[星期] , 表1[日期}>=表2[入職時間] and 表1[日期]<= today() )
最終結果需要是:
張三 14 (包括今天)
李四 5 (因為來的晚,所以之前的不算,來的當天和今天都算,18號不上班不記,19號是國內補班記)
請高手指點,謝謝。
uj5u.com熱心網友回復:
請求幫助,謝謝。uj5u.com熱心網友回復:
在DAX中這種計算實際天數的方法很多,舉例如下:方法1:對作業日表的日期與人員入職時間對比,篩選出符合條件的日期,然后計算行數
.實際作業天數_countrows_filter =
COUNTROWS(
FILTER(
'作業日表',
AND('作業日表'[日期]>=SELECTEDVALUE('人員資訊'[入職時間],MIN('作業日表'[日期])),'作業日表'[日期]<=TODAY())
)
)
方法2:總體思路與方法1其實差不多,只是對作業日表的日期與人員入職時間對比,符合的轉為1后求和
.實際作業天數_sumx =
SUMX(
'作業日表',
AND('作業日表'[日期]>=SELECTEDVALUE('人員資訊'[入職時間],MIN('作業日表'[日期])),'作業日表'[日期]<=TODAY())*1
)
方法3:將人員入職時間到今天的日期構建一個日期表,和作業日表做個交集,然后計算交集的行數,大致寫法如下:
.實際作業天數_countrows_intersect =
COUNTROWS(
INTERSECT(
values('作業日表'[日期]),
CALENDAR(
SELECTEDVALUE('人員資訊'[入職時間],min('作業日表'[日期])),
TODAY()
)
)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/33704.html
下一篇:求助
