Google Sheets员工月度工时动态求和数组实现技术问询
解决Google Sheets月度工时统计问题
问题分析
你当前的公式失效核心原因:
- QUERY函数中使用
row1是错误语法,QUERY需用列范围(如B1:D1)而非行号指代数据; - 原公式仅针对单行员工求和,未实现按每位员工分别统计月度总和的需求。
动态统计公式
生成月度总和数组
若需统计2023年9月、2023年10月的月度工时,以下公式可生成每位员工的月度总和二维数组(每行对应一位员工的各月总和):
=ARRAYFORMULA(BYROW(B2:D3, LAMBDA(emp_row, LET( target_periods, {"2023-09"; "2023-10"}, monthly_sums, MAP(target_periods, LAMBDA(period, SUM(FILTER(emp_row, TEXT(B1:D1, "yyyy-mm")=period)) )), monthly_sums ) )))
生成指定格式字符串
若需要将结果格式化为{23年9月工时总和;23年10月工时总和;...}的字符串,可使用调整后的公式:
=ARRAYFORMULA(BYROW(B2:D3, LAMBDA(emp_row, LET( target_periods, {"2023-09"; "2023-10"}, monthly_sums, MAP(target_periods, LAMBDA(period, SUM(FILTER(emp_row, TEXT(B1:D1, "yyyy-mm")=period)) )), "{"&TEXTJOIN("; ", FALSE, monthly_sums)&"}" ) )))
适配大范围数据
若你的数据区域更大(如日期列从B1到Z1,员工行从B2到B100),只需修改公式中的范围参数:
- 将
B2:D3替换为实际员工工时区域(如B2:Z100); - 将
B1:D1替换为实际日期表头区域(如B1:Z1); - 修改
target_periods中的年月值即可扩展统计范围。
内容的提问来源于stack exchange,提问作者gurrilan
相关产品推荐
相关产品推荐

