Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 范围到数组:将变量数组收缩到布尔数组_Excel_Vba - Fatal编程技术网

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的建议,可以指导您尽可能多地缩小阵列。在过去内存和波特率有限的糟糕日子里(如果您需要传输数据),我会把它压缩成一个位数组,所以我很高兴现在内存便宜多了:)