【问题标题】:How do I join multi-row & multi-column data with an ARRAYFORMULA (or similar) in Google Sheets?如何在 Google 表格中使用 ARRAYFORMULA(或类似)加入多行和多列数据?
【发布时间】:2021-05-18 21:37:42
【问题描述】:

我正在尝试为生物学家和她的学生构建一个 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 式的公式,她可以将其粘贴到单独工作表的 A1 中。

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

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

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    在新工作表的 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))), ",$", ))
    

    【讨论】:

    • 很好地使用max 旋转非数字值
    【解决方案2】:

    尝试:

    =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
          )
        ), ",$",
        )
      )
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      相关资源
      最近更新 更多