我从互联网上获得了一个价值,特别是某些加密技术的市值。我从excel中的“获取外部数据”功能中获取这些。这以文本格式加载数据,例如对于1000比特币而不是1000比特,我将获得一个具有1000比特币的单元格。因此,我无法进一步使用该数据。如果我使用右,左,右边的函数,假设这个值可以从1000到1或1000000波动,一旦屏障被击中,右边和左边将产生文本格式。另一方面,我不能将文本用于列分隔符,因为每次刷新表时都会返回其原始状态并删除用户添加的任何列。任何建议动态地推断每个单元格的数字都是受欢迎的。感谢
答案 0 :(得分:1)
您可以使用the Val
function。
假设包含您所追求的值的单元格是活动工作表的A1,您可以使用:
Dim numericPart As Double
numericPart = Val(Range("A1").Value)
如果您想要一个Excel公式,并且值和文本部分之间总是有空格,您可以使用:
=VALUE(LEFT(A1,FIND(" ",A1)-1))
答案 1 :(得分:0)
另一个工作表函数,它可以在没有空格将数字与字母分开的情况下工作(只要数字先出现):
=LOOKUP(9E+307,--MID(B9,1,{1,2,3,4,5,6,7,8,9,10}))
如果数字中可能有超过10个位置,只需将数组扩展为常量。
答案 2 :(得分:0)
从互联网获取外部数据时,数据可能包含前导或尾随空格或不可打印的前导或尾随字符。
在这种情况下,最安全的方法是使用正则表达式从字符串中获取数字部分。
将以下UDF(用户定义函数)放在标准模块上,然后在工作表上使用此UDF,如下所示......
假设" 1000 BTC"在A2中,然后像这样尝试UDF ..
=GetNumber(A2)
<强> UDF:强>
Function GetNumber(rng As Range) As Long
Dim Num As Long
Dim RE As Object, Match As Object, Matches As Object
Set RE = CreateObject("VBScript.RegExp")
With RE
.Global = False
.Pattern = "\d+"
End With
If RE.test(rng.Value) Then
Set Matches = RE.Execute(rng.Value)
GetNumber = Matches(0)
End If
End Function