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

时间:2014-09-22 21:26:26

标签: excel vba range

我有两列数据,我分别从XValsYVals调用了A1:A65B1:B65。我希望找到YVals中使用min函数的最大值的20%,然后在插值后找到相应的Xvals值。

问题在于,因为YVals是一个traingular函数,所以会有两个这样的20%对应的XVals值。我只想选择一个,所以我认为最好的方法是将范围从A1:A65重新定义为"A"&MatchVal&":A65" MatchVal = WorksheetFunction.Match(WorksheetFunction.Max(YVals), YVals, 1)。但是使用普通的&符号我无法操纵范围地址。

如果A1:A65为50,请建议我将此范围从A50:A65更改为MatchVal。在此操作之后,我可以插入并获取XVals的值它位于下坡。

2 个答案:

答案 0 :(得分:1)

声明范围类型的变量并使用 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 行。
我补充说,以确保在找不到匹配项时代码不会出错 虽然,你提到总会有2场比赛,但是检查可能的错误是值得的 您可以删除它,否则您认为它已经过度杀伤。 HTH。

答案 1 :(得分:0)

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

INDIRECT()功能允许您输入提供文本的文本或动态值,并将其作为单元格ID进行评估。