将R1C1类型公式替换为Excel-VBA中的命名范围公式吗?

问题描述 投票:0回答:2

我有一个有效的VBA代码(在Sheet2上,该代码使用公共函数使用Sheet1列B上的数据进行计算。

在我使用FillDown函数获得其余行的类似计算之后。

Range("B2").FormulaR1C1 = "=PERSONAL.XLSB!Scoring(Sheet1!RC2)"
Range("B2:B2", "A" & Cells(Rows.Count, 1).End(xlUp).Row).FillDown   

公共功能检查单元格,并根据找到的值分配分数。

Public Function Scoring(str As String)

Dim check As Integer

check_str = 0

If str = "US" Then check_str = 1
If check_str = 1 Then Scoring = "1"
If check_str = 0 Then Scoring = "0"

End Function

我的目标是使用命名范围而不是R1C1公式样式以避免更改Sheet1列顺序的任何麻烦。我想可以遍历命名范围,但是有没有更简单的方法?

将是解决该问题的简单方法的代码(仅将R1C1类型替换为对命名范围内列的引用,但不起作用:

Range("B2").Formula = "=PERSONAL.XLSB!Scoring(Sheet1!Range("myRange").Columns(1))"
Range("B2:B2", "A" & Cells(Rows.Count, 1).End(xlUp).Row).FillDown       
excel vba named-ranges
2个回答
3
投票

如果命名范围具有工作簿范围,则公式为:

"=PERSONAL.XLSB!Function(INDEX(myRange,0,1))"

0
投票

此代码可用于FillDown:

© www.soinside.com 2019 - 2024. All rights reserved.