Tag: 优化

自动计算由VBAmacrosclosures

这更像是一个好奇而不是紧急:我有下面的代码,在一个更大的macros中重复几次。 我发现,如果我指定search方法 (通过包含“引擎:= ..”),macros将closures自动计算 (在公式>计算选项中find )并将其切换到手动。 即使下面的优化是在一个循环,因为它优化到不同的值,这基本上固定在一个点的optimsation。 由于这个问题,彼此链接的单元格不会更新,这使得优化无用。 我可以运行macros而不指定search方法,但理想情况下,我希望能够select它。 有任何想法吗? SolverReset SolverOK SetCell:="$K$21", MaxMinVal:=1, ValueOf:="0", ByChange:="$D$41:$H$41", Engine:=2 SolverAdd CellRef:="$K$25", Relation:=2, FormulaText:="1" SolverAdd CellRef:="$D$41:$H$41", Relation:=3, FormulaText:="0" SolverAdd CellRef:="$D$41:$H$41", Relation:=3, FormulaText:="$D$12:$H$12" SolverAdd CellRef:="$D$41:$H$41", Relation:=1, FormulaText:="$D$13:$H$13" SolverSolve UserFinish:=True SolverFinish KeepFinal:=1 Range("K23").Value = Range("K21").Value

从数组中填充listbox.list

x= range("A1:d100000").value For i = 1 To UBound(x, 1) Sk = x(i, 1) & "·" & x(i, 2) & "·" & x(i, 3) & "·" & x(i, 4) If InStr(x(i,4), "text") Then s = s & "~" & Sk Else End If Next i ListBox1.List = Split(Mid$(s, 2), "~") 代码把匹配结果放到(ActiveX)listbox.list 1列中 如何根据SK列数将匹配结果放到listbox.list中,如此 if x(i, 1) […]

如何在Excel VBA中优化大表的双重查询

试图优化表查找。 通常情况下,对于大小为5000的条目,由于逻辑不是最优的,每次需要大约7分钟的时间取出表格元素。 有一个更好的方法吗? 示例表(3列) TaskID TaskSubID Status 34567 1.2 Done 34567 1.3 Open 34568 1.5 Open 34568 1.3 Finished 34569 1.2 Open 34569 1.4 Open 任务是select一个任务ID,并检查是否有任何人的TaskSubID是状态完成或完成。 这基本上告诉该TaskID中的任何剩余的子任务是简单的努力。 VBA脚本应该添加一个提供努力状态的第四列。 这是使用以下逻辑实现的,并且运行良好 Public Sub Effort_Check() Dim LastCol, Lastrow, i, isFlag As Integer Sheets("Sheet1-sample").Activate LastCol = Sheets("Sheet1-sample").Range("A1").End(xlToRight).Column Lastrow = Sheets("Sheet1-sample").Range("A1").End(xlDown).Row For i = 2 To Lastrow TaskID = Sheets("Sheet1-sample").Range("A" […]

可变行长求解器优化

可以说我有四列(U,W,X,Y)。 (i)= X(i),Y(i)= 0,因为Y = XY和U(i)是可变的。 您可以更改“U”列中的值,并将W = X,并且所有值都必须为正值W,X,Y,U。 这是我的代码,它不工作。 lRo = Sheets(“Rohr-Bogen”)。Cells(Rows.Count,2).End(xlUp).Row SolverReset solverprecision = 0.0001 SolverOk SetCell:="$Y$12:$Y$" & lRo, MaxMinVal:=3, ValueOf:="0", ByChange:="$U12$:$U$" & lRo SolverAdd cellRef:="$W$12:$W$" & lRo, relation:=2, formulaText:="$X$12:$X$" & lRo SolverAdd cellRef:="$X$12:$X$" & lRo, relation:=3, formulaText:=0 SolverOptions AssumeNonNeg:=True SolverSolve UserFinish:=True SolverFinish KeepFinal:=1 If Range("W10").Value > 0.0001 Then Call solve End If […]

C#如何改善循环填充Excel单元格

我主要是从一个文本文件parsing大量的文本,然后将其填充到一个Excel中。 //populate into worksheet for (int x = 0; x < rawLine.Length; x++) { string[] tempLine = rawLine[x].Split(';'); for (int y = 0; y < tempLine.Length; y++) { DateTime hour = Convert.ToDateTime(tempLine[6]); xlWorkSheet.Cells[y + 2, 1] = tempLine[0]; xlWorkSheet.Cells[y + 2, 2] = tempLine[1]; xlWorkSheet.Cells[y + 2, 3] = tempLine[2]; xlWorkSheet.Cells[y + 2, 4] = […]

如何重构比较循环在我的Excel VBA代码的速度?

我是Excel VBA的新手,没有太多的经验。 我有两个数据的工作表,我比较,然后如果一个值匹配我复制并粘贴到第二个工作表。 我使用for循环来比较每一行,并想知道是否有更好的方法来做到这一点? 我目前正在使用蛮力,并希望有一种方法,以便我的程序不会运行很长时间。 (我在不同的页上重复这段代码13次)。 基本上这个代码是在符合某些条件的情况下合并信息的。 以下是我的代码。 Sub consolidate(z) Sheets(z).Range("B1:AXH100").Delete '''deletes former values''' For i = 1 To 30 For x = 1 To 500 If IsEmpty(Sheets("Sheet1").Cells(x, 13)) Then 'if cell value is empty skip it' a = 1 Else: If Sheets("Sheet1").Cells(x, 18) = Sheets(z).Cells(1, 1) Then 'check to see if value is same' […]

VBA文本循环优化 – 从文本中提取电子邮件

我需要一个小项目的帮助。 我刚开始使用VBA,我想我可以使用学习来优化我的代码。 单元格A2包含许多用“,”分隔的电子邮件地址的文本。 我设法提取所有的电子邮件地址,但我认为我使用了太多的单元格,而且我想知道是否可以帮助我减less它,并使用定义的variables。 工作代码的屏幕截图 Sub fpor() Dim Text As String Dim full As Integer Dim i As Integer Dim e As Integer Dim part As String Dim part_len As Integer Dim part_a As Integer Dim Text_2 As String x = 5 ActiveCell = Range("A2") Text = Range("A2") full = Len(Text) 'full = InStrRev(Text, ",") […]

如何解决这样的优化任务?

我正在计划参考解决scheme的function,但我不确定它是否适合我手中的问题。 让我尽可能清楚而简洁地解释这种情况: 我打算去市场买(比如在电子表格中的100)水果篮。 我有3袋,我想根据具体细分75%在袋1,20%分成袋2,其余5%分成袋3 我所关心的关键问题是如何分配到这3袋,这应该符合以下3个条件: 每个袋子的碗的平均价格应该是完全一样的。 即在电子表格示例中,总价格为104.55。 所以三桶水桶的平均价格应该接近这个数字,三个水桶的平均价格也是一样的 每桶的碗数满足我的目标分割(即75/20/5分割) 每个袋子里只有整个碗的数量,任何一个0.5都会四舍五入到1 最终的产量应该告诉我每个袋子里应该包括每个碗里有多less碗。 (例如105的Bag1:3,110的1,109的10等等) 我在下面包含了一个如何启动上述想法的截图。 任何帮助将不胜感激。 编辑:温柔的凹凸,因为我仍然想解决这个任务。

Excel求解器,最大化两个值的方法?

我是微软excels解算器的用户,我很确定这是不可能解决,以最大限度地发挥两个值。 我想知道是否有人可能有另一种聪明的方式来做到这一点。 基本上我有一列数字在1到30之间,我需要查看一下,并根据其他约束从9到10的值(200)。 我也想不只是最大化这个价值,而且也是一个概率值(范围从0到1),我也想最大化。 将它们加起来将不会起作用,因为这会严重低估概率值,乘法可能会通过高估概率来做相反的处理。 任何处理这个问题的策略将不胜感激。

VBA代码优化

我有VBA的代码和大量的行它使用太多的内存 – 它可能需要几GB,并暗恋。 代码数量请求服务器为XLMfind一些数据,并写入比去另一个数字。 如果有超过500行它粉碎。 你能帮我优化代码来处理大约10000行吗? 感谢您的帮助Marek Sub ares() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False 'potlačí obnovování obrazovky Application.DisplayAlerts = False 'potlačí varovné hlášky Application.DisplayStatusBar = False Application.EnableEvents = False ActiveSheet.DisplayPageBreaks = False Dim i As Integer Dim row As Integer Dim column As Integer For i = 2 To 15000 Sheets.Add(After:=Sheets(Sheets.Count)).Name = "ares" Sheets("ares").Activate […]