使用VBA添加Excel时vlookup范围问题

时间:2015-03-26 00:46:26

标签: excel vba formula

第一个VBA代码:我在VBA中使用vlookup公式,下面是我放在VBA中的公式:

Rng.Formula = "=IF(RC" & SeseCol & " ="""","""",IF(LEFT(LOWER(RC" & SeseCol & "),4)=""none"","""",VLOOKUP(LEFT(RC" & SeseCol & ",(FIND("" "",RC" & SeseCol & ",1)-1)),'[HMO Base Rule Picker - Formula.xlsm]BaseRule'!C[-10]:C[-5],2,0)))"

第一个VBA输出:从上面的代码我得到excel中的以下公式是正确的:

=IF($C17 ="","",IF(LEFT(LOWER($C17),4)="none","",VLOOKUP(LEFT($C17,(FIND(" ",$C17,1)-1)),BaseRule!B:G,2,0)))

第二个VBA代码:但是我想让C [-10]:C [-5]变为一个恒定范围并尝试更改为$ B:$ G,如下面的VBA代码:

Rng.Formula = "=IF(RC" & SeseCol & " ="""","""",IF(LEFT(LOWER(RC" & SeseCol & "),4)=""none"","""",VLOOKUP(LEFT(RC" & SeseCol & ",(FIND("" "",RC" & SeseCol & ",1)-1)),'[HMO Base Rule Picker - Formula.xlsm]BaseRule'!$B:$G,2,0)))"

第二个VBA输出:然后我从上面的代码中得到以下公式,该公式无效。我没有得到第一个VBA输出公式,我在第二个代码上遗漏了什么?

=IF(RC7 ="","",IF(LEFT(LOWER(RC7),4)="none","",VLOOKUP(LEFT(RC7,(FIND(" ",RC7,1)-1)),BaseRule!$B:$G,2,0)))

1 个答案:

答案 0 :(得分:0)

使用C2:C7代替C[-10]:C[-5] 最终的公式是:

Rng.FormulaR1C1 = "=IF(RC" & SeseCol & " ="""","""",IF(LEFT(LOWER(RC" & SeseCol & _
    "),4)=""none"","""",VLOOKUP(LEFT(RC" & SeseCol & ",(FIND("" "",RC" & SeseCol & _
    ",1)-1)),'[HMO Base Rule Picker - Formula.xlsm]BaseRule'!C2:C7,2,0)))"

在R1C1中,表示法[]括号用于表示 relative 引用。
要指示绝对引用,您只需指示实际的编号。
因此对于 B列C2是第2列。
对于列G ,即第7列将是{ {1}}。

另请注意,我使用了上面的C7属性 当您在公式中使用R1C1表示法时,这是正确的属性。