gpt4 book ai didi

Excel VBA : How to get UDF to return 0 when conditions aren't met

转载 作者:行者123 更新时间:2023-12-04 15:03:58 24 4
gpt4 key购买 nike

我一直在寻找一个简单的 UDF,我可以用它来只从单元格中的任何位置提取数字,即使它包含小数。好消息是,我没有要求任何人为我写一个,因为我已经找到了两个 99% 的方法。

第一个函数 GetNumeric 在返回值时会忽略小数部分。例如,如果引用的单元格包含“7.75 天”,它将返回“775”。但是,如果引用的单元格没有任何数字,例如“狗”,它将返回“0”

第二个函数 GetNum 解决小数问题,并返回“7.75”,但现在如果引用的单元格没有任何数字,它将返回错误。

Function GetNumeric(CellRef As String)
Dim StringLength As Integer
StringLength = Len(CellRef)
For i = 1 To StringLength
If IsNumeric(Mid(CellRef, i, 1)) Then result = result & Mid(CellRef, i, 1)
Next i
GetNumeric = result
End Function

Function GetNum(ByVal InString) As String
Dim x As Integer
For x = 1 To Len(InString)
If Mid(InString, x, 1) Like "[!0-9.() ]" Then Mid(InString, x, 1) = Chr$(1)
Next
GetNum = Trim(Replace(InString, Chr$(1), ""))
End Function

我想我可以将“Like”部分放在第一个函数中,但它总是返回 0。这是为什么?

最佳答案

The second function will not return a value if there is no number in the cell. It will return an empty cell, but I would like it to return a 0, like the first function does.

这是你正在尝试的吗?

最后检查返回值是否为空。如果它是空的,则将 0 传递给它。

Function GetNum(ByVal InString) As String
Dim x As Integer
Dim Ret As String

For x = 1 To Len(InString)
If Mid(InString, x, 1) Like "[!0-9.() ]" Then Mid(InString, x, 1) = Chr$(1)
Next
Ret = Trim(Replace(InString, Chr$(1), ""))

If Len(Trim(Ret)) = 0 Then GetNum = 0 Else GetNum = Ret
End Function

关于Excel VBA : How to get UDF to return 0 when conditions aren't met,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66489395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com