从按天加权的每周数据中计算一个月的总和值
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")))
我有一个具有每周值的 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")))