viv*_*295 7 sorting filter google-sheets array-filter
我有一张带有两张单独纸张的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))
尽管过滤器部件完美地完成了它的工作,但是当与排序相结合时,它给出了一个错误:不匹配的范围长度.
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)