根据不规则的工作日(由于假期)计算每周变化

Calculating weekly change based on irregular weekdays (due to holidays)

如何根据不规则的工作日(例如包含四个工作日的周)计算每周变化?

我想 'countif' 如果一周只有四天,然后 sum(day1:day4) on change%'s data

如果还有五天,那么 sum(day1:day5)

但是,我无法以代码格式编写。

在下面的答案中,有必要在数据范围(weeknumweekday)中创建两个额外的列(如果需要可以隐藏)加上一个 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%"), ))