Tag: 性能

更快地search文件夹/子文件夹

我试图在我们的Sharepoint站点及其子文件夹中search符合某些标准的Excel文档的多个文件夹,然后将工作簿中的数据复制到摘要书(实际上并不需要该部分的帮助)。 我搜遍了,并提出了下面的代码,但它是慢得可笑(我有接近1000个文件夹每个有多个子文件夹通过)。 我很好奇,如果有人知道一个更快的方式,因为这个周末可以运行,而且还没有接近。 Sub Main() On Error GoTo ErrHandler Dim fso, oFolder, oSubfolder, oFile, queue As Collection Dim StartTime As Double Dim MinutesElapsed, FileString As String Const MyDir As String = "\\hp.sharepoint.com@SSL\…" ' Remember time macro starts StartTime = Timer Set fso = CreateObject("Scripting.FileSystemObject") Set queue = New Collection queue.Add fso.GetFolder(MyDir) Do While queue.Count > […]

input框缓慢的VBA代码

Range("C5").Select mydate = InputBox("Please enter Date Must be 3Letters+Day ie Jan1") Range("C5") = mydate 问题是,如果excel只是打开它的快速工作,在input框中键入date,但如果我试图在Excel数据工作的时间后操作代码它非常慢….不挂但慢(打字的步骤input框中的date)之后,代码正常运行正常后通过此步骤 所以我必须在运行这个代码之前重新启动我的excel am using Application.ScreenUpdating = False 寻找你的帮助

将sumifs公式添加到大范围的更快速的方法

我想知道是否有一个更快的方式增加(和计算)一些公式成一个更大的范围。 所以范围计数22列,每行14235行。 每列都有自己的公式,其中大部分是5个标准的总和。 我的方法其实很简单,但可能不是最快的。 只是select每列的范围并插入公式。 Sheet1.Range("G4:G14238").FormulaR1C1 = "=SUMIFS(sumRangeA,criteria_range1,RC[-6],criteria_range2,RC[-5],criteria_range3,RC[-4],criteria_range4,RC[-3],criteria_range5,RC[-2])" Sheet1.Range("H4:H14238").FormulaR1C1 = "=SUMIFS(sumRangeB,criteria_range1,RC[-7],criteria_range2,RC[-6],criteria_range3,RC[-5],criteria_range4,RC[-4],criteria_range5,RC[-3])" …and so on 这实际上需要一段时间,我相信是因为excel插入后计算了一切。 所以我试图在插入公式之前停用自动计算,并让excel在每个公式被填充后计算一切,但是甚至需要更长的时间(接近两倍)。 不知道我是否正确使用了代码 Application.Calculation = xlCalculateManual Sheet1.Range("G4:G14238").FormulaR1C1 = "=SUMIFS(sumRangeA,criteria_range1,RC[-6],criteria_range2,RC[-5],criteria_range3,RC[-4],criteria_range4,RC[-3],criteria_range5,RC[-2])" Sheet1.Range("H4:H14238").FormulaR1C1 = "=SUMIFS(sumRangeB,criteria_range1,RC[-7],criteria_range2,RC[-6],criteria_range3,RC[-5],criteria_range4,RC[-4],criteria_range5,RC[-3])" Application.Calculation = xlAutomatic 为了让你更好地理解我想要达到的目标:到现在为止,我把这些公式放在一个常规的excel表格中(根本没有vba)。 它正在工作,但非常缓慢。 如果我筛选一个条件,最多需要两分钟才能显示结果。 由于我每天都使用这张表,所以非常耗时而且效率不高。 所以我认为用vba创build一些东西可能会使它更快。 我的想法是插入公式,让它计算,然后粘贴所有的值。 这应该让我更快地处理文件。 但是,由于我的方法也花费了很多时间,所以直到现在还不是完美的解决scheme。 你们能帮我吗? 我很高兴可以帮助加快工作stream程的任何其他方法! 提前致谢! 最好, 拉蒙

excel快速访问一个二维数组避免循环?

我在工作簿中有很多工作表,我必须访问时间。 因此,我将它们转换为数组,并使用数组数据; 快多了。 假设一个数组 dim myArray(1 to 1000, 1 to 2) 如果根据第1列在第2列中查找值,则直接使用循环 for i=1 to 1000 if myArray(i,1)="XXX" then myValue=myArray(i,2) next i 因为我做了数百次,我不知道是否有像二维数组的查找函数或类似的东西: myvalue=function(myarray(1)="XXX",myarray(2)) 谢谢 何塞

Excel VBA – 随着数组逐渐减速进入Word表格

我用Excel数据加载了一个数组(n = 250),并通过dynamic添加行来加载Word表格。 与10项列表框选定值进行比较并与另一个小型参考arrays(n = 3)进行比较。 词表的人口开始在108 /分钟,然后68 /分钟,然后下降到14 /分钟。 我不保存Word文件,直到Word表完成填充。 LOGIC:我只是循环遍历数组,然后遍历Listbox的Listcount值。 如果select了列表框项目,则查看数组值是否与第二个数组中的已分析条目相匹配。 我知道,一般来说,IF语句很慢,“已处理”logging的最坏情况数是250 * 10 * 3 = 7500。 除列表框10项外的所有数据都在数组中,因此在内存中。 我想删除列表框导航,但它是如此之小,我不相信这是一个潜在的解决scheme。 我可能只是将列表框数据存储在另一个数组中,并通过其中的3个For循环。 任何想法想到为什么我的Word row.add人口率下降? TIA,悬崖

从C#插入多个logging到Excel电子表格时,OLEDB性能下降

我正在使用OLEDB连接(Microsoft.ACE.OLEDB.12)从C#数据表中读取logging,并将logging放入Excel电子表格中。 我正在我的数据表中的每个logging循环,并build立OLEDBCommand.CommandText使用“插入到表名称值(”等我不得不适当格式化的值,使string/字符/整数/小数插入正确。所有的工作正常,我的电子表格创build,但是当有大量的logging插入(例如500,000加),然后performance是非常慢,它需要永远。是否有一个更快的方式做到这一点,而不是阅读一个logging从我的C#数据表中一次,确保SQL语句具有正确的数据types的语法,并一次插入一个? 任何帮助赞赏 谢谢

C#导出到Excel性能问题的形状

我在程序中添加和处理形状时遇到了一些性能问题。 我必须添加1000 +形状,并需要〜18 SEK创build在Excel中 – 这是不能接受的。 下面你会发现代码,并使生活更轻松我已经在这里放置了一个虚拟控制台应用程序,以便于testing。 请帮忙 :) 码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Excel = Microsoft.Office.Interop.Excel; using System.Diagnostics; using Microsoft.Office.Core; namespace DummyPreformanceTestProject { class Program { static void Main(string[] args) { //Create Excel application Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); if (xlApp == null) { return; } //Handle Culture System.Globalization.CultureInfo […]

ADODB.Connection与Excel访问数据库性能改进

我们创build了一个访问数据库,一个开发者创build了一个excel的函数来访问这个数据库中的数据。 连接通过ADDB.Connection完成。 该公式返回1个数字,它是Access数据库中的一些卷的总和,并考虑了一些参数。 当我们在一个单元格中运行公式时,它的工作原理是完美的,但是由于我们的报告包含多个具有此公式的单元格(大约160个单元格)。 报告的运行速度非常慢。 我们的Access专家之一检查数据库,他没有看到它的方式有任何的错误。 有人会有一个想法如何sorting呢? 我们应该在Excel中打勾来让它工作正常吗? 我们今天在MS Excel和Access 2003上工作(我知道我们已经过时了),但我有机会升级到Excel和Access 2007(这是一个进步;-)),它会有帮助吗? 这是我们在Excel中的vba代码的细节 'The function is called GetMarketData Function GetMarketData(Optional ProductLine As String, Optional country As String, Optional CountryGroup As String, Optional Market As String, Optional startMonth As Long, Optional endMonth As Long, Optional Brand As String, Optional Model As String, Optional Segment As String, […]

我怎样才能让我的代码更快运行? 将单元格从一个表格复制到另一个

我已经创build了这个代码,它将从Sheet1中复制所有值 – 从A2单元格开始到Sheet2中列1的第一个空行。 如果需要复制更多的单元格,则会运行很长时间。 有没有可能让它跑得更快? 谢谢 Sub CopyCells() Dim CopyRow As Long CopyRow = Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row 'find last first empty cell in destination sheet 'Sheets("Sheet1").Range("A2").Copy Destination:=Sheets("Sheet2").Range("A" & CopyRow + 1) Call turn_on_off(False) For I = 2 To Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row Sheets("Sheet1").Range("A" & I).Copy Destination:=Sheets("Sheet2").Range("A" & CopyRow + I – 1) Next I Call turn_on_off(True) End Sub […]

在SQL中添加DISTINCT子句返回错误的值

一点背景:我正在为有大量用户在Excel中运行报告的组织工作。 通常他们需要将两组数据相互比较的macros。 我的大部分工作涉及调整特定的更改报告macros。 不漂亮,但它支付账单。 今天我有一个想法,将Excel表格拉到ADOBE对象的VBA中,然后对该对象运行SQL。 一切似乎都奏效了,但是我却遇到了奇怪的行为。 这将返回table1中a.Name不在table2中的所有名称。 它工作正常,但一些名称出现了多次。 SELECT a.Name FROM [Table1] AS a LEFT JOIN [Table2] AS b ON a.Name = b.Name WHERE b.Name IS NULL 添加一个DISTNCT子句: SELECT DISTINCT a.Name FROM [Table1] AS a LEFT JOIN [Table2] AS b ON a.Name = b.Name WHERE b.Name IS NULL 完全改变出现的名字。 显示的是DISTINCT,但出现在两个表中。 我尝试将它作为一个GROUP BY重新字句,以取代不同的值,并收到相同的结果。 我与当地的古鲁检查,没有得到任何地方。 下一步是在这里安装一个真正的数据库来运行一些testing。 我很困惑。