如何仅对没有空白单元格的行进行排序?

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 &lt;&gt; ""),1,TRUE),这里的初始单元格是 B2,并且覆盖了完整的 B 列。

以上是关于如何仅对没有空白单元格的行进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Excel 列转换为忽略空白单元格的新范围

如何根据ID更新另一张纸上的行而不用空白单元格覆盖?

如何从同一个表中选择特定单元格的行?

vba如何读取excel中某单元格的行数或列数

请教JAVA使用POI导出excel处理空白单元格的问题

如何触发对可动手操作的行/单元格的点击?