可以在 VBA 中的数组元素上运行目标搜索,而不是在 Excel 工作表范围内吗?
我有一个数组,它从 Excel 输入表中获取初始值,进行许多计算,并将值打印回 Excel 表上的报告区域;输出大约为 200 行 x 28 列的计算值。我曾经在每个单元格中使用公式来执行此操作,但速度非常非常慢。我转换为全 vba Sub,它可以快速进行计算并将最终值粘贴到 Excel 的报告范围中。
问题是我还需要在各个单元格上运行“Goal Seek”,而 Excel 无法在只有值的单元格上执行此操作,它需要一个带有公式的单元格。 有了我奇特、高效的阵列,我再也无法寻找目标了!!!!
有没有办法通过测试实际在 Excel 上的输入值来运行某些版本的 Goal Seek,而不是在 Excel 工作表范围上运行,而是在数组成员上运行,例如在 MyArray(107,23) 上运行工作表,例如 Range("B2")?该代码会是什么样子?
最佳答案
第一个子例程使用 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
为了避免麻烦,请记住范围数组具有二维 也许,您必须调整这些代码以满足您的特定需求
关于arrays - 可以在 VBA 中的数组元素(而不是 Excel 工作表范围)上运行目标搜索吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42330897/