Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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电子表格中过滤会产生巨大的延迟,但使用vba会更快地解决这个问题?_Vba_Excel_Filter - Fatal编程技术网

为什么在大型excel电子表格中过滤会产生巨大的延迟,但使用vba会更快地解决这个问题?

为什么在大型excel电子表格中过滤会产生巨大的延迟,但使用vba会更快地解决这个问题?,vba,excel,filter,Vba,Excel,Filter,我知道这听起来可能很新鲜,但我想知道一些有关Excel筛选内部过程的细节。 几年前,我遇到了一个巨大的Excel电子表格(可能超过4万行或多达8万行)和几个列。当我们想用Excel数据过滤器过滤一些数据时,电子表格几乎崩溃了。需要2到3分钟才能显示所需的信息,您不应该通过单击文件来“打扰”它,否则您将收到“无响应”消息。 我在VBA中找到了一个简单的代码,可以实际更改过滤器的参数,但实际上不需要手动打开过滤器(不点击它们),过滤器将在1秒或更短的时间内返回过滤后的数据。 我的问题是,Excel在

我知道这听起来可能很新鲜,但我想知道一些有关Excel筛选内部过程的细节。 几年前,我遇到了一个巨大的Excel电子表格(可能超过4万行或多达8万行)和几个列。当我们想用Excel数据过滤器过滤一些数据时,电子表格几乎崩溃了。需要2到3分钟才能显示所需的信息,您不应该通过单击文件来“打扰”它,否则您将收到“无响应”消息。 我在VBA中找到了一个简单的代码,可以实际更改过滤器的参数,但实际上不需要手动打开过滤器(不点击它们),过滤器将在1秒或更短的时间内返回过滤后的数据。 我的问题是,Excel在内存中加载了什么样的信息,这样当你点击一个过滤器时——如果数据太多——延迟会很高?
因为我使用VBA所做的唯一一件事实际上是设置过滤器的参数(即“从名为“City”的过滤器中只返回“Washington”、“Mexico City”和“Montevideo”等)。

我怀疑,如果您打开一个过滤器,Excel必须填充下拉列表,这将导致非常大的开销(调用UI来创建非常大的下拉列表,带有复选框)。如果您只设置参数,则无需执行任何操作。但我只是猜测。谢谢Floris,这似乎是有意义的。我会继续调查,但这给了我一个线索。我注意到,在处理大表时,通常设置过滤器非常快,但当您按下“清除”按钮时“过滤器按钮可能需要很长时间。将CalculationOptions更改为“Manual”有很大帮助,因为即使计算速度很慢,也可以进行多次更改,然后只重新计算一次。