如何将多个Excel单元格的数据类型更改为Single?

时间:2017-06-01 12:24:38

标签: r excel vba excel-vba

我是VBA的新手但在R中经历过。在我目前的项目中,我需要阅读很多电子表格,这很慢!

基本上我有一个Excel表格的数字列。我查看了它们的数据类型:

Public Sub cellType()
       MsgBox TypeName(Range("A1").Value)
End Sub

原来大多数都是type DOUBLE。由于我有大约40页要读入R,我想知道我是否可以将所有数值更改为SINGLE类型。但是,以下内容没有任何变化。

Public Sub changeDType()
       Range("A2").Value = CSng(Range("A2").Value)
       Range("B5").Select
End Sub

A2的值保持为DOUBLE。有没有办法将它们改为单身?

此外,我想对所有列(例如Range("A2:H500"))执行此操作。但后来我收到了一个错误。有没有办法改变整列的这个?

编辑:这个问题背后的想法是通过将DOUBLE存储的数字向量转换为SINGLE来加速readxl命令,从而在DOUBLE存储的点之后删除大量这些数字。毕竟R只在点后处理大约16个数字。另外,我希望使用readxl而不是read_csv来保存几行代码。

Edit2:由于csv显然没有办法,我generated the csv without opening Excel(仅适用于Windows)。

1 个答案:

答案 0 :(得分:0)

您无法将其转换为Single之类的内容。即使你有一个整数值,类型也是双倍的:

Sub testValue()
    Dim r As Range
    Set r = ThisWorkbook.Sheets(2).Cells(1, 1)
    r.Value = 5
    MsgBox TypeName(r.Value)
End Sub

我不知道你如何将Excel数据读入R,但我认为数据类型本身并不会减慢进程的速度。如果将工作表保存为CSV并导入它们可能会更快?