4

所以我有一个看起来像这样的图表。假设左上角的值 1 在单元格 A1 中:

x=    1    2    3    4    5    6    7    8

      4    3    2    1    2    3    4    5

      9    8    7    6    7    8    9    10

      8    7    6    5    4    3    2    1

Sum= 21   18   15   12   13   14   15    16

有从 1 到 8 的 x 值,以及使用它的方程或低于它的东西产生的三列值。总和是低于其对应 x 值的三个值的总和。

我一直试图找出将通过总和行,找到最小值,然后将其对应的 x 值分配给变量的东西。我还需要将该 x 值左侧和右侧的值分配给其他变量。

对于这个特定的图表,12 是最小的总和,所以我会分配variable1 = 4,因为那是该列对应的 x 值。然后我的第二个变量(称为lowerbound)将等于 3,因为它位于 x = 4 的左侧,而我的第三个变量(称为upperbound)将等于 5,因为它位于 x = 4 的右侧。

如果我可以获得与最小总和相对应的 x 值返回的单元格地址,那么我可以将其分配给一个变量,然后简单地从该单元格偏移以分配其他变量。即使我可以编写一个程序来返回最小和值的单元格,我也可以偏移到 x 行,然后从那里开始。

我该怎么做这样的事情?

TL:DR:要更清楚地问,因为这有很多词:检测求和行中的最小值并返回该值的单元格地址的程序是什么样的?

行的长度是未知的,并且变化很大,但列的长度是给定的。它们确实会根据问题而改变,但它们将永远为人所知。所以我总是会知道一列有多少行,但我不会知道一行有多少列。

这是我一生中写过的最令人困惑的措辞,但我希望我已经解释得足够好,以使一些意义。

顺便说一句,你们真的很了不起。到目前为止,我已经在这个程序上取得了进展,这完全是因为你的帮助。老实说,我认为我仍然会在一开始就和你们在一起!你愿意容忍新手不断的提问。

4

3 回答 3

10

我假设总和在A4:H4. 请根据需要更改

您可以使用类似的公式

=CELL("address",INDEX(A4:H4,MATCH(MIN(A4:H4),A4:H4,0)))

如果你想使用 VBA,那么你可以使用这个

Sub Sample()
    MsgBox Application.Evaluate("=CELL(""address"",INDEX(A4:H4,MATCH(MIN(A4:H4),A4:H4,0)))")
End Sub
于 2012-07-24T20:32:02.757 回答
7

使用您的示例,以下公式返回第 1 行中第 5 行中的值最低的单元格地址:

=ADDRESS(1,MATCH(MIN(A5:H5),A5:H5,0))

如果您想要该单元格的值,请使用INDIRECT. 它将地址作为字符串。

=INDIRECT(ADDRESS(1,MATCH(MIN(A5:H5),A5:H5,0)))

于 2012-07-24T20:36:42.897 回答
2

如果通过对数组求和来对列求和。这是VBA版本:

For j = 1 To 8
     For i = 1 To 3
          sum(j) = sum(j) + Cells(i + 1, j + 1)
    Next i
    Cells(5, j + 1) = sum(j)
Next j
于 2012-07-24T20:48:38.857 回答