根据单元格中的非空白值跨行连接标题行值
Posted
技术标签:
【中文标题】根据单元格中的非空白值跨行连接标题行值【英文标题】:JOIN header row values across a row based on non-blank values in cells 【发布时间】:2021-08-27 23:28:38 【问题描述】:所以我有两行:
ID | TagDog | TagCat | TagChair | TagArm | Grouped Tags (need help with this) |
---|---|---|---|---|---|
1 | TRUE | TRUE | TagDog,TagArm |
第 1 行主要由标签组成,而第 2+ 行是条目。此数据将 ENTRIES 与 TAGS 联系起来。
我需要做的是连接/加入每个条目的标签名称。例如,看看上面的最后一列。
我怀疑我们可以编写一个公式:
在行中创建一个非空单元格数组。 (即:[2,4]) 将其与标题行一起返回A
(即:[A2,A4])
然后join
他们一起用逗号
但我不确定如何编写公式,或者这是否是最好的方法。
【问题讨论】:
我必须为我糟糕的英语水平道歉。我想确认一下我对您的目标的理解是否正确。在您的表格中,当TagDog,TagArm
的单元格为“F2”时,=JOIN(",",FILTER($B$1:$E$1,B2:E2=TRUE))
的示例公式是您期望的结果吗?如果我误解了您的问题,我深表歉意。
【参考方案1】:
公式如下:
=
"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))
你可以找到这个人和他的朋友here的简要描述。
【讨论】:
难以置信!谢谢!【参考方案2】:我无法创建一个可以为我执行此操作的公式,因此我在 Sheets 的查找/替换工具中使用了一个公式,它就像一个魅力!
我进行了查找/替换,将 TRUE
的所有实例替换为以下公式:
=INDIRECT(SUBSTITUTE(LEFT(ADDRESS(ROW(),COLUMN()),3),"$","")&"$1")
这个公式的作用是找到单元格的字母,然后使用INDIRECT
获取单元格的第一行。
分解公式:
ADDRESS(ROW(),COLUMN())
返回直接引用:$H$1
LEFT("$H$1",3)
返回$H$
SUBSTITUBE("$H$","$","")
替换美元符号 ($) 并返回 H
INDIRECT(H&"$1")
引用确切的单元格H$1
现在,我可以用该公式替换 TRUE
的所有实例,神奇的事情发生了!
这里有视频解释:https://youtu.be/SXXlv4JHDA8
希望这对某人有所帮助 - 但是,我仍然有兴趣了解此解决方案的公式。
【讨论】:
如果可以将公式复制下来还有另一种方法:=TEXTJOIN(",", 1, ARRAYFORMULA(IF(NOT(B2:E2),, $B$1:$E$1)))
(screen)
在查找和替换中,您可以将其替换为 =OFFSET(A1, 0, COLUMN() - 1, 1, 1)
以上是关于根据单元格中的非空白值跨行连接标题行值的主要内容,如果未能解决你的问题,请参考以下文章