我有一张带有两张单独纸张的Google电子表格。第一个是名称和数据的大列表,第二个应该是第一张表上所有数据的排序列表(按姓氏排序)。以下是我定义第二张表的当前方式:
= sort(sheet1!A2:L100,sheet1!D2:D100,TRUE)
大部分工作都很好,除了一个问题:在sheet1中,第4列(D列)中的一些单元格是空白的。如何更改公式,以便排序忽略列D?中包含空白单元格的行?
我试过的公式却产生了不良后果:
= arrayformula(if(istext(sheet1!D2:D100),sort(sheet1!A2:L100,sheet1!D2:D100,true),“”))
它根据需要排序,但有一个问题 - 空白单元格最后没有被推动,而是分散在行之间。
= arrayformula(sort(filter(sheet1!A2:L100,istext(sheet1!D2:D100)),sheet1!D2:D100,true))
虽然过滤器部件完美地完成了它的工作但是当与排序结合时,它会给出错误:范围长度不匹配。
答案 0 :(得分:12)
要过滤掉D列中带有空白单元格的行,您可以执行#2之类的操作,但是如同建议的错误消息,第二个参数也需要进行过滤以确保范围的长度相同。幸运的是,有一种更简单的方法,那就是使用列索引而不是范围:
=SORT(FILTER(sheet1!A2:L100;ISTEXT(sheet1!D2:D100));4;TRUE)
或者你可以使用QUERY函数来做这类事情:
=QUERY(sheet1!A2:L100;"select * where D != '' order by D";0)
答案 1 :(得分:7)
对于任何看过这个问题的人来说,如果过滤掉真正空白的空白单元格,但是如果单元格包含评估为空白的公式(""),则接受的答案会很有效,ISTEXT将评估为TRUE,空格不会被过滤掉。我稍微修改了接受的答案,以便在我的情况下工作,其中我有包含公式(评估为"")的单元格,我想过滤掉:
=SORT(FILTER(sheet1!A2:L100,sheet1!D2:D100 <> ""),4,TRUE)