Excel 范围到数组:将变量数组收缩到布尔数组
考虑以下代码:Excel 范围到数组:将变量数组收缩到布尔数组,excel,vba,Excel,Vba,考虑以下代码: Dim array As Variant array = Range("a1:a1000000").Value2 知道A列只包含布尔(1或0)数,将其数据类型转换为布尔值时收缩数组的最有效方法是什么?写一个循环并填充第二个数组。收缩数组没有任何好处。范围中的每个单元格(假设它们都是整数0..1)将作为Long数据类型存储在数组中。描述了发生这种情况的方式和原因。此外,显示它无论如何都存储为整数。实际将数组缩小到实际需要的大小更有价值,即,如果工作表有8721行,而您仍然使用一百
Dim array As Variant
array = Range("a1:a1000000").Value2
知道A列只包含布尔(1或0)数,将其数据类型转换为布尔值时收缩数组的最有效方法是什么?写一个循环并填充第二个数组。收缩数组没有任何好处。范围中的每个单元格(假设它们都是整数0..1)将作为
Long
数据类型存储在数组中。描述了发生这种情况的方式和原因。此外,显示它无论如何都存储为整数。实际将数组缩小到实际需要的大小更有价值,即,如果工作表有8721行,而您仍然使用一百万行填充数组,这就是增益所在。不要担心数据类型的大小,您的计算机有足够的内存来处理它。@PeterT:事实上,正如我在“局部变量”窗口中看到的,每个单元格都存储在Variant/Double类型中:(最终,您可以决定缩小阵列大小对应用程序的价值。这里给出的建议,特别是@TimWilliams和MattieuGuindon的建议,可以指导您尽可能多地缩小阵列。在过去内存和波特率有限的糟糕日子里(如果您需要传输数据),我会把它压缩成一个位数组,所以我很高兴内存现在便宜多了:)写一个循环,然后填充第二个数组。压缩数组没有什么好处。范围内的每个单元格(假设它们都是整数0..1)将作为Long
数据类型存储在数组中。描述了发生这种情况的方式和原因。此外,显示它仍然存储为整数。实际将数组缩小到实际需要的大小更有价值,即,如果工作表有8721行,而您仍然使用一百万行填充数组,则e增益是。不要担心数据类型的大小,您的计算机有足够的内存来处理它。@PeterT:事实上,正如我在“局部变量”窗口中看到的,每个单元格都以变量/双精度类型存储:(最终,您可以决定缩小阵列大小对应用程序的价值。这里给出的建议,特别是@TimWilliams和MattieuGuindon的建议,可以指导您尽可能多地缩小阵列。在过去内存和波特率有限的糟糕日子里(如果您需要传输数据),我会把它压缩成一个位数组,所以我很高兴现在内存便宜多了:)