首页 > 解决方案 > 通过excel计算运行多个值

问题描述

我团队的另一位成员构建了精心制作的电子表格,可以计算出我们需要的某个值。但是,它目前是这样设置的:

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

在记录输出时,对 A1、A2 和 A3 的 10k+ 个其他有效组合重复此操作。

我的直觉只是将其视为编程语言中的函数,并使其成为接受输入并输出输出的函数……但是我不确定该怎么做。关于如何做到这一点的任何指导?同事运行的功能非常复杂,因此要在多行或多列之间复制该逻辑并不容易,就像我对 SUM 或其他东西所做的那样“拖放”。

标签: excelvba

解决方案


感谢 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

推荐阅读