Google Sheets中两个QUERY查询结果相除仅返回单个值的问题求助
Google Sheets 逐列计算两类工人占比问题解决
问题原因
直接将两个返回单行多列的QUERY结果相除时,Google Sheets仅会计算第一列的对应值,不会自动遍历所有列完成除法运算。
解决方案
方法1:用ARRAYFORMULA触发逐列计算
在原表达式外层包裹ARRAYFORMULA,让除法操作作用于两个数组的每一对对应单元格:
=ARRAYFORMULA( QUERY(QUERY(Sheet1!$A$1:$M,"select SUM(J)*4 where A like '"&C2&"' and B like '1' pivot D",0), "select * offset 1",0) / QUERY(QUERY(Sheet1!$A$1:$M,"select SUM(J)*4 where A like '"&C2&"' pivot D",0), "select * offset 1",0) )
方法2:简化QUERY嵌套结构(更高效)
将两类工人的求和结果放在同一个QUERY中,直接计算占比,减少嵌套层级:
=ARRAYFORMULA( QUERY( QUERY(Sheet1!$A$1:$M, "select D, SUM(J)*4 where A like '"&C2&"' group by D pivot B", 0 ), "select Col2/Col3 offset 1", 0 ) )
注:这里Col2对应B='1'的时长总和,Col3对应所有工人的时长总和,需根据你的B列实际取值调整列索引。
处理分母为0的错误
如果某列分母为0,会返回#DIV/0!,可通过IFERROR替换为指定值(比如0):
=ARRAYFORMULA( IFERROR( QUERY(QUERY(Sheet1!$A$1:$M,"select SUM(J)*4 where A like '"&C2&"' and B like '1' pivot D",0), "select * offset 1",0) / QUERY(QUERY(Sheet1!$A$1:$M,"select SUM(J)*4 where A like '"&C2&"' pivot D",0), "select * offset 1",0), 0 ) )
内容的提问来源于stack exchange,提问作者James Balfe
相关产品推荐
相关产品推荐

