所以我有一个看起来像这样的图表。假设左上角的值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:要问得更清楚,因为那是很多单词:程序看起来会检测到总和行中的最小值,并返回该值的单元格地址?
行的长度是未知的,并且变化很大,但是给出了列的长度。它们确实根据问题而改变,但它们总是会被人知道。所以我将始终知道列中有多少行,但我不知道连续多少列。
这是我一生中写过的最令人困惑的事情,但我希望我已经足够清楚地解释了这一点。
顺便说一句,你们真的很棒。到目前为止,我已经完成了这个项目,这都是因为你有多大帮助。老实说,我觉得我还是会和你们一起陷入困境!你愿意容忍新手不停的问题。
答案 0 :(得分: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
答案 1 :(得分:7)
使用您的示例,以下公式返回第1行中的单元格地址,第5行中的值最低:
=ADDRESS(1,MATCH(MIN(A5:H5),A5:H5,0))
如果您想要该单元格的值,请使用INDIRECT
。它将地址作为字符串。
=INDIRECT(ADDRESS(1,MATCH(MIN(A5:H5),A5:H5,0)))
答案 2 :(得分: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