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

时间:2019-04-22 05:00:00

标签: google-sheets array-formulas google-sheets-formula

Example

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

如果一个星期中只有四天,然后再做sum(day1:day4) on change%'s data,我在想一个'countif'。

如果有五天,则sum(day1:day5)

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

2 个答案:

答案 0 :(得分:1)

在以下答案中,有必要在数据范围(weeknumweekday)中创建两个附加列(如有必要,可以将其隐藏)以及一个Weekly Lookup Helper Table。助手表可以在单独的页面上;它可以/应该是52行长(每个工作周一个)。

整个解决方案如下:
enter image description here

公式为:
工作日数据范围

  • weeknum(单元格B2)=weeknum(A2,1)
  • 工作日(单元格C2)=weekday(A2)
  • 值(单元格D2)User input
  • 每日更改(单元格E2)=(C2-C3)/C3
  • 每周更改(单元格F2)=IF(ISERROR(vlookup(B2&" "&C2,$H$4:$K$7,4,false)), "", vlookup(B2&" "&C2,$H$4:$K$7,4,false))

查找表

  • 查找键(单元格H4)=I4&" "&J4
  • 周(单元格I4)-用户输入;创建一个长52行的表格,并在此列中输入第1到52周的数字
  • maxifs(单元格J4)=maxifs($C$2:$C,$B$2:$B,I4)
  • 每周更改(单元格K4)=sumif($B$2:$B,I4,$E$2:$E)

逻辑
Helper表
帮助器表很重要。
maxifs:这将提取每个星期数的最大工作日。
Weekly Change:按周数汇总每日更改。 查找关键字只是“ week”和“ maxifs”值的串联;这将是一个唯一值。

工作日范围
"weeknum""weekday"每天创建相关的值。
Friday weekly change是一个vlookup函数,它在工作日/工作日(作为字符串)上进行搜索,并且搜索范围是帮助程序表。 weeknum和weekday的组合将是一个唯一值,这使vlookup成功。

答案 1 :(得分:1)

粘贴到 D2 单元格中并向下拖动:

=ARRAYFORMULA(IF(TEXT(A2, "ddd")="Fri", 
 TEXT(SUMPRODUCT(QUERY(QUERY(TO_TEXT({C$2:C, WEEKNUM(A$2:A), YEAR(A$2:A)}), 
 "where Col3 !=''"), 
 "select Col1 
  where Col2 = '"&WEEKNUM(A2)&"' 
    and Col3 = '"&YEAR(A2)&"'")), "0.00%"), ))

0