Excel文件太大的话,肯定会导致运行缓慢,但是可以使用以下方法提" />
乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > <em>数据量</em>太大,<em>Excel</em>拖不动怎么办-

<em>数据量</em>太大,<em>Excel</em>拖不动怎么办-

作者:乔山办公网日期:

返回目录:excel表格制作


正常的。电脑没反应过来,一会儿就好了。

Excel文件太大的话,肯定会导致运行缓慢,但是可以使用以下方法提高和改善:
一、 首先要合理设计数据的布局,这是计算效率得到保障的前提
由于Excel引用访问本工作表、不同工作簿或工作表数据的速度是有区别的,通常计算指向其他工作表的引用比计算工作表内的引用速度要慢。当数据计算量较大时,就必须考虑数据的整体布局:数据是分工作簿保存、分工作表保存,还是保存在同一工作表。
基于整体性原则,如果是清单型数据表格,可能的话,尽量将数据整合同一工作表,至少尽量在同一工作簿。如果不能整合在同一工作簿,宁愿使用少量的大型工作簿,也不要使用数量较多的小型工作簿。尽可能地避免工作簿间的链接,对外部工作簿进行链接,既影响表格的打开速度,并且当工作簿移动或删除时,还容易出现断链,不易于查找和修复。
二、不可避免引用其他工作簿时的提速技巧
对关闭的工作簿尽量使用简单的直接单元格引用。这样做可以避免在重新计算任何工作簿时重新计算所有链接的工作簿。
如果不能避免使用链接的工作簿,最好将它们全部打开而不是关闭,并且表格打开顺序也有讲究,要首先打开要链接到的工作簿,然后再打开包含链接的工作簿。一般来说,从打开的工作簿比从关闭的工作簿中读取链接的速度要快。
进一步提速的“断舍离”大法:
断:数据量大的表格,应将已经计算出结果且不会再更新的单元格的公式计算结果采用选择性粘贴方式转化为数值,以减少计算量;
舍:尽量不要大范围使用计算量大的功能或公式。比如:尽管条件格式和数据有效性的功能非常强大,数组公式运算功能也非常强大,但是,大量使用它们会明显降低计算速度,除非你愿意忍受蜗牛般的运算速度,否则,不要大范围使用数据有效性、条件格式和数组公式;
离:如果某张工作表需要进行大量运算,且其他工作表对它的引用较少,可考虑将其移出本工作簿。以免每次重新计算时,影响工作簿的整体计算速度。
三、 原始数据要规范
原始数据一定的规范,否则,还要使用函数公式清洗不规范的数据,徒增中间环节,影响计算速度。比如数据的来源不是手工输入,而是从其他系统导出,导出的数据可能并不规范,比如数字是文本格式、数字后有空格、不可见字符,这些数据就没法直接参与运算,如果不手工整理成规范数据,还得用函数公式进行规避,这就大大影响计算速度。
四、 要关注公式函数的计算效率,尽量使用效率高的函数,或使用其他功能代替。
1. 非必要的情况下,不使用可变函数(易失性函数)。
Excel的可变函数有:RAND、NOW、TODAY、OFFSET、CELL、INDIRECT和 INFO。可变函数有个特点,当数值发生变化时,每次都要重新计算,因而会影响表格的计算性能。
比如,我们常用的下面的公式来定义动态区域:
=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),1)
它的好处是:会自动扩展以包含新条目,但表格的计算性能会降低,这是因为 OFFSET 是可变函数,并且由于 OFFSET 中的 COUNTA 函数必须检查很多行,计算效率较低。
一般情况下,我们可以使用Excel的表格功能来代替动态区域(Excel 2003中称为列表)。
2. 使用其他行和列计算并存储中间结果一次,以便在其他公式中重复使用它们。并且,如前所述,尽可能引用其他单元格已有的计算结果,这样可提高运算效率。
11.png (13.93 KB, 下载次数: 4)
下载附件 保存到相册
2015-1-24 22:57 上传
在C2单元格输入公式:
=SUM($A$2:$A2)
然后向下填充公式到 C2000。如上图。B列的公式是上一累加结果加上本行数字。B列的公式是引用了上一行单元格的计算结果,B列公式比C列公式单元格引用总数减少了 500 倍,计算量大大减少。
3. 减少每个公式中的引用数,最大程度地减少函数中的引用单元格范围。
尽管在 Excel 2007以后的版本中,数组公式可以处理整列引用,但是这会强制计算列中的所有单元格,包括空单元格。这样会使表格计算起来很缓慢。
4. 尽可能使用最有效的函数(一般情况下自定义函数慢于 Excel 中的内置函数),编制适当的公式,尽可能减少公式的计算次数
=IF(ISERROR(VLOOKUP("龙逸凡",$A$2:$C$1000,3,0)),"查无此人",VLOOKUP("龙逸凡",$A$2:$C$1000,3,0))
如果表格A2:A1000中有“龙逸凡”, 使用上面这个公式,则 Excel 要运算VLOOKUP函数两次。Excel 2007以后的版本中,可以使用 IFERROR 来减少运算的次数:
=IFERROR(VLOOKUP("龙逸凡",$A$2:$C$1000,3,0)," 查无此人")
五、 非必要的情况下不e68a84e799bee5baa6e79fa5e98193366使用会触发重新计算的操作
以下操作会触发重新计算:
1. 在自动模式下单:击行或列分隔符。
2. 在工作表中插入或删除行、列或单元格。
3. 添加、更改或删除已定义名称。
4. 在自动模式下重命名工作表或更改工作表位置。
5. 在表格中使用筛选、隐藏或取消隐藏行。
6. 在自动模式下打开工作簿。如果工作簿上次由不同版本的 Excel 计算,则打开工作簿通常导致完整计算。
7. 选中了“保存前自动重算”选项的情况下在手动模式下保存工作簿。
六、 可能的情况下先对数据进行排序,再使用查找引用。尽可能避免对未排序数据执行查找,因为速度很慢。
1. 如果使用完全匹配选项,则函数的计算时间与找到匹配项之前扫描的单元格数成比例。对于在较大区域内执行的查找,此时间可能非常长。对排序数据使用 VLOOKUP、HLOOKUP 和MATCH 的近似匹配选项的查找时间很短,并且不会根据所查找的区域长度显著增加。
2. 因为完全匹配查找可能很慢,所以应该考虑使用以下可以提高性能的方法:
Ø 使用一张工作表。使查找和数据位于同一工作表中运行速度更快。
Ø 如果可以,请首先对数据进行排序,并使用近似匹配。
Ø 如果必须使用完全匹配查找,请将要扫描的单元格区域限制在最小范围内。使用动态区域名称或表格(列表)功能,而不是引用大量行或列。
七、 做到了前面四点,表格的运算速度还是很慢时,将Excel的计算模式改为手动计算,在需要时再重新计算。
在手动计算模式下,可以通过按 【F9】触发智能重新计算。使用【Shift+F9】 仅重新计算所选工作表,按【Ctrl+Alt+F9】强制对所有公式执行完整计算,也可以通过按【Ctrl+Shift+ Alt+F9】 强制彻底重新构建依赖项和执行完整计算。
F9计算所有打开的工作簿中的所有工作表。
按 Shift+F9 可计算活动工作表。
按 Ctrl+Alt+F9 可计算所有打开的工作簿中的所有工作表,不管它们自上次计算以来是否已更改。
如果按Ctrl+Alt+Shift+F9,则会重新检查相关公式,然后计算所有打开的工作簿中的所有单元格,其中包括未标记为需要计算的单元格。


第一部分:如何给Excel工作簿减肥
除了工作簿本身有宏病毒(关于如何识别宏病毒,本文的结束处有说明)外,有下列的几个原因可能导致工作簿异常膨胀
一。工作表中的格式过于复杂(如多种字体,多种颜色,条件格式等等)
我们都知道,一个工作表有65536*256个单元格,这个e79fa5e98193e78988e69d83361非常大的一个范围。我们在应用一些格式设置时,往往为了方便,直接在整行,或整列,或者在多行和多列中应用,这样其实是不妥当的。我相信很少有人会用满整列,或者整行。大量的没有用到的单元格被加上了一些格式后,Excel并不总是知道这个单元格是不需要用的,而往往在计算时会包括这些单元格。另外,格式的多样性(包括字体,颜色等),势必是要造成Excel文件体积变大,这是不难理解的。
用尽量少的格式样式,如字体和颜色,毕竟Excel的优势不是在于文书,版面的展示(那是Word,PowerPoint等的强项)
删除“空白”的单元格。找到工作表中最右下角的单元格(请注意:除非你有自信,请不要过分依赖Excel 的"定位"=>"最后一个单元格"所给你的结果),我是说你可以手工找到这个单元格。然后选中这个单元格右边所有的列,然后执行菜单命令:"编辑"=〉"清除"=〉"全部",接下来,选中这个单元格下面所有的行,同样执行菜单命令:"编辑"=〉"清除"=〉"全部",然后保存
二。图片或者其他绘图图形较多,或者图片选择了不恰当的格式
选择适当的图片格式
  在文档中引用的图片格式一般有三种,BMP、JPG、GIF。BMP格式保存的图片保真度较高,但大小往往是其它两种格式的几倍至几十倍,而照片、扫描图片等用GIF格式保存则失真非常严重,因此建议图片先采用JPG格式保存,然后再引入到文档中,这种格式的图片大小不仅比BMP格式小很多,而且往往也比GIF的格式小,而保真度与BMP格式则相差无几。
  利用“插入”引入图片
  插入图片有两种方法,第一种是将图片保存为一个JPG格式的文件,选择“插入→图片→来自文件”,打开“插入图片”对话框,选中所需插入的图片文件,点击“插入”即可。另一种是用“画图”、“Microsoft照片编辑器”等打开这个JPG文件,选中并复制,然后在文档中点击“粘贴”即可插入。强烈建议大家采用第一种方法,虽然两种方法得到的图片质量是一样的,但第一种方法所形成的文档的大小可能会比第二种小几十倍!
彻底清除图形对象:例如我们自己画的一些图形,比如你现在不要用它们了,你选择行或者列范围删除,清除都是清除不掉了,他们只是可能缩小了。这个时候,就可以用到本版"流浪的风"提到过的一个方法
1.先找到其中的一个文本框(找不到就自己添加一个)
2.选中这个文本框,按F5--->定位条件--->对象-->确定
3.按Delete清除
4.保存关闭
5.看看现在文件有多大,打开看看速度还慢不慢
三。公式和名称较多或者公式,名称,数据透视表等所引用的单元格范围过大
由于和第二点类似的原因,我们在定义名称,编写公式,指定数据透视表的数据源时往往图一时方便,而指定了过大的单元格范围。例如在A列中有包括标题在内的10个数据(A1:A10),标题为“姓名”,我们现在要定义一个名称,例如"姓名",很多人会用 插入=〉名称=〉指定=〉首行,这当然是方便的,但这样的话“姓名”这个名称就引用了A2:A65536,而不是实际的A2:A10。你能想象到两者的差别吗?
这时候,有的朋友要说:我这样做的原因是因为我的数据是在不断增加的呀,我可不想每次在变动的时候都去改这个名称。
当然,你是对的,谁会愿意这样做呢?

当我确信我定义的这个名称所引用的范围不可能是固定的时候,我采用了一个方法就是“动态命名”。听起来有点耳熟对吗?请看这个例子:为简单起见,我们假设数据都是连续地在A10后面开始添加,也就是说我们希望当我们添加到A15时,这个"姓名"就如我所愿地指向A2:A15,而这一切都是自动完成的。那么你可以在"插入"=〉"名称"=>"定义"对话框中,找到"姓名",然后修改引用位置为=OFFSET($A$2,0,0,COUNTA($A:$A)-1,1),然后点击"添加"。请留步,先不要急着关闭这个对话框。你现在可以将鼠标放在"引用位置"的这个框里面,由此来验证你要的结果。看到了吗?工作表中那一闪一闪的区域就表示了目前"姓名"所引用的单元格范围。
这只是一个简单的示范,利用这种技巧,可能让我们用最经济的方式得到我们需要的结果。
在公式引用中,在指定数据透视表的数据源时,都可以运用类似的技巧。当然,我不会推荐你写类似这样的公式=CountA(OFFSET($A$2,0,0,COUNTA($A:$A)-1,1)),而是推荐你先定义好这个名称,然后这样写公式:=CountA(姓名)
这种效果在数组公式中更明显,除非你有足够的耐心和勇气,请不要在数组公式用引用过大的单元格范围,特别是那些不必要的单元格。
请注意,以上的检查应该是针对工作簿中的所有工作表,包括隐藏的
四。VBA代码,尤其是用户窗体的影响
现在很多朋友都已经学会了用VBE来构建自己的工程,这是多么令人振奋的一件事!但今天我们要讨论的是如何处理VBA工程可能带来一些副作用以及如何压缩它?
有很多测试证明,用户窗体会是增加文件大小的比较突出的原因之一。而反复地改写工程中模块的代码,也或多或少地会增加文件的大小(我们可以这样理解:反复地改写工程代码,总是会留下一些痕迹和碎片)
对于这个问题,可以考虑将所有模块,窗体,都导出为文件,然后保存,然后再依次导入。
关于用户窗体,作为开发者应该考虑的是:是否真的有必要用某个窗体?举个简单的例子,如果只是接收用户输入数值,就完全可以用InputBox方法或者属性,而不需专门用一个窗体。同时,工作表本身可以用来做用户交互的界面,应该充分利用。

五。外部链接(特别是死链接)的影响
有的时候,我们的工作簿中可能包含了一些外部引用,这样我们可以共享其他工作簿的一些信息。如果你的工作簿中包含外部链接,你可以通过"编辑"=>"链接"对话框中查看到。默认情况下,文件在打开时,总是尝试去链接源文件,以刷新数据。在保存时,会纪录链接的变化情况。
当源文件的位置或者内容发生变化时,就可能产生死链接。
我个人非常不主张用链接方式来实现不同文件间数据的共享,这既不是最方便的方法,而且在文件分发过程中会遇到一些问题。我当然知道数据共享是有意义的,但我经常会尝试用其他的途径来实现。
六。关于自动保存选项的考量
选中这个选项时,每次进行保存文档的操作则只保存文档的修改部分,保存速度较快,但文档的大小也会增加,即使是对文档进行删减操作也是如此。目前计算机的速度较快,因此开启这项功能所带来速度的增加毫不明显,但付出的代价是文档的大小急剧膨胀,建议不要选中这个选项。试着关闭这个选项,再对文档稍作修改,然后保存,你会惊奇地发现文档的大小会大幅度缩小!
七。文件异常退出(或者其他不可预见的原因)造成的工作簿内工作表结构方面的损坏
有时候,由于一些不可预见的原因(例如停电),Excel被迫异常退出。虽然目前没有专门的工具可以检测这种情况对工作簿内部可能造成的损坏程度,但是有理由相信多少是有影响的。
如果你的文件中不存在前面提到的几个问题,同时你还是确信文件体积不正常,你可以尝试如下的方法
新建一个工作簿,把现有文件中的工作表一一剪切到新的工作簿中。请注意这里用的是“剪切”方法,不是“移动或复制工作表”,也不是“复制”。没错,就是先选中工作表中的内容,然后“剪切”,光标移动到目标工作表,然后“粘贴”。这样做唯一不足的地方就是,目标工作表的行和列格式可能要稍微调整一下。
第二部分:如何给Excel加速
可能影响Excel的运行速度的几个方面
1。设备的配置是否合理?特别是Office 2003,功能的确是很强大了,但相应的对硬件的要求也提高了。一般用户都用Windows Xp系统,然后装Office 2003 ,当然还有其他的软件了,这样的情况,我推荐的配置是:CPU P4 1G及以上,内存256MB及以上,硬盘40G及以上。根据自己的计算机的配置情况,你也可能选择只安装部分(而不一定是全部)Office组件和工具。
2。加载宏。Excel内置了几个加载宏程序,可以帮助我们实现一些高级功能。另外,我们自己也可以编写,或者在网上也可以找到更多的各式各样的加载宏程序。在使用加载宏时我可以给出的建议有:首先一定要确认加载宏的来源是否正当?下载后,安装前,强烈推荐要先杀毒。其次,要用的时候再加载它,而不主张一直把所有的加载宏都加载上。
3。自动重算,自动保存选项的考量。这两个选项在一定程度上给我们的工作带来了便利。但在有些时候(例如是公式比较多的时候),特别是自动重算,可能导致运行速度变慢。前面提到:自动保存选项也是可能导致文件增大的一个因素。有选择性地在操作一些文件时关闭这两个选项,可能会对运行速度有帮助。
4。迭代计算选项的考量。出于某种特殊的需求,我们可能会允许工作簿进行迭代计算,也就是循环引用(这种有目的的循环引用可以被用到解联立方程等一些特殊的场合)。但是这种循环引用会导致工作表频繁地被计算,当工作表任何地方发生变化时,就被重新计算一次。所以,这一点也是影响Excel速度的原因之一。建议不要勾上这个选项。
5。文件不正常(主要是本文第一部分所提到的一些情况)。这一项的解决不再赘述。
6。不恰当地使用了其他一些外部工具可能导致的问题。例如一些测试版的软件,就好比目前的VSTO 2005 BETA2 ,这里面有一些针对Excel进行编程的工具。有的朋友(请注意:只是可能)就会发现,安装了这个工具后,或者即使后来卸载了这个工具后,Excel在读文件,特别是内部有宏的文件时非常奇怪地“吃”内存,具体地说就是Excel会疯狂地占用内存,以致根本就无法正常工作。对于这种情况,有一个比较简便的方法就是使用:帮助=〉检测与修复 ,有两个选项:修复时恢复快捷方式;放弃自定义设置并恢复默认设置。如果两个选项都选上了,或者至少第二个选项选上了的话,执行修复完后一般都能解决这个问题。请注意:在执行这个操作之前,请确定你已经清楚这样操作可能导致的一些问题(例如Outlook的个人数据文件可能需要重新指定:文件不会丢失,但修复完重新开Outlook前,请到控制面板=〉邮件 对话框中指定你的个人数据文件)。强烈建议你要先阅读相应的帮助文档。
第三部分:如何识别宏病毒?
在VBE(Visual Basic编辑器)中,激活工程资源管理器,并定位到你要检查的工作簿。 检查工作簿中所有模块(包括ThisWorkBook模块)中的代码,查看是否有你不熟悉的VBA代码。病毒代码往往格式混乱并且含有大量奇怪的变量名称。另一个选择是使用市售的查毒软件。
为保证安全,建议将OFFICE 的宏安全性级别设置为中级后者以上(请注意:如果设置为高级的话,你将不会收到任何的通知,Excel自动禁止所有宏运行)
第四部分:结语
1。正如我不止一次在新闻组中提到的一样,Excel并不是设计用来存储数据的。所以我不推荐在Excel中存放太多的数据。虽然Excel工作簿所允许的工作表数量并没有什么具体的限制(Excel2003),但我推荐的工作表数量不要超过10个。上次有个朋友说他有一个文件足有81MB,这是在是令人担忧的。即使前三部分提到的一些问题都解决好了,而数据量如此之大的话,速度还肯定是慢的。
2。以上为个人经验,仅供参考和研究交流之用
3。在你决定按照以上提到的一些方法进行操作之前,建议你保留一份文件备份到安全的地方。
这里补充一点:
数据透视表是可以解决相关的问题点,请问有没有样板,即数组与透视表对比的两个文件贴上来看一下,以便学习.
数组公式、VBA威力巨大,在某些情形下提高效率非常明显,但各有其弱点。数组公式在大数据的时候,运行速度慢得无法忍受。比如,我日常需要编制得几个报表,原始数据有4-8万行,20——30列,用数组根本无法操作。倒是利用数据透视表及其他一些组合功能,可谓神速。而VBA主要适用与日常比较固定的一些工作,对于一些临时性工作而言,缺乏灵活性,有杀鸡用牛刀之嫌疑。因此,根据我个人多年工作经验的体会,能熟练地灵活运用EXCEL基本功能和常用函数,就可以高效地完成大部分日常工作。
我比较常用地东西有:数据透视表,数据——有效性,ctrl+enter,index ,match,indirect,offset,if,vlookup,下拉列表框,绝对引用与相对引用,编辑——选择性粘贴(数值、乘除、转置等),图表,条件格式,定义名称,分列,填充等。
相反观点:数据透视表的计算是excel中内置的,同样的计算次数速度与数组公式是一样的,数组公式计算慢有两个因素,一是公式的编写不合理,另一个主要的原因是数组公式要对所有的引用数据进行计算,不管这些数据是否有效。
VBA应该是最灵活的,在VBA中结合数组公式是可以达到最佳目的的,可用VBA先分析出数组公式要用的有效引用区域,在辅助表中进行数组计算(这个速度比用VBA直接分析计算要快得多),再将结果记入需要的单元格中,然后删除辅助表。
其实你说的那些基本操作均可用VBA来做的,速度比手工做要快

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网