我在电子表格中有以下公式:
= IFERROR(加入(CHAR(10),QUERY(附表!$ A $ 2:$ E," SELECT C,D,E其中A ='"& B $ 2& ;"' AND B = timeofday'"& text($ A4," HH:MM:SS")&"&#39 ;和C ='"& $ C $ 1&"'",-1)),)
返回一行时效果很好。如果它返回多行,它将不起作用。如何使用包含在行和列之间的CHAR(10)返回的所有行。基本上我希望所有返回的数据都以换行符分隔。所以当QUERY返回时
Item1 Item2 Item3
Item1A Item2A Item3A
它改为
的Item1
项目2
项目3
Item1A
Item2A
Item3A
我的目标是将所有返回的数据放在1个单元格中,每个项目之间有换行符。我能以任何方式实现这一目标吗?
这是copy of the file。细胞B3至F4是配方所在的良好样品细胞。
答案 0 :(得分:2)
解决方案不完善,它在每行之前增加了额外的空格:
Item1 Item2 Item3
Item1A Item2A Item3A
^ spaces
第1步
在查询中获取原始公式+额外列:
=QUERY(data, "SELECT C, D, E, '@@' Where" & ... & "' label '@@' ''", -1)
结果:
Item1 Item2 Item3 @@
Item1A Item2A Item3A @@
<强>第二步强>
替换&#34; @@&#34;与char(10)
=ARRAYFORMULA(SUBSTITUTE(step1Formula,"@@",char(10)))
Item1 Item2 Item3
Item1A Item2A Item3A
^ new lines
第3步
使用连接:
=ArrayFormula(" "&TRIM(CONCATENATE(" "&B16:E17)))
最终公式
=ArrayFormula(" "&TRIM(CONCATENATE(" "&SUBSTITUTE(QUERY(Schedule!$A$2:$E, "SELECT C, D, E, '@@' Where A = '" & B$2 & "' AND B = timeofday '" & text($A3, "HH:MM:SS") & IF(OR($C$1 = "*",ISBLANK($C$1)), "", "' AND C = '" & $C$1) & IF(OR($F$1 = "*",ISBLANK($F$1)), "", "' AND E = '" & $F$1) & "' label '@@' ''", -1),"@@",char(10)))))
共享文件:
https://docs.google.com/spreadsheets/d/1otcqvkXb5H3WTSi_exKw9UUcRqN8MKBZ5JYCmTLAWdQ/edit?usp=sharing
答案 1 :(得分:1)
我知道这不是一个优雅的解决方案,但它可以帮助您。在B3
输入此公式,然后将其复制并粘贴到其他单元格上。
=iferror(join(char(10), query(Schedule!$A$2:$E, "select C,D,E where A='"&B$2&"' and B=timeofday '"&text($A3, "hh:mm:ss")&"' limit 1 offset 0")),"")
&iferror(char(10)&char(10) & join(char(10), query(Schedule!$A$2:$E, "select C,D,E where A='"&B$2&"' and B=timeofday '"&text($A3, "hh:mm:ss")&"' limit 1 offset 1")),"")
&iferror(char(10)&char(10) & join(char(10), query(Schedule!$A$2:$E, "select C,D,E where A='"&B$2&"' and B=timeofday '"&text($A3, "hh:mm:ss")&"' limit 1 offset 2")),"")
&iferror(char(10)&char(10) & join(char(10), query(Schedule!$A$2:$E, "select C,D,E where A='"&B$2&"' and B=timeofday '"&text($A3, "hh:mm:ss")&"' limit 1 offset 3")),"")
&iferror(char(10)&char(10) & join(char(10), query(Schedule!$A$2:$E, "select C,D,E where A='"&B$2&"' and B=timeofday '"&text($A3, "hh:mm:ss")&"' limit 1 offset 4")),"")
基本上,您无法使用Google query()
连结结果字符串,因此我应该使用limit 1 offset 0
,limit 1 offset 1
,limit 1 offset 2
一次取一行。等等。在这种情况下,最大值为5。样本表为here。