我正在 Excel PowerPivot 中工作,我有一个缺勤数据集,其中每个员工的每一天缺勤都有一行。
我想将缺勤的第一天分配给前一个员工 ID 相同且前一个缺勤日期是连续的(即前一天)的每一行。
我的数据集如下所示:
任何帮助将不胜感激! :)
我之前玩过其他游戏,但我只是在原地打转!
我想提取缺勤发生的第一天(即该员工特定缺勤的日期范围内的第一个日期)并将其添加到该范围内的每一行。
这是一种方法,但它涉及两个计算列。
第一个计算列称为
FirstDateOccurrence
:
=
var thisId = [Employee ID]
var thisReason = [Time Off Reason]
var thisDate = [Time Off Date]
var prevRow = TOPN(1, FILTER('Table1', [Employee ID] = thisId && [Time Off Reason] = thisReason && [Time Off Date] < thisDate), [Time Off Date], DESC)
var prevDate = CALCULATE(MAX([Time Off Date]), prevRow)
return IF(NETWORKDAYS(prevDate, thisDate) > 2, thisDate)
第二个计算列称为
Occurrence ID
:
=
var thisId = [Employee ID]
var thisReason = [Time Off Reason]
var thisDate = [Time Off Date]
var prevRow = TOPN(1, FILTER('Table1', [Employee ID] = thisId && [Time Off Reason] = thisReason && [FirstDateOccurrence] <= thisDate), [FirstDateOccurrence], DESC)
return CALCULATE(MAX([Time Off Date]), prevRow)
作为额外的好处,上面使用了
NETWORKDAYS
,因此如果日期是星期五,下一个日期是星期一,那么它会将他们视为兄弟姐妹。
结果