首页 > 解决方案 > VBA循环将100个单独的行一次复制到一行以运行求解器

问题描述

我正在尝试编写一个宏,它将从 100 行(每行 9 个单元格)的列表中复制到一行中,然后在其上运行求解器,然后将值复制到工作簿中的另一个位置。

下面的代码适用于一行,但我在网上找到的所有内容似乎都是用于粘贴连续行,而不是复制它们并将它们粘贴到要操作的同一行中。

任何帮助将不胜感激。

谢谢

Sub SolverTrial()

    Range("B30:J30").Copy Range("O9")
    
    SolverReset
    SolverOk SetCell:="$AC$2", MaxMinVal:=2, ValueOf:=0, ByChange:="$AA$2:$AB$2", Engine:=1, EngineDesc:="GRG Nonlinear"
    SolverOptions Assumenonneg:=False
    SolverSolve (True)

    Range("AA2:AC2").Copy
    Range("N30").PasteSpecial Paste:=xlPasteValues
    
    
End Sub

标签: excelvba

解决方案


这应该有效:

Sub SolverTrial()

    Dim rw As Range, ws As Worksheet
    
    Set ws = ActiveSheet
    For Each rw In ws.Range("B30:J129").Rows
    
        rw.Copy ws.Range("O9")
    
        SolverReset
        SolverOk SetCell:="$AC$2", MaxMinVal:=2, ValueOf:=0, _
                 ByChange:="$AA$2:$AB$2", Engine:=1, _
                 EngineDesc:="GRG Nonlinear"
        SolverOptions Assumenonneg:=False
        SolverSolve True

        'ws.Range("AA2:AC2").Copy rw.EntireRow.Columns("N")
        rw.EntireRow.Columns("N").Resize(1, 3).value = ws.Range("AA2:AC2").Value
    Next rw
   
End Sub

推荐阅读