arrays - 可以在 VBA 中的数组元素(而不是 Excel 工作表范围)上运行目标搜索吗?

标签 arrays vba

可以在 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/

相关文章:

excel - 范围内每个单元格的边框

Java bean 机器

excel - 如何通过名称引用范围中的列

excel - 导入单元格的值以用于数组中的文本到列分隔时,出现类型不匹配错误

arrays - 使用 VBA 获取在 VBA 中使用的唯一值?

vba - Excel VBA - 用于填充不添加重复项的组合框的循环

c++ - 为什么 C++ 函数可以创建可变长度的数组?

arrays - 最快算法的大 O 打印长度为 n 的未排序数组和长度为 m 的排序数组之间的公共(public)元素

javascript - 区分数组中修改的对象或聚合

c++ - 如何按特定模式对字符串数组进行排序