Tag: 性能

CurrentRegion.SpecialCells(xlCellTypeVisible)太慢 – 提高性能的提示?

我试图自动化有5个不同的信息来源的报告。 我尝试使用ListObjects将不同的表组合成一个单独的表,除非当我复制第一个ListObject的第一列时,一切正常。 复制第一列大约需要2分钟,接下来的列不到1秒。 每次运行VBA脚本时,我都会删除目标表中的所有行,以便使用带有0行的ListObject来启动VBA脚本。 我会试着解释它是如何工作的: Sub ProcesarPresupuesto() 'This is the first macro that process and copy the information of the first source Application.ScreenUpdating = False Application.DisplayAlerts = False Application.Calculation = xlCalculationManual '<Here> I add several columns and process the information of this first source, I keep all the rows as values using the Function: AddColumnFormula […]

如何优化打开和closuresexcel工作簿来提取数据运行更快

我目前知道有两种方法可以打开和closuresexcel工作簿,从中提取数据并在一个工作簿中进行汇总。 第一种方法如下: Dim wbDataSheet As Workbook For FNum = LBound(MyFiles) To UBound(MyFiles) Set wbDataSheet = Workbooks.Open(MyPath & MyFiles(FNum), 0, True) 'Capture data wbDataSheet.Close (False) Next FNum 其次是这样的: Dim XL As New Excel.Application For FNum = LBound(MyFiles) To UBound(MyFiles) With XL .Workbooks.Open FileName:=MyPath & MyFiles(FNum), ReadOnly:=True .Visible = False End With 'Capture Data XL.ActiveWorkbook.Close False Next […]

如何衡量Excel计算速度?

我正在开发Excel 2010应用程序 ,其中包含60多个工作表中的复杂计算。 当我改变任何单元格中的某些数据时,在后台计算中需要很多时间(我希望计算是自动的 )….. 有没有什么方法可以找出哪个配方需要更多的时间呢? 什么是更好的方法来提高性能 – 多个简单公式与单一复杂(MULTISTEP)公式? 即 [STEP-1] E1 = C1 * D1 [STEP-2] F1 = E1 / B1 [STEP-3] G1 = F1 + B1 要么 [SINGLE STEP] G1 = (C1 * D1 / B1) + A1 build议将不胜感激! 谢谢

在VBA Excel中优化双循环的性能

我很想知道在双循环中执行一组指令的最快方式,以循环遍历二维单元格范围。 我的代码将是这样的: Sub Test() For i = 1 To 1000000 For j = 1 To 10 'It can be more than 10 'I put a set of instructions here Next j Next i End Sub 例如,假设我编写了一个简单的代码来实现这样一个下面的任务: Sub Test1() T0 = Timer For i = 1 To 1000000 For j = 1 To 10 Cells(i, j) […]

提高循环的速度

我正在尝试提高代码的速度。 我已经通过所有的基本技巧search了我的方式,并添加了一个计时器来帮助我确定我的代码运行需要多长时间。 每1000次迭代大约需要4.14次。 我已经阅读了一些关于将代码写入数组并读取回来的文章,但我不知道如何在这里应用这个想法。 也许还有另一种方法。 谢谢您的帮助! Sub Random() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Application.DisplayStatusBar = False Application.DisplayAlerts = False Application.EnableEvents = False ActiveSheet.DisplayPageBreaks = False Dim wksData As Worksheet Dim StartTime As Double Dim SecondsElapsed As Double Dim x As Double Dim i As Double Set wksData = Sheets("Data") wksData.Range("O3:P1048576").ClearContents StartTime = Timer With […]

为什么Excel VSTO插件在较高规格的机器上运行速度较慢?

我使用VSTO和VS 2008在C#中开发了一个Excel 2003插件。这个插件在我的机器(HP NC6320笔记本电脑,3GB RAM T5600 1.8ghz Core2 cpu)上工作得很好,但是当在另一个用户机器上testing时nc6710b笔记本电脑2GB内存,T7200 2ghz Core2 CPU),这是相当慢。 我也在另一台笔记本电脑上试过,和我的一样,而且速度也很快 我已经经历了显而易见的事情,例如正在运行的应用程序,防病毒软件等。这些机器都是完整的补丁,并且是最新的。 基本上,外挂的function是:1.从SQL Server 2005数据库读取数据2.对其进行一些操作3.在工作表上显示它,并适当地格式化 慢位是工作表上的显示。 我很难为什么它会在一台较新的机器上变慢。只是为了让自己感到困惑,我尝试了一个虚拟机(VMware Workstation v6.5),内存为256MB,1个CPU,运行XP,只有Office 2003安装在上面,而且比新的笔记本电脑快得多。 总而言之,一个Excel Addin可以在一个低规格的虚拟机上快速执行,而在一台旧的笔记本电脑上执行,而在一台新的规格的笔记本电脑上执行速度会更慢。 任何build议将感激地收到? 非常感谢 缺口 编辑: 好吧,我已经检查过打印机驱动程序,它们是一样的…我检查了碎片级别,如果有的话,速度更快的机器比较慢的碎片更less。 我正在看事件设置

用PHP读取大型的excel文件

我试图用PHPExcel1.7.3c读取一个17MB的excel文件(2003),但是在超过120秒的限制后,它已经在加载文件的时候崩溃了。 有另一个图书馆可以更有效地做到这一点吗? 我没有需要的样式,我只需要它支持UTF8。 谢谢你的帮助

如何提高Excel中xlwings UDF的速度?

在Python 3中,我通过xlwings在Excel中使用UDFs来计算公式。 该公式计算超过4000次,大约需要25秒来刷新工作表。 以下公式为例。 该公式在每个Excel单元格的Excel中使用公式参考单元格=test_1(B20,C20,D20) 。 VBA优化连接设置设置为true, OPTIMIZED_CONNECTION = True 。 @xw.func def test_1(x, y, z): a = x**2 + y**2 + z**2 return a 在VBA或Excel中计算相同的公式几乎是瞬间的。 所以我的问题是为什么这么慢,有没有办法提高速度? *新的信息 使用数组公式要比多次调用UDF快得多。 下面的公式与原始公式做同样的事情,但将范围作为input并返回一个范围。 @xw.func @xw.ret(expand='table') def test_array(x, y, z): a = np.array(x)**2 + np.array(y)**2 + np.array(z)**2 return np.transpose(a[np.newaxis]) 如果可以使用,这是一个很好的解决方法。 但是,如果无法完成,问题仍然存在。

VBA图表操作缓慢

我写了一些生成散点图的Excel VBA代码,并更改了图表的一些属性。 (代码如下,以供参考。)代码缓慢移动,如删除图表图例,删除水平/垂直网格线,以及更改X和Y系列。 Excel的计时器为每个任务提供了以下持续时间: insert scatterplot: 0.01171875 delete series: 0 plot x vs y: 0.55859375 delete legend: 0.5703125 delete chart title: 0.66015625 remove grid: 1.3046875 format axes: 0 overall: 3.11328125 删除网格,改变标题,绘制X和Y系列,删除图例似乎需要很长时间。 我已经search了替代方法来编写代码,但一直没有find有用的东西。 代码完全按预期工作,除了速度慢以外。 任何想法是什么导致了糟糕的performance,以及如何加快这一点? 提前致谢。 编辑:我已经closures屏幕更新,同时使用图表。 图表是在用户表单打开的情况下生成/格式化的,如果这有什么区别的话。 以下是相关的代码片段: With ActiveChart 'Delete all series currently in plot Do While .FullSeriesCollection.Count > 0 .FullSeriesCollection(1).Delete Loop 'Plot Actual […]

OLEDB读取Excel的性能

以下代码在i7- * 3.4 GHz windows-7 64位计算机上需要2500毫秒的时间读取25000行和5列的Excel表格。 每个单元格大约包含一个有10个字符的string 这是正常的吗? 我怎样才能更快地读取它? Stopwatch sw1 = Stopwatch.StartNew(); var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; " + "Extended Properties=Excel 12.0;", filename); var adapter = new OleDbDataAdapter("SELECT * FROM [roots$]", connectionString); var ds = new DataSet(); adapter.Fill(ds, "roots"); sw1.Stop(); Console.WriteLine("Time taken for excel roots: {0} ms", sw1.Elapsed.TotalMilliseconds);