【问题标题】:Excel - Ignore blanks in descending sortExcel - 以降序忽略空格
【发布时间】:2018-02-26 17:19:00
【问题描述】:

在附件中,当我按降序对列 C 进行排序时,它会将空白放在顶部。 (不应该发生)

D 列只是 C 列的“复制为值”,并且 D 列中的排序工作正常

所以我猜我在 C 列中的公式存在一些问题

文件链接:https://drive.google.com/open?id=1TRDympt3-CFn6916aLGxd3du5SL_FaxM

我使用的公式:=IF(A3="","",IF(ISERROR(MATCH(TRIM(S!$A3),$G$4:$G$8,0)),$B3,"" ))

【问题讨论】:

  • 为什么不在您的问题中发布您的公式,而不是让我们下载您的文件?
  • @K.Dᴀᴠɪs 用公式更新了我的问题

标签: excel sorting excel-formula


【解决方案1】:

如果你需要能够按升序或降序排序,那么我想不出一个简单的解决方案,只是通过公式。

下一个最简单的解决方案可能只是应用自动过滤器来排除空白(实际上确实摆脱了空字符串)。

如果您通过 VBA 自动执行此操作,我认为最简单的方法是先升序排序,应用过滤器删除空字符串,然后降序排序。

您还可以合并前 10 个过滤器。

【讨论】:

    【解决方案2】:

    这是由空字符串和空单元格之间的差异引起的。

    公式的结果是空字符串“”,这与空单元格中的“无”不同。

    在排序时,Excel 会忽略真正的空单元格,而空字符串实际上是一个仅包含空字符串字符的字符串,并且包含在排序中。

    我怀疑 D 列为您正确排序的原因是因为您只复制了 C 列中具有正常值的单元格。如果您复制整个列(包括看起来像空白单元格的内容),那么问题仍然存在,因为那时您还复制了空字符串字符。

    在一列值中,如在 D 列中,您可以使用带有分隔符选项的文本到列工具并取消选择所有分隔符来删除空字符串。 (与将存储为文本的数字转换为实际数字的方法相同。)

    但是,对于 C 列中的公式,无法告诉 Excel 返回真正的“无”。

    作为一种解决方法,如果您只有正值,您可以更改公式以返回值 0 而不是空字符串“”。因此,在降序排序时,0 值将放在底部。

    您还可以通过更改列的数字格式来隐藏 0 值:

    1. 选择数据表中的整列
    2. 格式化单元格...
    3. 在“数字”选项卡的“类别”中选择“自定义”
    4. 手动将类型值从“0.00”更改为“0.00;-0.00;”

    这种格式表示要显示:

    • 带 2 位小数的正数
    • 带 2 位小数的负数和前面的负号
    • 零为空白

    【讨论】:

    • 感谢您的回答。我同意你的看法。实际上,我还需要在该列中使用升序排序并通过 VBA 复制前 10 名。我将制作两列,一列显示升序排序的大值,另一列显示降序排序的负值。如果您有更好的想法,请告诉我。
    猜你喜欢
    • 2011-10-18
    • 2018-11-20
    • 2017-08-11
    • 2014-11-14
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 2011-04-19
    相关资源
    最近更新 更多