导出到 Excel 时,s-s-rS 表达式不会格式化为数字

Posted

技术标签:

【中文标题】导出到 Excel 时,s-s-rS 表达式不会格式化为数字【英文标题】:s-s-rS expression reuslt not formatting as number when exported to Excel 【发布时间】:2019-04-17 17:41:51 【问题描述】:

我已经尝试了我在这里找到的所有内容,但我无法弄清楚我做错了什么,所以我不知道原因是否在于我的表情。我对这些东西很陌生,所以不确定它是否很明显。

这是我的表达:

=IIF(Fields!Duration.Value > 0, Floor(Fields!Duration.Value / 3600) & ":" & Format(CDate(DateAdd("s", Fields!Duration.Value, "00:00")), "mm:ss"), IIF(Fields!LastTime.Value = Fields!FirstTime.Value, "Passing by", "Still Occupied"))

它需要 2 列的单元格(FirstTimeLastTime),计算两者之间的差异并将其转换为 h:mm:ss 格式。如果FirstTimeLastTime 匹配,它将改为“路过”。否则它会显示“Still Occupied”。

一切都很好,但是如果将报告导出到 Excel,则无法以任何方式汇总或计算该列,我什至无法将该列格式化为数字来执行此操作。

关于为什么会发生这种情况的任何想法?谢谢!

【问题讨论】:

【参考方案1】:

您无法添加这些值的原因是您将它们转换为一个看起来像时间值的文本字段。

您应该将秒数添加到日期中,然后以 mm:ss 格式显示,而不是将您的秒数转换为 mm:ss。

如果您希望能够在 Excel 中添加时间,则需要使用 mm:ss 的 FORMAT 属性来格式化文本框,而不是使用 format 函数。

=IIF(Fields!Duration.Value > 0, DATEADD("s", Fields!Duration.Value, CDATE("1899-12-31")), 
 IIF(Fields!LastTime.Value = Fields!FirstTime.Value, "Passing by", "Still Occupied"))

12/31/1899 是 windows 日期的第 0 天,因此您可以将时间相加,而无需在 Excel 状态栏的 SUM 和平均值中添加天数。请注意 Excel 如何不在公式栏中显示日期。

【讨论】:

我感觉格式与它有关。它正在部分工作,但是,现在如果时间超过 1 天,则小时数变为 0。(例如,如果总时间为 25 h 31 m 50 s,则显示为 01:31:50)这是其中之一我在格式化之前遇到的问题。有任何想法吗?非常感谢! 让您拥有超过 24 小时的 Excel 格式是 [h]:mm:ss,但我无法弄清楚如何从 s-s-rS 导出该格式。当然,您可以在 Excel 中更改格式,但这并不理想。

以上是关于导出到 Excel 时,s-s-rS 表达式不会格式化为数字的主要内容,如果未能解决你的问题,请参考以下文章

导出到excel时如何取消合并s-s-rs中的单元格以尝试排序

导出到 Excel 时 s-s-rS 不会扩展行高

导出到 excel 时 s-s-rS 报告颜色发生变化

s-s-rs 2008 导出到单元格并获取合并单元格错误

s-s-rS 在导出到 Excel 时不支持 CanGrow 属性

s-s-rS:报告导出到 excel,不包括特定列