在Excel VBA中,如何更改作为用户input传递给函数的单元格范围
我有两列数据,我YVals
从A1:A65
和B1:B65
调用了XVals
和YVals
。 我想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:A65
成A50: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")
记下OERN和OEG0行。
我补充说,要确保没有find匹配的时候你的代码不会出错。
虽然,你提到总会有2场比赛,但可能会有错误检查。
你可以删除它,否则你认为它已经是矫枉过正。 HTH。
=INDIRECT("A"&MatchVal&":A65")
INDIRECT()
函数允许您提供文本或提供文本的dynamic值,并将它们评估为单元ID。