【问题标题】:VBA Querytables converting text to number in ExcelVBA Querytables在Excel中将文本转换为数字
【发布时间】:2015-11-12 20:26:20
【问题描述】:

我有一个简单的 VBA 代码,可以从谷歌金融获取股票价格。当我在列中返回结果时,excel 正在将行转换为数字。这些是逗号分隔的值,看起来像 189,209.97,210.03,209.97,210,300,它工作正常(保持为文本)。但有时该值为 190,210,210,210,210,000,在这种情况下,excel 会将其转换为数字(不再有逗号),这会扰乱我的下游处理,因为我需要将文本转换为列。有什么方法可以通过 VBA 强制 excel 仅接受所有值作为文本?代码如下所示:

With DataSheet.QueryTables.Add(Connection:="URL;" & qurl, Destination:=DataSheet.Range("a1"))
        .BackgroundQuery = True
        .TablesOnlyFromHTML = False
        .Refresh BackgroundQuery:=False
        .SaveData = True
End With

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    将范围更改为您需要的范围。

    DataSheet.Range("A1").NumberFormat = "@"
    

    【讨论】:

    • 非常感谢。这样做。就像其他人寻找类似东西的参考一样,这就是我所做的。 DataSheet.Columns(1).NumberFormat = "@"
    【解决方案2】:

    如果可能,我发现以正确格式获取数据更容易,即在数字周围添加等号和引号,以使 Excel 直接将其作为文本加载

    参考:https://superuser.com/questions/307496/how-can-i-set-excel-to-always-import-all-columns-of-csv-files-as-text

    其他方法 如果您有权访问创建 CSV 的源,则可以更改 CSV 语法。 用双引号将每个值括起来并在等号前面加上 ="00001"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 1970-01-01
      • 2011-04-12
      相关资源
      最近更新 更多