679*_*023 4 google-sheets google-apps-script
我有12列正在由公式“ IMPORTRANGE”自动填充。
我需要将所有表值整理为一个值(条件是它的行为应类似于“ ARRAYFORMULA”)。
只是想知道是否为此目的存在任何特定的公式/查询。
我已经添加了工作表的示例快照。我需要在其他列中使用红色突出显示的值,例如在“ EF”中说。
我将显示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"))不连续的列
如果您的数据不在连续列中。
如果是这样,则需要将公式的这一部分更改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)
不是连续的列,数据是数字和文本
当您同时使用数字和文本作为数据输入时,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)
如果您喜欢这种方法,可以在这里阅读更多内容。
| 归档时间: |
|
| 查看次数: |
5320 次 |
| 最近记录: |