如何为表格中的一行中的非空白单元格收集数据和 headers
How to collect data and headers for non blank cells in a row in Sheets
我找不到解决问题的办法:
我有一个 sheet 约 290 行和约 80 列。第一行第一列是fixed/header.
我想将 non-blank 个值及其 header 收集到 B 列中。
我曾尝试寻找解决方案,但我并不擅长 excel,因此我无法理解我找到的大部分建议。
Excel不一样Google张
=ARRAYFORMULA(TRIM(REGEXREPLACE(
TRANSPOSE(
QUERY(TRANSPOSE(IF(C2:F13<>"",C1:F1 & ", ","")),,99^99)
),
"((\s+)|(,\s*$))",
" "
)))
在 Google 表格中,您可以使用数组公式。我懂了:
我用过的公式:
=ArrayFormula(CONCATENATE(IF(--(C2:G2<>"")*COLUMN($C:$G)<>0;$C:$G&" "&C2:G2;"")))
这是它的工作原理:
(--(C2:G2<>"")
将 return 一个 0 和 1 的数组,如果单元格是否为空
COLUMN($C:$G)
将 return 每个单元格的列号数组
(C2:G2<>"")*COLUMN($C:$G)
我们将两个数组相乘,所以我们将得到一个包含非空白单元格列号和 0 个空白单元格列号的数组
<>0;$C:$G&" "&C2:G2;"")
我们检查第3步得到的数组中的每个数是否为0。如果它是 0,它 return 是一个空值,如果不是,它 return 是单元格的值
CONCATENATE
将连接上一个数组中的所有值(第 4 步),因此我们将空值与非空白单元格的实际值连接起来。
如果记录太多,不确定这是否会使 sheet 加载速度变慢。
希望对您有所帮助
使用:
=ARRAYFORMULA(REGEXREPLACE(TRIM(TRANSPOSE(QUERY(TRANSPOSE(
IF(C2:G<>"", C1:G1&" "&C2:G&",", )),,99^99))), ",$", ))
我找不到解决问题的办法:
我有一个 sheet 约 290 行和约 80 列。第一行第一列是fixed/header.
我想将 non-blank 个值及其 header 收集到 B 列中。
我曾尝试寻找解决方案,但我并不擅长 excel,因此我无法理解我找到的大部分建议。
Excel不一样Google张
=ARRAYFORMULA(TRIM(REGEXREPLACE(
TRANSPOSE(
QUERY(TRANSPOSE(IF(C2:F13<>"",C1:F1 & ", ","")),,99^99)
),
"((\s+)|(,\s*$))",
" "
)))
在 Google 表格中,您可以使用数组公式。我懂了:
我用过的公式:
=ArrayFormula(CONCATENATE(IF(--(C2:G2<>"")*COLUMN($C:$G)<>0;$C:$G&" "&C2:G2;"")))
这是它的工作原理:
(--(C2:G2<>"")
将 return 一个 0 和 1 的数组,如果单元格是否为空COLUMN($C:$G)
将 return 每个单元格的列号数组(C2:G2<>"")*COLUMN($C:$G)
我们将两个数组相乘,所以我们将得到一个包含非空白单元格列号和 0 个空白单元格列号的数组<>0;$C:$G&" "&C2:G2;"")
我们检查第3步得到的数组中的每个数是否为0。如果它是 0,它 return 是一个空值,如果不是,它 return 是单元格的值CONCATENATE
将连接上一个数组中的所有值(第 4 步),因此我们将空值与非空白单元格的实际值连接起来。
如果记录太多,不确定这是否会使 sheet 加载速度变慢。
希望对您有所帮助
使用:
=ARRAYFORMULA(REGEXREPLACE(TRIM(TRANSPOSE(QUERY(TRANSPOSE(
IF(C2:G<>"", C1:G1&" "&C2:G&",", )),,99^99))), ",$", ))