The*_*Man 4 excel vba excel-vba excel-2010
所以我有一个看起来像这样的图表.假设左上角值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
Run Code Online (Sandbox Code Playgroud)
有1到8的x值,以及使用它下面的等式或其他东西得到的三列值.总和是低于其相应x值的三个值的总和.
我试图找出能够通过总和行找到最小值的东西,然后将它的相应x值分配给变量.我还需要将该x值左侧和右侧的值分配给其他变量.
对于这个特定的图表,12是总和中最小的,所以我会分配variable1 = 4
,因为那是该列的相应x值.然后我的第二个变量(称为lowerbound
3)将等于3,因为它位于x = 4的左侧,而我的第三个变量(称为upperbound
)将等于5,因为它位于x = 4的右侧.
如果我可以获得与最小总和相对应的x值返回的单元格地址,那么我可以将其分配给变量,然后简单地从该单元格偏移以分配其他变量.即使我可以创建一个程序来返回最小和值的单元格,我也可以偏移到x行,然后从那里开始.
我该怎么办呢?
TL:DR:要问得更清楚,因为那是很多单词:程序看起来会检测到总和行中的最小值,并返回该值的单元格地址?
行的长度是未知的,并且变化很大,但是给出了列的长度.它们确实根据问题而改变,但它们总是会被人知道.所以我将始终知道列中有多少行,但我不知道连续多少列.
这是我一生中写过的最令人困惑的事情,但我希望我已经足够清楚地解释了它.
顺便说一句,你们真的很棒.到目前为止,我已经完成了这个项目,这都是因为你有多大帮助.老实说,我觉得我还是会和你们一起陷入困境!你愿意容忍一个新手不停的问题.
Sid*_*out 10
我假设总和在A4:H4
.请根据情况更改
你可以使用像这样的公式
=CELL("address",INDEX(A4:H4,MATCH(MIN(A4:H4),A4:H4,0)))
Run Code Online (Sandbox Code Playgroud)
如果您想使用VBA,那么您可以使用它
Sub Sample()
MsgBox Application.Evaluate("=CELL(""address"",INDEX(A4:H4,MATCH(MIN(A4:H4),A4:H4,0)))")
End Sub
Run Code Online (Sandbox Code Playgroud)
使用您的示例,以下公式返回第1行中的单元格地址,其中第5行中的值最低:
=ADDRESS(1,MATCH(MIN(A5:H5),A5:H5,0))
如果你想要那个细胞的价值,请使用INDIRECT
.它将地址作为字符串.
=INDIRECT(ADDRESS(1,MATCH(MIN(A5:H5),A5:H5,0)))