这更像是一个好奇而不是紧急:我有下面的代码,在一个更大的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
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) […]
试图优化表查找。 通常情况下,对于大小为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 […]
我主要是从一个文本文件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的新手,没有太多的经验。 我有两个数据的工作表,我比较,然后如果一个值匹配我复制并粘贴到第二个工作表。 我使用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,我想我可以使用学习来优化我的代码。 单元格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等等) 我在下面包含了一个如何启动上述想法的截图。 任何帮助将不胜感激。 编辑:温柔的凹凸,因为我仍然想解决这个任务。
我是微软excels解算器的用户,我很确定这是不可能解决,以最大限度地发挥两个值。 我想知道是否有人可能有另一种聪明的方式来做到这一点。 基本上我有一列数字在1到30之间,我需要查看一下,并根据其他约束从9到10的值(200)。 我也想不只是最大化这个价值,而且也是一个概率值(范围从0到1),我也想最大化。 将它们加起来将不会起作用,因为这会严重低估概率值,乘法可能会通过高估概率来做相反的处理。 任何处理这个问题的策略将不胜感激。
我有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 […]