[英]Replace R1C1 type formula to a named range formula in Excel-VBA?
我有一个有效的 VBA 代码(在 Sheet2 上),它使用公共 Function 使用 Sheet1,B 列上的数据进行计算。
在我使用 FillDown function 得到行的 rest 的类似计算之后。
Range("B2").FormulaR1C1 = "=PERSONAL.XLSB!Scoring(Sheet1!RC2)"
Range("B2:B2", "A" & Cells(Rows.Count, 1).End(xlUp).Row).FillDown
公共 Function 检查单元格并根据找到的值分配分数。
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
如果命名范围有工作簿 scope,您的公式将是:
"=PERSONAL.XLSB!Function(INDEX(myRange,0,1))"
引用该范围的第一列。 如果名称有工作表 scope,则在公式中使用Sheet1!myRange
。
此代码适用于 FillDown:
Range("B2").Formula = "=PERSONAL.XLSB!Scoring(INDEX(Sheet!myRange,ROWS($A$1:$A1),1))"
Range("B2:B2", "A" & Cells(Rows.Count, 1).End(xlUp).Row).FillDown
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.