我是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)。
答案 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并导入它们可能会更快?