我很想删除所有内容,包括.
右侧的.
,例如aaaaa.ntuthuh
我得aaaaa
如果我将= Left(A1, Find(".", A1) - 1)
粘贴到工作表中的单元格中,则公式可以正常工作,但在宏中我会收到错误Sub or Function not defined
并突出显示Find
由于
Sub Split()
Dim fName As String
fName = Left(A1, Find(".", A1) - 1)
ActiveSheet.Range("B1").Value = fName
' have also tyred: Range("A1").Value = "=Left(A1, Find(".", A1) - 1)" and: Range("A2").Formula = "=Left(A1, Find(".", A1) - 1)" but throws error "." is highlighted a "Expected end of statement"
End Sub
答案 0 :(得分:2)
您有两种选择:
1)使用.Formula
属性
With ActiveSheet.Range("B1")
.Formula = "=Left(A1, Find(""."", A1) - 1)"
.Value = .Value
End With
2)使用Evaluate
:
fName = Evaluate("Left(A1, Find(""."", A1) - 1)")
ActiveSheet.Range("B1").Value = fName
两者都会给你相同的结果
答案 1 :(得分:2)
这是第三种选择:
Sub Splitt()
Dim fName As String
fName = Split(Range("A1").Value, ".")(0)
ActiveSheet.Range("B1").Value = fName
End Sub
答案 2 :(得分:2)
您的代码应该有效,只需稍作修改即可。之前,当你应该提供要计算的范围时,左边和查找函数的值为A1。请注意,如果没有“。”,这可能会导致错误。在输入字符串中。
Sub Split()
Dim fName As String
fName = Left(activesheet.Range("A1"), Find(".", ActiveSheet.Range("A1")) - 1)
ActiveSheet.Range("B1").Value = fName
End Sub
但是,另一种解决方案是创建一个函数,允许您指定要剥离的范围,并输出结果。因此,在单元格B1中,您将输入“= Splitter(A1)”
Function Splitter(range As range) As String
Dim fName As String
If InStr(range.Value, (".")) = 0 Then
Splitter = range.Value
Else
fName = Left(range.Value, InStr(range.Value, ".") - 1)
Splitter = fName
End If
End Function