如何只排序那些没有空白单元格的行?

时间:2013-08-05 07:35:17

标签: sorting filter google-sheets array-filter

我有一张带有两张单独纸张的Google电子表格。第一个是名称和数据的大列表,第二个应该是第一张表上所有数据的排序列表(按姓氏排序)。以下是我定义第二张表的当前方式:

  

= sort(sheet1!A2:L100,sheet1!D2:D100,TRUE)

大部分工作都很好,除了一个问题:在sheet1中,第4列(D列)中的一些单元格是空白的。如何更改公式,以便排序忽略列D?中包含空白单元格的行?

我试过的公式却产生了不良后果:

  1.   

    = arrayformula(if(istext(sheet1!D2:D100),sort(sheet1!A2:L100,sheet1!D2:D100,true),“”))

    它根据需要排序,但有一个问题 - 空白单元格最后没有被推动,而是分散在行之间。

  2.   

    = arrayformula(sort(filter(sheet1!A2:L100,istext(sheet1!D2:D100)),sheet1!D2:D100,true))

    虽然过滤器部件完美地完成了它的工作但是当与排序结合时,它会给出错误:范围长度不匹配。

2 个答案:

答案 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)