google-sheets - 如何在 Google 表格中使用 ARRAYFORMULA(或类似)加入多行和多列数据?
问题描述
我正在尝试为生物学家和她的学生构建一个 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”)
它可以工作,但对于可能只有最基本电子表格经验的人来说,它的便携性远不如单一公式。
谢谢!
解决方案
在新工作表的 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))), ",$", ))
推荐阅读
- pandas - 如何最有效地从 NarrowPeak (BED6+4) 格式文件中检索数据?
- javascript - React Native将SVG转换为PNG?
- mysql - 解决对 mysql 位置的混淆以识别和运行数据库
- c# - 无法在 ASP.NET 网络表单中获取所选项目
- lua - GMOD - Cam3D2D 纹理矩形上的奇怪纹理故障
- visual-studio - 错误:无法启动并输出:无法创建托管进程... c# interactive
- flutter - 包括小部件内 url 的内容
- css - 错误:无效的 CSS,同时将 SASS 转换为 CSS
- postgresql - 如何在postgresql中通过组合计算并发事件的频率/计数?
- php - 如何使用php解析html以获取数组中的值