arrays - 在Excel VBA中将字节数组写入范围而不循环

标签 arrays vba excel

我正在尝试将数组直接转储到工作表而不循环。这对于除“字节”数组之外的所有数据类型都是可能的。为什么会这样?

我想使用Byte数组,以节省内存成本(数据经常超过2GB excel限制)。虽然我通过分成 block 来解决这个问题,但我想了解为什么字节数组不能直接转储到范围中。

编辑1:

数组值为 0 或 1。我希望输出按原样显示。 使用 bool 数组将其指定为 TRUE 或 FALSE,这是我不喜欢的。 有没有优化(内存和速度)的方法来做到这一点?

Sub ArrayPasting()

    Dim byteArray(1 To 3) As Byte
    Dim intArray(1 To 3) As Integer

    For i = 1 To 3
        byteArray(i) = i
        intArray(i) = 2 * i
    Next i

    ActiveSheet.Range(Cells(1, 1), Cells(1, 3)).Value = intArray    'range populated with intArray
    ActiveSheet.Range(Cells(2, 1), Cells(2, 3)).Value = byteArray   'error

End Sub

最佳答案

假设我们有一个非常大的 bool 数组,我们想要:

  • 转储到单元格
  • 转换为 1/0 (其中 TRUE 为 1)

然后是这样的:

Sub SayBoo()
    Dim Boo(1 To 2, 1 To 2) As Boolean
    Dim r As Range
    Set r = Range("A1:B2")

    Boo(1, 1) = True
    Boo(1, 2) = True
    Boo(2, 1) = False
    Boo(2, 2) = False
    r = Boo

    With r
        .Value = Evaluate("=IF(" & .Address & ",1,0)")
    End With

End Sub

会做的。

关于arrays - 在Excel VBA中将字节数组写入范围而不循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51380513/

相关文章:

java - 查找数组中连续的重复整数

javascript - 如何删除数组中重复对象的两个实例

excel - 如何有效地抑制excel vba中选定列中的所有空行?

excel - SSRS - 将外部 excel 文档与生成的报告合并?

java - 如何从java中的结果集列名获取值?

python - R - Reticulate 不会将 numpy 数组转换为矩阵

java - 将数组从索引排序转换为值排序

vba - 如何使用宏关闭跟踪更改?

excel - 我怎样才能得到 og :image from resource with VBA excel

vba - 当作为 VBA .xlam 加载时,功能区无效在 Excel 2007 中不起作用