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 一个数字,单元格的值就是该函数的结果 - 一个数字。
只需根据需要格式化单元格。函数不格式化任何内容。
有时我喜欢在同一个单元格中显示数字和文本。为此,我将单元格的格式自定义为类似 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 一个数字,单元格的值就是该函数的结果 - 一个数字。
只需根据需要格式化单元格。函数不格式化任何内容。