根据单元格中的 non-blank 个值,在一行中加入 header 行值

JOIN header row values across a row based on non-blank values in cells

所以我有两行:

ID TagDog TagCat TagChair TagArm Grouped Tags (need help with this)
1 TRUE TRUE TagDog,TagArm

第 1 行主要由标签组成,而第 2+ 行是条目。此数据将 ENTRIES 与 TAGS 联系起来。

我需要做的是 concatenate/join 每个条目的标签名称。例如,查看上面的最后一列。

我想我们可以写一个公式:

但我不确定如何编写公式,或者这是否是最好的方法。

我无法创建一个可以为我完成此操作的公式,因此,我使用了 Sheets 的 Find/Replace 工具中的一个公式,它非常有效!

我做了一个 find/replace,将 TRUE 的所有实例替换为以下公式:

=INDIRECT(SUBSTITUTE(LEFT(ADDRESS(ROW(),COLUMN()),3),"$","")&"")

这个公式的作用是找到单元格的字母,然后使用 INDIRECT.

获取单元格的第一行

分解公式:

  • ADDRESS(ROW(),COLUMN()) returns 直接引用:$H
  • LEFT("$H",3) returns $H$
  • SUBSTITUBE("$H$","$","") 替换美元符号 ($) 和 returns H
  • INDIRECT(H&"") 引用了确切的单元格 H

现在,我可以用该公式替换 TRUE 的所有实例,奇迹发生了!

这里有一个视频解释:https://youtu.be/SXXlv4JHDA8

希望这对某人有所帮助——但是,我仍然有兴趣了解此解决方案的公式。

公式如下:

={
  "Grouped Tags (need help with this)";
  ARRAYFORMULA(
    REGEXREPLACE(TRIM(
      TRANSPOSE(QUERY(TRANSPOSE(
        IF(NOT(B2:E11),, B1:E1)
      ),, COLUMNS(B1:E1)))
    ), "\s+", ",")
  )
}

使用的技巧叫做垂直查询粉碎。那是部分:

TRANSPOSE(QUERY(TRANSPOSE(...),, Nnumber_of_columns))

您可以找到关于这个人和他的朋友的简要描述