从按天加权的每周数据中计算一个月的总和值

Sum values for a month from weekly data weighted by day

我有一个具有每周值的 sheet,我想计算每月值是多少。问题是,如果一周的价值说 70 分为两个月(比如 1 月的 3 天和 2 月的 4 天) - 我希望 1 月的计算(求和)值取一周的值和(3 /7) x 70 = 1 月的 30 和 (4/7) x 70 = 2 月的总和 40。

示例 sheet 此处:https://docs.google.com/spreadsheets/d/19LClrTXihPfwRtvX7nrOfKpz7aLC-RrczpED-U8ufmo/edit#gid=0

如能提供有关公式的任何帮助,我们将不胜感激。

=ARRAYFORMULA(REGEXREPLACE(TO_TEXT(QUERY({TEXT(TRANSPOSE(D1:1), "m♦mmmm yyyy"), 
 TRANSPOSE(D2:2)-IF(MOD(ROW(INDIRECT("A1:A"&COLUMNS(D1:1))), 4)=0, 
 DAYS(EOMONTH(TRANSPOSE(D1:1), 0), TRANSPOSE(D1:1))/7*TRANSPOSE(D2:2), )+
 QUERY({""; IF(MOD(ROW(INDIRECT("A1:A"&COLUMNS(D1:1))),4)=0, 
 DAYS(EOMONTH(TRANSPOSE(D1:1), 0), TRANSPOSE(D1:1))/7*TRANSPOSE(D2:2), )}, 
 "limit "&COLUMNS(D1:1), 0)}, 
 "select Col1,sum(Col2) where not Col2 = 0 group by Col1 label sum(Col2)''", 0)), 
 "(.+)♦", ))


修复:

=ARRAYFORMULA(TRANSPOSE(QUERY({REGEXREPLACE(TO_TEXT(QUERY({TEXT(TRANSPOSE(D1:1), "m♦mmmm yyyy"), 
 TRANSPOSE(D2:2)-IF(MOD(ROW(INDIRECT("A1:A"&COLUMNS(D1:1))), 4)=0, 
 DAYS(EOMONTH(TRANSPOSE(D1:1), 0), TRANSPOSE(D1:1))/7*TRANSPOSE(D2:2), )+
 QUERY({""; IF(MOD(ROW(INDIRECT("A1:A"&COLUMNS(D1:1))),4)=0, 
 DAYS(EOMONTH(TRANSPOSE(D1:1), 0), TRANSPOSE(D1:1))/7*TRANSPOSE(D2:2), )}, 
 "limit "&COLUMNS(D1:1), 0)}, 
 "select Col1,sum(Col2) where not Col2 = 0 group by Col1 label sum(Col2)''", 0)), 
 "(.+)♦", ), 
 IF(LEN(QUERY(REGEXREPLACE(TO_TEXT(QUERY({TEXT(TRANSPOSE(D1:1), "m♦mmmm yyyy"), 
 TRANSPOSE(D2:2)-IF(MOD(ROW(INDIRECT("A1:A"&COLUMNS(D1:1))), 4)=0, 
 DAYS(EOMONTH(TRANSPOSE(D1:1), 0), TRANSPOSE(D1:1))/7*TRANSPOSE(D2:2), )+
 QUERY({""; IF(MOD(ROW(INDIRECT("A1:A"&COLUMNS(D1:1))),4)=0, 
 DAYS(EOMONTH(TRANSPOSE(D1:1), 0), TRANSPOSE(D1:1))/7*TRANSPOSE(D2:2), )}, 
 "limit "&COLUMNS(D1:1), 0)}, 
 "select Col1,sum(Col2) where not Col2 = 0 group by Col1 label sum(Col2)''", 0)), 
 "(.+)♦", ),"select Col1",0)), MONTH(LEFT(
 QUERY(REGEXREPLACE(TO_TEXT(QUERY({TEXT(TRANSPOSE(D1:1), "m♦mmmm yyyy"), 
 TRANSPOSE(D2:2)-IF(MOD(ROW(INDIRECT("A1:A"&COLUMNS(D1:1))), 4)=0, 
 DAYS(EOMONTH(TRANSPOSE(D1:1), 0), TRANSPOSE(D1:1))/7*TRANSPOSE(D2:2), )+
 QUERY({""; IF(MOD(ROW(INDIRECT("A1:A"&COLUMNS(D1:1))),4)=0, 
 DAYS(EOMONTH(TRANSPOSE(D1:1), 0), TRANSPOSE(D1:1))/7*TRANSPOSE(D2:2), )}, 
 "limit "&COLUMNS(D1:1), 0)}, 
 "select Col1,sum(Col2) where not Col2 = 0 group by Col1 label sum(Col2)''", 0)), 
 "(.+)♦", ),"select Col1", 0), 3)&1)&RIGHT(
 QUERY(REGEXREPLACE(TO_TEXT(QUERY({TEXT(TRANSPOSE(D1:1), "m♦mmmm yyyy"), 
 TRANSPOSE(D2:2)-IF(MOD(ROW(INDIRECT("A1:A"&COLUMNS(D1:1))), 4)=0, 
 DAYS(EOMONTH(TRANSPOSE(D1:1), 0), TRANSPOSE(D1:1))/7*TRANSPOSE(D2:2), )+
 QUERY({""; IF(MOD(ROW(INDIRECT("A1:A"&COLUMNS(D1:1))),4)=0, 
 DAYS(EOMONTH(TRANSPOSE(D1:1), 0), TRANSPOSE(D1:1))/7*TRANSPOSE(D2:2), )}, 
 "limit "&COLUMNS(D1:1), 0)}, 
 "select Col1,sum(Col2) where not Col2 = 0 group by Col1 label sum(Col2)''", 0)), 
 "(.+)♦", ),"select Col1", 0), 4), )*1}, 
 "select Col1,Col2 order by Col3")))