如何将多个列值提取到Google表格的单个列中?

679*_*023 4 google-sheets google-apps-script

我有12列正在由公式“ IMPORTRANGE”自动填充。

我需要将所有表值整理为一个值(条件是它的行为应类似于“ ARRAYFORMULA”)。

只是想知道是否为此目的存在任何特定的公式/查询。

我已经添加了工作表的示例快照。我需要在其他列中使用红色突出显示的值,例如在“ EF”中说。

在此处输入图片说明

Max*_*rov 6

常见情况

我将显示3列的示例公式,但是您可以对任意数量的列使用相同的逻辑。

在此处输入图片说明

公式是

=TRANSPOSE(SPLIT(ARRAYFORMULA(CONCATENATE(TRANSPOSE(FILTER(A2:C,A2:A>0)&"-"))),"-"))
Run Code Online (Sandbox Code Playgroud)
  • A2:C 是所有列的范围
  • A2:A>0是A列仅选择适当行的条件。这可以通过A2:A<>""用于文本列或任何条件来限制行数。
  • -公式中的任何符号都不是原始数据的一部分。您可以出于相同目的使用符号组,甚至特殊字词:=TRANSPOSE(SPLIT(ARRAYFORMULA(CONCATENATE(TRANSPOSE(FILTER(A2:C,A2:A>0)&"devide"))), "devide"))

情况1。

不连续的列

如果您的数据不在连续列中。

如果是这样,则需要将公式的这一部分更改FILTER(A2:C,A2:A>0)为查询:

=query(A:AO;"select A,I,Q,Y,AG,AO... where A > 0")

或更好的是:

=query({A:AO};"select Col1, Col6, Col20, Col22, ... where Col1 > 0")

最终公式将如下所示:

=TRANSPOSE(SPLIT(ARRAYFORMULA(CONCATENATE(TRANSPOSE(query({A:AO};"select Col1, Col6, Col20, Col22, ... where Col1 > 0")&"-"))),"-"))
Run Code Online (Sandbox Code Playgroud)

情况2

不是连续的列,数据是数字和文本

当您同时使用数字和文本作为数据输入时,query将无法使用,因为它只能在一列中处理一种类型的数据。

您的简化案例将如下所示:

在此处输入图片说明

第一个任务是将名称为“ Ticket number”的所有列都捕获到一个表中。

让我们在工作表“ Report”中使用filter函数:

=FILTER(Data!1:1001,Data!2:2="Ticket number")
Run Code Online (Sandbox Code Playgroud)

并得到结果:

在此处输入图片说明

步骤2是实施第一个公式:

=TRANSPOSE(SPLIT(ARRAYFORMULA(CONCATENATE(TRANSPOSE(Report!A3:D&"-"))),"-"))
Run Code Online (Sandbox Code Playgroud)

另一种方法是将列一一合并:

={A2:A5;B2:B5;C2:C5}
Run Code Online (Sandbox Code Playgroud)

如果您喜欢这种方法,可以在这里阅读更多内容