【问题标题】:How to convert string to number and vice versa in Excel如何在Excel中将字符串转换为数字,反之亦然
【发布时间】:2011-05-29 15:42:52
【问题描述】:

我有一些 XML 文件,其中包含用 '.' 存储的十进制数字。作为小数分隔符。我创建了 Excel 工作簿,用于编辑该 XML 中的数据。 MSXML 用于从 XML 读取数据,然后显示在工作表中。存储数据后,我使用从表中读取的新值修改 DOM 结构并保存 XML。

问题是当我将十进制数字转换回字符串时,为了将它们保存为 XML 中的值,使用了用户在 Windows 区域设置中指定的小数分隔符。

我需要一种方法来强制使用 '.' 存储十进制数字在所有情况下作为小数分隔符。这可能吗?

【问题讨论】:

    标签: string vba excel type-conversion


    【解决方案1】:

    @Jean-Francois 因为我们在谈论 i18n,所以您应该使用 CStr (用于国际应用程序)函数而不是 Str (其中 .dot 是浮点数的分隔符, 在法语中用处不大,逗号 , 是分隔符 ex : 7,54)

    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
    

    【讨论】:

    • 问题说:“我需要一种方法来强制存储在所有情况下都使用. 作为小数分隔符的十进制数”。这就是我的回答。
    【解决方案2】:

    如何使用新值修改 DOM 结构——以编程方式?怎么样?

    你可以使用Format(Cell.value, "#0.0")吗?也可以试试Format(CDbl(Cell.Value), "#0.0")。如果这不起作用,您可以直接输入Replace(Value, ",", ".") 吗?如果您不使用千位分隔符,这应该没问题。

    【讨论】:

    • 我只是做 xmlNode.Text = cell.Value。我尝试了您的建议,但结果仍然有“,”作为小数分隔符。
    • 使用替换是我的最终解决方案。我只需要使用 Format 函数确保没有同时包含小数和千位分隔符的数字。
    【解决方案3】:

    使用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"
    

    【讨论】:

    • 我无法让它双向工作,我需要能够读取和写入 XML 值。我现在有这个代码供阅读If CDbl("1.000") = 1000 Then num = CDbl(Replace(value, ".", ",")) Else num = CDbl(value) End If
    • 你没有要求双向工作的东西......但你的解决方案看起来是一个很好的方法。
    猜你喜欢
    • 2011-05-27
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    相关资源
    最近更新 更多