合并谷歌表格上的多个列,并为该组合列创建一个新标题

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

我有一个连接到谷歌表单的谷歌表格。 因此,当有人回答时,数据如下所示。,

Original Data Sheet

我想要一个可以帮助我创建主数据的脚本, 这个想法是,保留 A 列,然后将 B~P 列合并为一列,并为其创建一个自定义标题,然后创建一个新列,该列将提供它来自哪个分支,然后是 Q 和 R。 结局应该是这样的。

Expected Result

有没有一种方法可以让每次有人回答谷歌表单时,脚本都会自动执行 以那种格式更新?谢谢。

我尝试在网上搜索可以做到这一点的脚本,但我找到的最接近的脚本不断出现错误。

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

这可以使用普通的电子表格公式来完成,而无需诉诸脚本。要取消数据透视并重新排列列,请选择 插入 > 工作表,然后将此公式放入新工作表的单元格

A1
中:

=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),"Branch","Name"),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, filter('Form Responses 1'!A1:R, len('Form Responses 1'!A1:A)), 
  head, choosecols(data, 1, -2, -1), 
  body, choosecols(data, sequence(1, columns(B:P), 2)), 
  table, unpivot_(hstack(head, body), columns(head), 1), 
  choosecols(table, 1, 5, 4, 2, 3) 
)

让(), lambda(), 过滤器()选择cols(), 序列(), 和 hstack().

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