如何仅对没有空白单元格的行进行排序?
Posted
技术标签:
【中文标题】如何仅对没有空白单元格的行进行排序?【英文标题】:How to sort only those rows which have no blank cell? 【发布时间】:2013-08-05 20:17:51 【问题描述】:我有一个包含两个单独工作表的 Google 电子表格。第一个只是名称和数据的大列表,第二个应该是第一张表上所有数据的排序列表(按姓氏排序)。这是我定义第二张表的当前方式:
=排序(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))
虽然过滤器部分完美地完成了它的工作,但是当与排序结合使用时,它会给出一个错误:不匹配的范围长度。
【问题讨论】:
因为我迫切需要答案,所以我也在 Google 文档论坛上发布了这个查询。我希望它不会使这里的任何规则失效。 【参考方案1】:要过滤掉 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)
【讨论】:
非常感谢 AdamL。很高兴在这里见到你:)=SORT(FILTER(sheet1!A2:L100;ISTEXT(sheet1!D2:D100));4;TRUE)
不起作用,但 =QUERY(sheet1!A2:L100;"select * where D != '' order by D";0)
起作用。但我需要用'
替换;
【参考方案2】:
对于任何查看此内容的人,如果过滤掉真正为空白的空白单元格,则接受的答案非常有效,但如果单元格包含评估为空白 ("") 的公式,则 ISTEXT 将评估为 TRUE,并且不会过滤掉空白.我稍微修改了接受的答案以适应我的情况,其中我有包含我想过滤掉的公式(评估为“”)的单元格:
=SORT(FILTER(sheet1!A2:L100,sheet1!D2:D100 <> ""),4,TRUE)
【讨论】:
不适用于无限范围。例如。=SORT(FILTER($B$2:$B, $B$2:$B <> ""),1,TRUE)
,这里的初始单元格是 B2,并且覆盖了完整的 B 列。以上是关于如何仅对没有空白单元格的行进行排序?的主要内容,如果未能解决你的问题,请参考以下文章