【问题标题】:Possible to Run Goal Seek on array elements within VBA, instead of an Excel sheet range?可以在 VBA 中的数组元素上运行 Goal Seek,而不是 Excel 工作表范围?
【发布时间】:2018-01-06 01:35:47
【问题描述】:

是否可以在 VBA 中的数组元素上运行 Goal Seek,而不是 Excel 工作表范围?

我有一个数组,它从 Excel 输入表中获取初始值,进行许多计算,并将值打印回 Excel 表上的报告区域;输出大约是 200 行 x 28 列的计算值。我曾经在每个单元格中使用公式来执行此操作,但它非常非常慢。我转换为一个全 vba Sub,它可以快速进行计算并将完成的值粘贴到 excel 的报告范围中。

问题是我还需要在各种单元格上运行 Goal Seek,而 Excel 无法在只有值的单元格上执行此操作,它需要一个带有公式的单元格。 有了我的花哨、高效的数组,我再也找不到目标了!!!!!

有没有办法通过测试实际在 excel 上的输入值而不是在 excel 工作表范围上而是在数组成员上运行某些版本的 Goal Seek,例如在 MyArray(107,23) 上工作表,例如 Range("B2")?这段代码会是什么样子?

【问题讨论】:

    标签: arrays vba


    【解决方案1】:

    第一个子例程使用 Range,而第二个子例程使用 Array。这里的目标是 0。

    第一个子程序:

     Sub GoalSeekWithRange()
    
        Dim i As Long
        For i = 1 To 10
           Range("C" & i).GoalSeek Goal:=0, ChangingCell:=Range("A" & i)
         Next
    
     End Sub
    

    第二个子程序:

    Sub GoalSeekWithArray()
    
    Dim arGoal As Variant
    Dim arChanging As Variant
    
    With ThisWorkbook.Sheets("MySheet")
        Set arGoal = .Range("C1:C10")
        Set arChanging = .Range("A1:A10")
    End With
    
    
    Dim i As Long
    For i = 1 To 10
        arGoal(i, 1).GoalSeek Goal:=0, ChangingCell:=arChanging(i, 1)
    Next
    
    End Sub
    

    为避免头疼,请记住范围数组具有二维 可能,您必须调整这些代码以满足您的特定需求

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多