根据不规则的工作日(由于假期)计算每周变化
Calculating weekly change based on irregular weekdays (due to holidays)
如何根据不规则的工作日(例如包含四个工作日的周)计算每周变化?
我想 'countif' 如果一周只有四天,然后 sum(day1:day4) on change%'s data
。
如果还有五天,那么 sum(day1:day5)
。
但是,我无法以代码格式编写。
在下面的答案中,有必要在数据范围(weeknum
和 weekday
)中创建两个额外的列(如果需要可以隐藏)加上一个 Weekly Lookup Helper Table
. Helper table 可以在单独的 sheet 上;它 can/should 有 52 行(每个工作周一行)。
整个解决方案如下所示:
公式为:
工作日数据范围
- 周数(单元格 B2)
=weeknum(A2,1)
- 工作日(单元格 C2)
=weekday(A2)
- 值(单元格 D2)
User input
- 每日变化(单元格 E2)
=(C2-C3)/C3
- 每周变化(单元格 F2)
=IF(ISERROR(vlookup(B2&" "&C2,$H:$K,4,false)), "", vlookup(B2&" "&C2,$H:$K,4,false))
查找Table
- 查找键(单元格 H4)
=I4&" "&J4
- 周(单元格 I4)- 用户输入;创建一个 table 52 行长,并在此列中输入周数 1 到 52
- maxifs(单元格 J4)
=maxifs($C:$C,$B:$B,I4)
- 每周变化(单元格 K4)
=sumif($B:$B,I4,$E:$E)
逻辑
帮手table
帮手table很重要
maxifs
:这会提取每个星期数的最大工作日。
Weekly Change
:按周数求和每日变化。
查找键只是 "week" 和 "maxifs" 值的串联;这将是一个唯一值。
工作日范围
"weeknum"
和 "weekday"
为每一天创建相关值。
Friday weekly change
是一个在 weeknum/weekday(作为字符串)上搜索的 vlookup 函数,搜索范围是辅助函数 table。 weeknum 和 weekday 的组合将是一个唯一值,使 vlookup 能够成功。
粘贴到 D2 单元格并向下拖动:
=ARRAYFORMULA(IF(TEXT(A2, "ddd")="Fri",
TEXT(SUMPRODUCT(QUERY(QUERY(TO_TEXT({C:C, WEEKNUM(A:A), YEAR(A:A)}),
"where Col3 !=''"),
"select Col1
where Col2 = '"&WEEKNUM(A2)&"'
and Col3 = '"&YEAR(A2)&"'")), "0.00%"), ))
如何根据不规则的工作日(例如包含四个工作日的周)计算每周变化?
我想 'countif' 如果一周只有四天,然后 sum(day1:day4) on change%'s data
。
如果还有五天,那么 sum(day1:day5)
。
但是,我无法以代码格式编写。
在下面的答案中,有必要在数据范围(weeknum
和 weekday
)中创建两个额外的列(如果需要可以隐藏)加上一个 Weekly Lookup Helper Table
. Helper table 可以在单独的 sheet 上;它 can/should 有 52 行(每个工作周一行)。
整个解决方案如下所示:
公式为:
工作日数据范围
- 周数(单元格 B2)
=weeknum(A2,1)
- 工作日(单元格 C2)
=weekday(A2)
- 值(单元格 D2)
User input
- 每日变化(单元格 E2)
=(C2-C3)/C3
- 每周变化(单元格 F2)
=IF(ISERROR(vlookup(B2&" "&C2,$H:$K,4,false)), "", vlookup(B2&" "&C2,$H:$K,4,false))
查找Table
- 查找键(单元格 H4)
=I4&" "&J4
- 周(单元格 I4)- 用户输入;创建一个 table 52 行长,并在此列中输入周数 1 到 52
- maxifs(单元格 J4)
=maxifs($C:$C,$B:$B,I4)
- 每周变化(单元格 K4)
=sumif($B:$B,I4,$E:$E)
逻辑
帮手table
帮手table很重要
maxifs
:这会提取每个星期数的最大工作日。
Weekly Change
:按周数求和每日变化。
查找键只是 "week" 和 "maxifs" 值的串联;这将是一个唯一值。
工作日范围
"weeknum"
和 "weekday"
为每一天创建相关值。
Friday weekly change
是一个在 weeknum/weekday(作为字符串)上搜索的 vlookup 函数,搜索范围是辅助函数 table。 weeknum 和 weekday 的组合将是一个唯一值,使 vlookup 能够成功。
粘贴到 D2 单元格并向下拖动:
=ARRAYFORMULA(IF(TEXT(A2, "ddd")="Fri",
TEXT(SUMPRODUCT(QUERY(QUERY(TO_TEXT({C:C, WEEKNUM(A:A), YEAR(A:A)}),
"where Col3 !=''"),
"select Col1
where Col2 = '"&WEEKNUM(A2)&"'
and Col3 = '"&YEAR(A2)&"'")), "0.00%"), ))