首页 > 解决方案 > 如何在 Google 表格中使用 ARRAYFORMULA(或类似)加入多行和多列数据?

问题描述

我正在尝试为生物学家和她的学生构建一个 Google 表格公式,以帮助在程序之间铲除数据。

查看我的 Google 表格可能会更快

出发点:

image   x     y
-----------------
dog    994   557
dog    660   199
cat     74     9 
cat    105    23
cat   5296    93

电子表格可能有任意数量的图像和任意数量的 (x,y) 对。(真实的图像名称对我来说是显微镜图像的简写。)

她需要的输出是每张图像一行,如下所示: imagename,x0,y0,x1,y1,x2,y2...

因此,使用上面的数据:

cat,74,9,105,23,5296,93   
dog,994,557,660,199 

我认为最好有一个 ARRAYFORULA 式的公式,她可以将其粘贴到单独的工作表的 A1 中。

经过一番折腾,我得到的最接近的是两步法。第一步使用 QUERY 创建一列唯一图像名称。第二步必须粘贴到相邻的列,每张图像 1 个,如下所示:

=JOIN(", ", G3, ARRAYFORMULA(FILTER(B:B, A:A = G3)&", "&FILTER(C:C, A:A = G3)))

(其中 G3 是唯一的图像名称,例如“dog”)

它可以工作,但对于可能只有最基本电子表格经验的人来说,它的便携性远不如单一公式。

谢谢!

标签: google-sheetsgoogle-sheets-formulaarray-formulas

解决方案


在新工作表的 A1 中使用:

=ARRAYFORMULA(REGEXREPLACE(TRIM(FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(
 IF(LEN(Sheet1!A2:A&Sheet1!B2:B&Sheet1!C2:C), 
 {Sheet1!A2:A&",", Sheet1!B2:B&", "&Sheet1!C2:C&",", ROW(Sheet1!A2:A)}, ), 
 "select Col1,max(Col2) 
  where Col1 is not null 
  group by Col1  
  pivot Col3"), 
 "offset 1", 0)),, 9^9))), ",$", ))

在此处输入图像描述


推荐阅读