excel - Excel 自定义函数:控制混合(字符串)输出的过滤器/排序行为
问题描述
我有一列单元格计算一个以字节为单位的文件体积值和一个输出字符串转换为适当单位(96949643551 ->“90.291 GiB”)的函数,然后我决定环绕该值:
=Format_Filesize(B3-B3*Settings!$B$4/E3)
B3-B3*Settings!$B$4/E3
使用原始比特率E3计算原始文件大小B3与使用Settings!$B$4中的新比特率的投影文件大小之间的差异,可能会导致类似 53954174.66Format_Filesize()
51,45 MiB
此示例的返回值
这非常令人愉快,直到我意识到我可能想将该列与其他列一起排序(使用“数据 -> 排序和过滤器 -> 过滤器”功能。
有没有办法
- 为排序评估提供处理程序?也许创建一个具有不同 getter 函数或覆盖方法的自定义类,例如
onSort
? 或动态决定单元格显示什么?喜欢:
123456;"Display Text"
使用整个值进行排序但只显示“显示文本”?
nvm,Excel的AZ/ZA排序不是自然排序
到目前为止我的想法:
- 我可以有一个用于排序的列(计算的数字)和一个用于漂亮显示的列(
Format_Filesize()
数字单元格)
这很容易做到但很难看;理想情况下我会隐藏数字列,但是我不能再轻松地用它排序 我可以使用=[NumericResult] & "; " & Fortmat_Filesize([NumericResult])
前面的数值进行排序,并在右侧读取格式化的字符串。
不,我不能:过滤器排序功能将严格按字母顺序排序 (2>100)- 我可以编写自己的排序函数并插入与排序宏相关的形状或控件并单击它,而不是使用该列的过滤排序功能
- 我可以使用自定义数字格式,而不是输出格式化字符串值的
[<1024]##0.00" B";[<1048576]##0.00," KB";##0.00,," MB"
自
定义
函数最多可能有 2 个条件,然后是一个包罗万象的条件,这意味着它将 5.34 TB 显示为 5340000 MB
我认为 1 或 2 是非常好的解决方法,但我会对任何更好的解决方案非常感兴趣,即使它们看起来太复杂而不值得实施——为了好玩和/或为了完整性。
解决方案
推荐阅读
- java - 如何计算Java程序的时间复杂度?
- python - 在python中为非常大的数据集执行迭代函数的更好方法
- azure - 无法从启用了私有端点的 ACR 中提取 WebApp 中的图像
- sas - 如何将 SAS 数据集转换为 CSV 文件,而其中的单个文件具有逗号值
- javascript - asp.net webforms - 对象不支持属性或方法“对话框”
- flutter - 如何使用 API Flutter 覆盖谷歌驱动器中的文件
- javascript - 忽略 React Native 中的 SSL 警告
- python - 尝试从 excel 文件中读取多张工作表时出错
- google-analytics - Google Analytics Data API (GA4) - item.variant 维度?
- tfjs-node - danfojs-node 的安装错误 - 如何在 tfjs-node 中跳过“libtensorflow”的下载?