将多列堆叠为一列而不忽略空白单元格
Stack multiple columns into one without ignore blank cells
对于几列的堆叠和过滤空白单元格,@player0 告诉我按如下方式进行:
但我发现需要不忽略空白单元格,因为我要在四个不同的电子表格上使用脚本,每个电子表格都会将数据发送到列的第一个空白行, 因此可能会发生某些列的数据比其他列多的情况,并且由于我将在侧面的列中手动记录值,如果我更改位置,它将弄乱我手动记录的内容。
:
A B C D
E F G H
J K L
N
预期结果:
A
B
C
D
E
F
G
H
J
K
L
N
这些空格是必需的,以便在列中记录新数据时,旧数据不会改变位置,保持在原来的位置。
可以吗?
Note: I have already looked in some places saying that if I do this,
the spreadsheet would be immense because of the number of blank lines
that it would take into account. I imagine that it would be necessary
only the blank cells until the last line that has data at the moment,
the rest would not be necessary.
But I was unable to adjust to make this possible.
你想实现如下情况
来自
A B C D
E F G H
J K L
N
到
A
B
C
D
E
F
G
H
J
K
L
N
在上述情况下,您只想使用从 A
到 N
的值。您不想在 N
.
的值之后包含空值
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
修改后的公式:
=TRANSPOSE(SPLIT(REGEXREPLACE(TEXTJOIN(",",FALSE,A1:D,"#"),",+#",","),",",,FALSE))
- 使用
TEXTJOIN()
加入 "A1:D" 的值。
- 使用
REGEXREPLACE()
. 删除最后一个字符后的空值
- 使用
SPLIT()
将值从字符串拆分为数组。
- 使用
TRANSPOSE()
转置数组。
结果:
参考文献:
如果我误解了您的问题而这不是您想要的结果,我深表歉意。
您可以像这样构建它:
=ARRAYFORMULA(ARRAY_CONSTRAIN(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(A:D="", CHAR(9), A:D)),,9^9)),,9^9), " ")), ROWS(A:A), 1))
我的解决方案太简单了,但你可以使用 =FLATTEN(A1:D)
是的,就这么简单。
显然,Google 从未记录过此 FLATTEN
函数,但它可以完美地满足您的需求和我的需求。
希望有人能找到它,即使它已经得到解答,我知道我永远需要它哈哈。
对于几列的堆叠和过滤空白单元格,@player0 告诉我按如下方式进行:
但我发现需要不忽略空白单元格,因为我要在四个不同的电子表格上使用脚本,每个电子表格都会将数据发送到列的第一个空白行, 因此可能会发生某些列的数据比其他列多的情况,并且由于我将在侧面的列中手动记录值,如果我更改位置,它将弄乱我手动记录的内容。
:
A B C D
E F G H
J K L
N
预期结果:
A
B
C
D
E
F
G
H
J
K
L
N
这些空格是必需的,以便在列中记录新数据时,旧数据不会改变位置,保持在原来的位置。
可以吗?
Note: I have already looked in some places saying that if I do this, the spreadsheet would be immense because of the number of blank lines that it would take into account. I imagine that it would be necessary only the blank cells until the last line that has data at the moment, the rest would not be necessary.
But I was unable to adjust to make this possible.
你想实现如下情况
来自
A B C D E F G H J K L N
到
A B C D E F G H J K L N
在上述情况下,您只想使用从
A
到N
的值。您不想在N
. 的值之后包含空值
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
修改后的公式:
=TRANSPOSE(SPLIT(REGEXREPLACE(TEXTJOIN(",",FALSE,A1:D,"#"),",+#",","),",",,FALSE))
- 使用
TEXTJOIN()
加入 "A1:D" 的值。 - 使用
REGEXREPLACE()
. 删除最后一个字符后的空值
- 使用
SPLIT()
将值从字符串拆分为数组。 - 使用
TRANSPOSE()
转置数组。
参考文献:
如果我误解了您的问题而这不是您想要的结果,我深表歉意。
您可以像这样构建它:
=ARRAYFORMULA(ARRAY_CONSTRAIN(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
IF(A:D="", CHAR(9), A:D)),,9^9)),,9^9), " ")), ROWS(A:A), 1))
我的解决方案太简单了,但你可以使用 =FLATTEN(A1:D)
是的,就这么简单。
显然,Google 从未记录过此 FLATTEN
函数,但它可以完美地满足您的需求和我的需求。
希望有人能找到它,即使它已经得到解答,我知道我永远需要它哈哈。