UDF 到 return 格式的数字

UDF to return formatted number

有时我喜欢在同一个单元格中显示数字和文本。为此,我将单元格的格式自定义为类似 0.00" test" 的格式,例如具有公式 =PI() 但使用自定义格式 0.00" test" 格式化的单元格 A1 将 return 显示结果 3.14 test

重要的是,单元格的值不会因格式化而改变 - 您仍然可以在另一个单元格中执行 =A1 * 3 并获得结果 - 因为 value A1 还是 Pi,只是显示变了。

对于一个UDF,return是一个数值(在我的例子中,Long,但它可以是任何数字),有没有办法return 单元格以一种方式显示,但它的实际值(我相信 VBA 中的 .Value2)是数字,而不是文本。

我在 VBA 中尝试过 Format(,但它 return 是一个文本字符串。我只是按照我想要的方式手动格式化我的单元格,但正如您从下面的代码中看到的那样,格式化取决于中间结果(我正在尝试 return 使用计算时间格式化的值) .

UDF_RESULT = Format(valueResult.Length, IIf(tElapsed < timeout, "0" & " """ & Round(tElapsed, 2) & "s""", "0"))

使用宏很容易做到这一点,但在 UDF 中就更难了。我可以在模块级别声明所有中间值,然后 Worksheet_Calculate() 宏可以访问这些值并应用自定义格式,但是 UDF 包装的方法会好得多。

没有

您将单元格的与其数字格式混淆了。 UDF 可以计算 ,单元格可以根据需要自由格式化该值。

因此,如果 UDF returns 一个数字,单元格的值就是该函数的结果 - 一个数字。

只需根据需要格式化单元格。函数不格式化任何内容。