首页 > 解决方案 > Excel 自定义函数:控制混合(字符串)输出的过滤器/排序行为

问题描述

我有一列单元格计算一个以字节为单位的文件体积值和一个输出字符串转换为适当单位(96949643551 ->“90.291 GiB”)的函数,然后我决定环绕该值:
=Format_Filesize(B3-B3*Settings!$B$4/E3)

这非常令人愉快,直到我意识到我可能想将该列与其他列一起排序(使用“数据 -> 排序和过滤器 -> 过滤器”功能。

有没有办法

到目前为止我的想法:

  1. 我可以有一个用于排序的列(计算的数字)和一个用于漂亮显示的列(Format_Filesize()数字单元格)
    这很容易做到但很难看;理想情况下我会隐藏数字列,但是我不能再轻松地用它排序
  2. 我可以使用=[NumericResult] & "; " & Fortmat_Filesize([NumericResult])前面的数值进行排序,并在右侧读取格式化的字符串。
    不,我不能:过滤器排序功能将严格按字母顺序排序 (2>100)
  3. 我可以编写自己的排序函数并插入与排序宏相关的形状或控件并单击它,而不是使用该列的过滤排序功能
  4. 我可以使用自定义数字格式,而不是输出格式化字符串值的[<1024]##0.00" B";[<1048576]##0.00," KB";##0.00,," MB"

    定义
    函数最多可能有 2 个条件,然后是一个包罗万象的条件,这意味着它将 5.34 TB 显示为 5340000 MB

我认为 1 或 2 是非常好的解决方法,但我会对任何更好的解决方案非常感兴趣,即使它们看起来太复杂而不值得实施——为了好玩和/或为了完整性。

标签: excelvbasorting

解决方案


推荐阅读