Excel - 使用 IF 和 OR

Excel - Using IF and OR

这是我的文本代码:

 Function NurZahl(ByVal Text As String) As Long
    Dim i%, tmp
    Dim Val As String
    
    For i = 1 To Len(Text)
      Val = Mid(Text, i, 1)
        If(OR(IsNumeric(Val),Val=","),TRUE, FALSE) Then tmp = tmp & Mid(Text, i, 1)
    Next i
    NurZahl = tmp
End Function

这里是完整的初学者:

现在在您的帮助下得到了解决方案(感谢所有回复的人)-我想从字符串中提取带小数的数字:

Function CleanString(strIn As String) As String
    Dim objRegex
    Set objRegex = CreateObject("vbscript.regexp")
    With objRegex
     .Global = True
     .Pattern = "[^\d,]+"
    CleanString = .Replace(strIn, vbNullString)
    End With
End Function

您可以尝试这样的操作:

Function NurZahl (ByVal MyText As String) As Long

    ' Set up the variables
    Dim i as Integer
    Dim tmp as String
    Dim MyVal As String

    ' Start tmp with an empty string
    tmp = ""
    
    ' Loop through each character of the input MyText
    For i = 1 To Len(MyText)

      ' Read the character
      MyVal = Mid(MyText, i, 1)

      ' Check whether the character is a number or a comma
      ' and take reasonable action
      If IsNumeric(MyVal) or MyVal = "," then
          tmp = tmp & Mid(MyText, i, 1)
      End if

    Next i

    NurZahl = tmp

End Function

您必须更改上面的代码才能执行您想要执行的操作。上图是为了展示VBA代码是如何编写的。

在您的 VBA 编辑器中,当您在一行中看到红色时,表示编辑器检测到一些问题。

如果您在 Excel 中编写此函数,您通常会在这样的单元格中使用该函数:=NurZahl(A1)

“If”行的写法类似于 Excel 公式。这就是基本的样子。

If IsNumeric(Val) Or Val = "," Then tmp = tmp & Mid(Text, i, 1)

红色文字是语法错误。如果转到调试菜单并单击编译 VBA 项目,您将收到错误消息。

您包含的 link 用于在单元格中键入的函数。您需要 VBA 参考。这是 link 对 MS 的参考,但一本像样的书会让你的生活更轻松。只需搜索“Excel VBA”。

https://docs.microsoft.com/en-us/office/vba/api/overview/