根据单元格中的 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 每个条目的标签名称。例如,查看上面的最后一列。
我想我们可以写一个公式:
- 在行中创建一个包含 non-empty 个单元格的数组。 (即:[2,4])
- Return 它与 header 行
A
(IE: [A2,A4])
- 然后
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))
您可以找到关于这个人和他的朋友的简要描述 。
所以我有两行:
ID | TagDog | TagCat | TagChair | TagArm | Grouped Tags (need help with this) |
---|---|---|---|---|---|
1 | TRUE | TRUE | TagDog,TagArm |
第 1 行主要由标签组成,而第 2+ 行是条目。此数据将 ENTRIES 与 TAGS 联系起来。
我需要做的是 concatenate/join 每个条目的标签名称。例如,查看上面的最后一列。
我想我们可以写一个公式:
- 在行中创建一个包含 non-empty 个单元格的数组。 (即:[2,4])
- Return 它与 header 行
A
(IE: [A2,A4]) - 然后
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$","$","")
替换美元符号 ($) 和 returnsH
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))
您可以找到关于这个人和他的朋友的简要描述