这是我创build的用户表单。 然后,它被用作input平台。有一些不同的表,例如2016年,2017年….这个保存button的逻辑是search年(date),用户input和位置正确的工作表。 然后,它会find该工作表的最后一行。 例如,最后一行是行1000.用户窗体的第一行将保存在行1001上。用户窗体的第二行将保存在行1002 …. 题 但是,当我在真正的excel文件中testing时,保存速度太慢。真正的excel文件很大(每个工作表中大约有1XXXX行)。它使用8秒为userform保存一行,13秒保存两行。 显然,节约的速度是不可接受的。 任何方法都可以改进呢? If ComboBox3.Value = "2016" Then Worksheets("2016").Activate j = WorksheetFunction.CountA(Worksheets("2016").Range("A:A")) + 1 End If If ComboBox3.Value = "2017" Then Worksheets("2017").Activate j = WorksheetFunction.CountA(Worksheets("2017").Range("A:A")) + 1 End If '1st If ComboBox4.Value = "" Then Else Cells(j, 1) = ComboBox434.Value Cells(j, 5) = ComboBox1.Value Cells(j, 4) = ComboBox2.Value Cells(j, […]
我有一个(增长的)40000行和20列的数据表。 我需要将这些数据(按月份和星期)分组,并在行/列之间执行一些简单的操作(+&/)。 我必须能够改变有问题的时期和一些特定的行来总结。 我知道如何macros/枢轴/公式,但我还没有开始,我想重新计算过程是最快的可能,而不是我点击一个button,然后一切冻结了几分钟。 你有什么想法什么可能是最有效的解决scheme? 谢谢
我试图编写一个代码,它将查看从第4行到R2000的B2中的单元格,如果内容为零,则隐藏该行。 我的问题是,代码运行速度非常慢,经常停止响应。 如果你能帮助我,那是什么导致它运行缓慢,我可以自己修复它,但我不知道什么是更有效的方法。 正如你所看到的,我已经尝试过closures屏幕更新,但没有多大帮助。 代码如下 Sub HideRows() BeginRow = 4 EndRow = 2059 ChkCol = 2 Application.ScreenUpdating = False Rows("1:2059").EntireRow.Hidden = False For RowCnt = BeginRow To EndRow If Cells(RowCnt, ChkCol).Value = 0 Then Cells(RowCnt, ChkCol).EntireRow.Hidden = True End If Next RowCnt Application.ScreenUpdating = True End Sub
我的脚本读取Excel表格并获取一个范围,范围包含不同媒体文件的名称,我将其添加到一个大的列表中。 我使用列表中的名称来search目录,如果它们存在于给定的文件目录中,那么它们将被添加到“existsAlready”列表中。 如果它们不存在于copyFiles目录中的给定文件位置BUT中,那么它们被复制到给定的目录并被添加到“existsAdded”列表中。 如果在任一目录中都找不到,则将这些文件添加到“existsNegative”列表中。 所有3个列表打印到单独的列表框。 这一切工作,但是我发现它运行有点慢: 1)虽然Excel应用程序不可见,但它仍然启动一秒钟,然后closures,减慢进程。 2)如果文件夹中存在所有文件或者文件需要复制,应用程序运行良好/快速,但是如果在目录中找不到许多文件并且无法复制,则运行速度非常慢,我怎样才能做到这一点更快? 我想这与它必须要search整个目录,而不是find任何东西。 Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook excelWorkbook = excelApp.Workbooks.Open("@Excelfile"); Excel.Worksheet xlWorkSheet = (Excel.Worksheet)excelWorkbook.Sheets[1]; excelApp.Visible = false; excelApp.ScreenUpdating = false; excelApp.DisplayAlerts = false; Excel.Range range = xlWorkSheet.get_Range(B1:G1); List<string> listFBX = new List<string>(); foreach (Excel.Range s in range) { listFiles.Add(s.Text()); } List<string> existsAlready = new List<string>(); List<string> existsAdded […]
当我点击button来运行我的代码,我得到了蓝色的加载循环,如果我等待大约150s我的代码将运行,有时进入“无响应”模式,并且一切都输出正确。 但是,如果我点击button来启动我的代码,然后等待10秒,然后单击窗口,强制进入“无响应”模式,我的代码将在大约30秒内完成所有正确的输出。 Option Explicit Option Base 1 Private Sub CommandButton1_Click() Dim loadtypemax As Single, column As Single, row As Single Dim loadtype As String, number As String Dim loadcombosmax As Single Application.ScreenUpdating = False Application.Calculation = xlCalculationManual loadtypemax = ((Cells(Rows.count, "L").End(xlUp).row)) loadcombosmax = ((Cells(Rows.count, "E").End(xlUp).row)) column = 6 For row = 2 To loadcombosmax If […]
我有两个工作簿包含相同的macros。 在一个工作簿中,macros运行速度超快,不到一秒钟。 另一个需要将近30秒的时间。 我正在使用Excel 2003.分页符在两个工作簿中都closures。 我不知道什么可能导致一个比另一个慢。 有任何想法吗? Sub viewFirst() Dim dataSheet As Worksheet, inputSheet As Worksheet, projectID As Long Dim projectRow As Long, lLastRec As Long, inputLastRow As Long, dataLastRow As Long, x As Long, sh As Shape Worksheets("Input").Select ActiveSheet.Protect "", UserInterfaceOnly:=True Range("a1").Select ActiveSheet.Pictures.Insert ("working.jpg") Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Application.EnableEvents = False Set […]
使用Excel,我试图计算从出发date和时间字段以及距离字段计算的预计到达时间(ETA)。 速度是艰难的部分,因为它取决于一天中的时间而变化。 现在,让我们假设根据一天中的小时只有两种速度可能性。 在上午8点到晚上7点之间,速度等于16.晚上7点到早上8点,速度等于8.实际的数字可能会大不相同,所以不要假设夜间速度是半速。 我想在一个date和时间下降,并有公式计算ETA利用的距离和适当的速度根据一天中的时间。 例如,从1月1日下午6点开始的500英里行程将导致1Hr @ 16,13Hr @ 8,11Hr @ 16,13Hr @ 8,6.25Hr @ 16。 1月3日下午2点15分到达,共计44.25小时 date加44.25小时是愚蠢的简单,但是,计算在一定的时间内开始时间和速度可能的时间已经躲过了我。 哇,你付出了很多努力,我真的很感谢这个努力。 但是,它并没有做我想做的事情。 我试图把起始date和时间,以及到目的地的距离作为input。 然后它必须使用白天变化的速度来计算ETA。 平均值将不会完成。 每次旅行都有一个精确的ETA,根据开始时间的不同,固定距离的旅行时间也会有很大差异。
我实际上有一些工作代码,虽然我有大量的数据和编写代码的方式,但运行需要一个多小时,而且我仍然需要添加相当多的代码才能真正分析数据。 我正在使用一个双循环,并且在我添加screenupdating = false之前,它似乎嵌套在内部的循环是什么花了这么长时间。 这是我有: Sub LReview() Dim SecX As Workbook, LipR As Workbook Dim ws As Worksheet, Xws As Worksheet, Fsheet As Worksheet Dim i As Long, XwsRows As Long Path = ThisWorkbook.Path & "\" Set LipR = ThisWorkbook Set SecX = Application.Workbooks.Open(Path & "SecurityXtract_Mnthly.csv") Windows("SecurityXtract_Mnthly.CSV").Activate Set Xws = Sheets("SecurityXtract_Mnthly") With Xws XwsRows = […]
所以我现在有这样的代码:我基本上是要检查,如果一个工作表的列B可以在另一个工作表的列C中find,那么我会在其他工作表的行中findB值, H列值并将其复制到当前工作表的AI列中。 B列中的每一行都将重复此过程。 我遇到的问题是,它的运行速度太慢,即使closuresscreenupdates等。这是有道理的,因为有超过50000值,它必须循环与所有值查找。 我真的很感激,如果有人可以看看它,并提出可能的方法,我可以加快这一进程。 谢谢。 Sub Calculation() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Application.DisplayStatusBar = False Application.EnableEvents = False ActiveSheet.DisplayPageBreaks = False Dim i As Long, LastRow As Long LastRow = Range("A" & Rows.Count).End(xlUp).Row For i = 5 To LastRow Set wb1 = ThisWorkbook Dim anyRow As Long For anyRow = 4 To 500 […]
我试图运行65,000个单元格的索引/匹配查询,作为Excel中商店库存计算的一部分。 我们的数据库中有65,000个独特的项目。 无论如何,这里是公式我粘贴一个单列65000行。 显然,它运行速度极慢。 我可以改变什么来加快速度? =INDEX(SAQTY!H:H, MATCH(A2&"GRA", SAQTY!C:C&SAQTY!F:F, 0)) 在附注中,索引/匹配是跨多张纸进行交叉检查,这与性能有什么关系?