我有大量的字母数据,我需要将其转换为纯粹的数字。字符串中没有文字。
实施例。 C0424.100 ---> 424.100(或0424.100)
小数点后总共有3个位置。关于如何解决这个问题的任何提示?我对VBA很陌生。所以基本上我需要删除所有文本和一个带右边三位数的小数。
答案 0 :(得分:0)
这在String functions and how to use them
中有详细描述然而,这应该让你开始。之后我会在Excel中处理格式化,但这是数字转换的简单字符串。如果字符串更复杂,请考虑使用搜索字符串函数查找数字,然后使用Right,Left,Mid函数修剪字符串。最后使用CDbl()函数将字符串转换为double。
宏代码如下:
Sub temp()
'
' temp Macro
Range("A2").Select
stringToConvert = Selection.Value
trimmedString = Right(stringToConvert, Len(stringToConvert) - 1)
numberToDisplay = CDbl(trimmedString)
Range("A3").Value = numberToDisplay
End Sub
答案 1 :(得分:0)
你甚至需要VBA吗?如果您的数据始终只有一个前导字母字符,那么您可以使用标准Excel函数。对于要转换的A2中的条目,请将以下公式放在方便的单元格中(例如B2):
=VALUE(RIGHT(A2,LEN(A2)-1))
答案 2 :(得分:0)
不需要VBA。类似的东西:
=--MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),99)
将返回以第一个数字开头的字符串,并将其转换为数字值。然后,您可以根据需要在单元格中对其进行格式化。
以上内容适用于任意数量的非数字前导字符。如果只有一个非数字字符,那么@Skippy答案就更简单了
如果你必须有一个VBA例程,类似下面的东西应该工作 - 它将提取字符串中的第一个数字子字符串。如果之前或之后有非数字,则无关紧要。并且,如果没有数字,该函数将返回#NUM!
错误
Option Explicit
Function ExtractNums(S As String) As Variant
Dim I As Long
For I = 1 To Len(S)
If IsNumeric(Mid(S, I, 1)) Then
ExtractNums = Val(Mid(S, I))
Exit Function
End If
Next I
ExtractNums = CVErr(xlErrNum)
End Function
答案 3 :(得分:0)
我为你准备了UDF选项。
Option 1
:如果您想从字符串的开头删除所有字母:
Function RemoveFirstAlphas(txt As String) As String
Dim i As Long
For i = 1 To Len(txt)
Select Case Mid$(txt, i, 1)
Case "0" To "9": Exit For
Case Else: Mid$(txt, i, 1) = Chr(32)
End Select
Next
RemoveFirstAlphas = Trim(txt)
End Function
Option 2
:如果您要从整个字符串中删除所有字母:
Function RemoveAllAlphas(txt As String) As String
Dim ObjRegex As Object
Set ObjRegex = CreateObject("vbscript.regexp")
With ObjRegex
.Global = True
.Pattern = "[a-zA-Z\s]+"
RemoveAllAlphas = .Replace(Replace(txt, "-", Chr(32)), vbNullString)
End With
End Function