通过Excel计算运行多个值

时间:2019-04-25 18:47:58

标签: excel vba

我们团队的另一位成员构建了精心设计的电子表格,该电子表格可以计算出我们需要的特定值。但是,当前设置如下:

  • 更改单元格A1,A2,A3中的值。
  • 发生了一系列相互依赖的计算,填充了数百个单元格。那一百个单元格,然后通过另一个公式合并回到我需要的值。
  • 有用的输出出现在单元格D1中

我的任务是生成一系列假设。如果A1 = 4,A2 = 4.7,A3 = 0.2,那么D1是什么?

在记录输出时,对于A1,A2和A3的10k +其他有效组合重复该步骤。

我的本​​能只是将其视为编程语言中的函数,然后使其变为接受输入并吐出输出的函数……但是我不确定如何做到这一点。如何做到这一点的任何指导?同事运行的功能非常复杂,因此要像在SUM之类中所做的那样,要在“拖放”范围内跨多行或多列复制该逻辑并不容易。

1 个答案:

答案 0 :(得分:1)

多亏了迈克尔·墨菲(Michael Murphy)的评论,这些评论给了我一些东西可供搜索。我将其留在此处,以便将来搜索的人可以找到它。

Sub test()
'
' test Macro
'
    Dim a_array As Variant
    Dim b_array As Variant
    Dim c_array As Variant
    Dim rw_cnt As Integer

    rw_cnt = 2
    ' This selects each of the things to combo
    a_array = ThisWorkbook.Sheets(2).Range("A2:A5")
    b_array = ThisWorkbook.Sheets(2).Range("B2:B5")
    c_array = ThisWorkbook.Sheets(2).Range("C2:C5")

    For Each a_el In a_array
        For Each b_el In b_array
            For Each c_el In c_array
                worth = compute_worth(a_el, b_el, c_el)
                ' This writes the output where we can track it
                ThisWorkbook.Sheets(2).Cells(rw_cnt, 6) = a_el
                ThisWorkbook.Sheets(2).Cells(rw_cnt, 7) = b_el
                ThisWorkbook.Sheets(2).Cells(rw_cnt, 8) = c_el
                ThisWorkbook.Sheets(2).Cells(rw_cnt, 9) = worth
                rw_cnt = rw_cnt + 1
            Next a_el
        Next b_el
    Next c_el
End Sub


Function compute_worth(a, b, c)
    ' This puts the value into the original sheet then extracts the output
    ThisWorkbook.Sheets(1).Range("A1") = a
    ThisWorkbook.Sheets(1).Range("A2") = b
    ThisWorkbook.Sheets(1).Range("A3") = c
    worth = ThisWorkbook.Sheets(1).Range("D1").Value
    compute_worth = worth
End Function