将多列堆栈为一,而不会忽略空白单元格

问题描述 投票:1回答:2

对于由几列组成的堆栈并过滤空白单元格,@ player0告诉我要执行以下操作:https://stackoverflow.com/a/60028660/11462274

但是我遇到了不容忽视空白单元格的需要,因为我将在四个不同的电子表格上使用脚本,并且每个电子表格会将数据发送到列的第一空白行,因此可能会发生某些列的数据比其他列多的情况,并且由于我将在侧面的列中手动记录值,因此,如果更改位置,它将破坏我手动记录的内容。

A B C D
E F G H
  J K L
  N    

预期结果:

A
B
C
D
E
F
G
H

J
K
L

N


这些空白是必要的,以便当新数据记录在列中时,旧数据不会改变位置,而是保留在它们原来的位置。

可以做到吗?

注意:我已经看过一些地方,说如果我这样做,由于空白行的数量,电子表格将非常庞大它将考虑在内。我想那是必要的只有空白单元格,直到当前有数据的最后一行,其余的就没有必要。

但是我无法调整以使其成为可能。

arrays google-sheets google-sheets-formula transpose google-sheets-query
2个回答
1
投票
  • 您要实现以下情况。

    • 来自

      A B C D
      E F G H
        J K L
        N 
      
    • To

      A
      B
      C
      D
      E
      F
      G
      H
      
      J
      K
      L
      
      N
      
  • 在上述情况下,您只想使用AN中的值。您不想在N的值之后包含空值。

如果我的理解正确,那么这个答案如何?请认为这只是几个可能的答案之一。

修改的公式:

=TRANSPOSE(SPLIT(REGEXREPLACE(TEXTJOIN(",",FALSE,A1:D,"#"),",+#",","),",",,FALSE))
  1. 使用TEXTJOIN()加入“ A1:D”的值。
  2. 使用REGEXREPLACE()删除最后一个字符之后的空值。
  3. 使用SPLIT()将值从字符串分割为数组。
  4. 使用TRANSPOSE()转置数组。
结果:

enter image description here

参考:

[如果我误解了您的问题,但这不是您想要的结果,我深表歉意。


1
投票

您可以在其上构建:

=ARRAYFORMULA(ARRAY_CONSTRAIN(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 IF(A:D="", CHAR(9), A:D)),,9^9)),,9^9), " ")), ROWS(A:A), 1))

0

© www.soinside.com 2019 - 2024. All rights reserved.