如何在 Google 表格中使用 ARRAYFORMULA(或类似的)连接多行和多列数据?

时间:2021-02-16 01:19:42

标签: google-sheets google-sheets-formula array-formulas

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

It may be faster to look at my Google Sheet

起点:

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-ish 公式最有帮助,她可以将其粘贴到单独工作表的 A1 中。

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

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:2)

在新工作表上的 A1 中使用:

<body>
    <table>
        <tr>
            <td>Hi</td>
        </tr>
        <tr>
            <td>From</td>
        </tr>
        <tr>
            <td>Python</td>
        </tr>
    </table>
</body>

enter image description here

答案 1 :(得分:0)

试试:

=ARRAYFORMULA(
  TRANSPOSE(
    REGEXREPLACE(TRIM(
      QUERY(
        {
          TRANSPOSE(UNIQUE(FILTER(A2:A & ",", A2:A <> "")));
          IF(
               FLATTEN(FILTER({A2:A, A2:A}, A2:A <> ""))
            <> TRANSPOSE(UNIQUE(FILTER(A2:A, A2:A <> ""))),,
              FLATTEN(FILTER(B2:C & ",", A2:A <> ""))
          )
        },, 10^7
      )
    ), ",$",
    )
  )
)

enter image description here