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
这里是完整的初学者:
- 我的 if 有什么问题?
- 是否可以在 excel 中向我展示确切的问题?
- 文本仅以红色突出显示 - 如果
我将鼠标悬停在上面,没有给出错误消息。
- 这是我的 if 结构知识来源:Support Microsoft - 这对我来说是错误的文档类型吗?
现在在您的帮助下得到了解决方案(感谢所有回复的人)-我想从字符串中提取带小数的数字:
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”。
这是我的文本代码:
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
这里是完整的初学者:
- 我的 if 有什么问题?
- 是否可以在 excel 中向我展示确切的问题?
- 文本仅以红色突出显示 - 如果 我将鼠标悬停在上面,没有给出错误消息。
- 这是我的 if 结构知识来源:Support Microsoft - 这对我来说是错误的文档类型吗?
现在在您的帮助下得到了解决方案(感谢所有回复的人)-我想从字符串中提取带小数的数字:
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”。