String 如何在Excel中将字符串转换为数字,反之亦然
我有一些XML文件,其中包含以“.”作为十进制分隔符存储的十进制数。我创建了Excel工作簿,用于编辑XML中的数据。MSXML用于从XML中读取数据,然后显示在工作表中。存储数据后,我用从表中读取的新值修改DOM结构,并保存XML 问题是,当我将十进制数转换回字符串时,为了将它们保存为XML中的值,使用了用户在Windows区域设置中指定的十进制分隔符String 如何在Excel中将字符串转换为数字,反之亦然,string,vba,excel,type-conversion,String,Vba,Excel,Type Conversion,我有一些XML文件,其中包含以“.”作为十进制分隔符存储的十进制数。我创建了Excel工作簿,用于编辑XML中的数据。MSXML用于从XML中读取数据,然后显示在工作表中。存储数据后,我用从表中读取的新值修改DOM结构,并保存XML 问题是,当我将十进制数转换回字符串时,为了将它们保存为XML中的值,使用了用户在Windows区域设置中指定的十进制分隔符 我需要一种方法来强制存储十进制数字,在所有情况下都使用“.”作为十进制分隔符。这是可能的吗?如何用新值修改DOM结构——以编程方式?怎么做 您
我需要一种方法来强制存储十进制数字,在所有情况下都使用“.”作为十进制分隔符。这是可能的吗?如何用新值修改DOM结构——以编程方式?怎么做
您是否可以使用
格式(Cell.value,#0.0”)
?还可以尝试格式(CDbl(Cell.Value),“#0.0”)
。如果这不起作用,你能不能加入一个替换(值“,”,“)
?如果不使用数千个分隔符,这应该没问题。使用Str
功能。它只将句点
识别为有效的十进制分隔符
Dim d as Double
Dim s as String
d = 3.25
s = Str(d)
' s is now " 3.25"
请注意,Str
为数字符号保留一个前导空格。如果您不希望正数前面有空格,只需Trim
结果:
s = Trim(Str(d))
' s is now "3.25"
@Jean Francois因为我们谈论的是i18n,所以您应该使用CStr(用于国际应用)函数,而不是Str(其中.dot是浮点数的分隔符,在法语中不太常用,逗号是分隔符,例如:7,54)
我只做xmlNode.Text=cell.Value。我尝试了你的建议,但结果仍然有“,”作为小数点分隔符。使用替换是我的最终解决方案。我只需要使用Format函数确保没有同时包含十进制和千位分隔符的数字。我在两个方向上都遇到了问题,我需要能够读取和写入XML值。如果CDbl(“1.000”)=1000,那么num=CDbl(Replace(value),“,”,”),否则num=CDbl(value)End,如果你没有要求在两个方向上都有效的东西,那么我现在就可以阅读这个代码了。。。但您的解决方案看起来是一个很好的方法。问题是:“我需要一种方法,在所有情况下都使用
作为十进制分隔符来强制存储十进制数字。”。这就是我的答案。
Sub myFunction()
Dim num As Double
Dim str As String
num = 3.251
str = CStr(num) ' convert a number into a String
num = Val(str) ' convert a String into an integer
num = Trim(str) ' convert a String into a Variant
str = Trim(num) ' notice this works the other way around
End Sub