有时我喜欢在同一个单元格中显示数字和文本。为此,我将单元格自定义格式为0.00"测试",例如具有公式A1
但已使用自定义格式=PI()
格式化的单元格0.00" test"
将返回显示的结果3.14 test
。
最重要的是,格式的值不会因格式化而保持不变 - 您仍然可以在另一个单元格中执行=A1 * 3
并获得结果 - 因为A1
的值是仍然是Pi,只是它的显示已经改变了。
对于返回数值的UDF (在我的情况下,Long
,但它可以是任何数字),有没有办法返回一个单元格,以便显示它1种方式,但它的实际值(我相信VBA中的.Value2
)是一个数字,而不是文本。
我在VBA中尝试了Format(
,但它返回了一个文本字符串。我只是手动格式化我的单元格,但是正如您从下面的代码中看到的那样,格式化取决于中间结果(我试图返回用计算时间格式化的值)。 / p>
UDF_RESULT = Format(valueResult.Length, IIf(tElapsed < timeout, "0" & " """ & Round(tElapsed, 2) & "s""", "0"))
这对于宏来说很容易,但在UDF中它更难。我可以在模块级别声明所有中间值,然后Worksheet_Calculate()
宏可以访问这些值并应用自定义格式,但UDF包装的方法会更好。
答案 0 :(得分:5)
没有
您将单元格的值与其数字格式混淆。 UDF可以计算值,并且单元格可以根据需要自由格式化该值。
因此,如果UDF返回一个数字,则该单元格的值是该函数的结果 - 数字。
只需根据需要格式化单元格。函数不会格式化任何内容。