同一行内过滤

问题描述 投票:0回答:1

我是电子表格新手。我有点不知所措,但渴望学习!

我创建了一个谷歌表单来跟踪服务技术人员的每日时间记录。技术人员可能在一天内访问多个站点。由于表单不允许循环问题,我不得不创建许多重复的部分。表格随附的 Google 表格位于此处: https://docs.google.com/spreadsheets/d/1ur7eeJnEXZRNy9oWrSLpC_uD7d_c9p94gCNkuXVf2Oo/edit?resourcekey#gid=185521600

我有几个问题:

**1)是否可以在单行中过滤以提取数据? ** 我希望能够对不同时间“类型”的“持续时间”进行求和。例如,如果对应的“类型”=“办公室”,“办公时间”列 (BN) 将是“持续时间”列的总和,如果对应的“类型”,“站点时间”列 (BO) =“持续时间”列的总和" =“服务”或“文件作业”等

  1. 我试图将“行程”计算为一个条目的“完成”和下一个条目的“开始”之间的差异。我想我可以只求和(Start2-Finish1),(Start3-Finish2)...等,如果所有条目都已填满,效果会很好。 (BP3 应该 = 2.25,但结果为 -13.75,因为 BG3 中没有值) 是否可以编写一个公式来执行此操作,直到条目具有值并在条目停止时停止,还是必须使用脚本来完成?

提前感谢您的任何意见!

google-sheets google-sheets-formula
1个回答
0
投票

逆透视数据,然后使用

query()
,如下所示:

=let( 
  unpivot_, lambda(data, numFixedCols, numColsPerGroup, let(k,n(numFixedCols),d,if(k,data,hstack(sequence(rows(data)),data)),f,if(k,k,1),g,numColsPerGroup,s,lambda(r,c,h,w,chooserows(choosecols(d,sequence(1,w,c)),sequence(h,1,r))),h,hstack(s(1,1,1,f),"Label",s(1,f+1,1,g)),i,sequence(1,(columns(d)-f)/g,f+1,g),a,reduce(h,sequence(rows(d)-1,1,2),lambda(a,r,let(x,s(r,1,1,f),b,reduce(tocol(æ,2),i,lambda(y,c,let(z,s(r,c,1,g),if(""=+z,y,vstack(y,hstack(x,s(1,c,1,1),z)))))),vstack(a,b)))),if(k,a,choosecols(a,sequence(1,columns(a)-1,2))))), 

  data, hstack('Form Responses 1'!A1:D, 'Form Responses 1'!BD1:BD, arrayformula(if('Form Responses 1'!D1:D = "Sick", iferror('Form Responses 1'!E1:BC / 0, "Sick"), 'Form Responses 1'!E1:BC))), 
 
  unpivot_(data, 5, 5) 
)
=query( 
  Data!A1:K, 
  "select Col3, Col4, sum(Col10) - sum(Col9) 
   where Col3 is not null 
   group by Col3, Col4 
   label sum(Col10) - sum(Col9) 'Duration' 
   format sum(Col10) - sum(Col9) '[h]:mm' ", 
  1 
)

查看您的示例电子表格

© www.soinside.com 2019 - 2024. All rights reserved.