在Excel VBA中,如何更改作为用户input传递给函数的单元格范围

我有两列数据,我YValsA1:A65B1:B65调用了XValsYVals 。 我想find20%的最大值在我使用min函数的Xvals ,然后插值后,find相应的Xvals值。

问题是因为YVals是一个traingular函数,所以会有两个这样的20%对应的XVals值。 我只想select一个,所以我认为最好的办法是重新定义范围从A1:A65"A"&MatchVal&":A65"其中MatchVal = WorksheetFunction.Match(WorksheetFunction.Max(YVals), YVals, 1) 。 但使用简单的&符号,我不能操纵范围地址。

如果MatchVal是50,请给我一个方法来把这个范围从A1:A65A50:A65 。在这个操作之后,我可以插入并得到我的数值,它位于向下的斜坡上。

声明范围types的variables并使用Set 。 就像是:

 Dim rng As Range '~~> this will hold your new range On Error Resume Next MatchVal = WorksheetFunction.Match(WorksheetFunction.Max(YVals), YVals, 1) If Err.Number <> 0 Then MsgBox "No match found.": Exit Sub On Error Goto 0 Set rng = Range("A" & MatchVal & ":A65") 

记下OERNOEG0行。
我补充说,要确保没有find匹配的时候你的代码不会出错。
虽然,你提到总会有2场比赛,但可能会有错误检查。
你可以删除它,否则你认为它已经是矫枉过正。 HTH。

  =INDIRECT("A"&MatchVal&":A65") 

INDIRECT()函数允许您提供文本或提供文本的dynamic值,并将它们评估为单元ID。