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

viv*_*295 7 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))

    尽管过滤器部件完美地完成了它的工作,但是当与排序相结合时,它给出了一个错误:不匹配的范围长度.

Ada*_*amL 13

要在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)


小智 7

对于任何看这个的人来说,如果过滤掉真正空白的空白单元格,但是如果单元格包含评估为空白("")的公式,则接受的答案会很有效,ISTEXT将评估为TRUE,并且不会过滤掉空白.我稍微修改了接受的答案,以便在我的情况下工作,其中我的单元格包含我想过滤掉的公式(评估为""):

=SORT(FILTER(sheet1!A2:L100,sheet1!D2:D100 <> ""),4,TRUE)
Run Code Online (Sandbox Code Playgroud)