Excel 使用 VBA 添加时出现 vlookup 范围问题
Excel vlookup range issue while adding using VBA
1st 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)))"
1st VBA output:从上面的代码我得到下面的公式 excel 这是正确的:
=IF($C17 ="","",IF(LEFT(LOWER($C17),4)="none","",VLOOKUP(LEFT($C17,(FIND(" ",$C17,1)-1)),BaseRule!B:G,2,0)))
2nd VBA code: 但是我想让 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)))"
2nd VBA output: 然后我从上面的代码中得到下面的公式,但它不起作用。我得到的结果与第一个 VBA 输出公式不一样,我在第二个代码中遗漏了什么吗?
=IF(RC7 ="","",IF(LEFT(LOWER(RC7),4)="none","",VLOOKUP(LEFT(RC7,(FIND(" ",RC7,1)-1)),BaseRule!$B:$G,2,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 表示法中 []
括号用于表示 相对 引用。
要表示绝对引用,您只需指出实际的 column 或 row 编号。
因此对于 B 列 即 C2
第二列。
对于 G 列第 7 列是 C7
。
另请注意,我在上面使用了 FormulaR1C1
属性。
当您在公式中使用 R1C1 表示法时,这是正确的 属性。
1st 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)))"
1st VBA output:从上面的代码我得到下面的公式 excel 这是正确的:
=IF($C17 ="","",IF(LEFT(LOWER($C17),4)="none","",VLOOKUP(LEFT($C17,(FIND(" ",$C17,1)-1)),BaseRule!B:G,2,0)))
2nd VBA code: 但是我想让 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)))"
2nd VBA output: 然后我从上面的代码中得到下面的公式,但它不起作用。我得到的结果与第一个 VBA 输出公式不一样,我在第二个代码中遗漏了什么吗?
=IF(RC7 ="","",IF(LEFT(LOWER(RC7),4)="none","",VLOOKUP(LEFT(RC7,(FIND(" ",RC7,1)-1)),BaseRule!$B:$G,2,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 表示法中 []
括号用于表示 相对 引用。
要表示绝对引用,您只需指出实际的 column 或 row 编号。
因此对于 B 列 即 C2
第二列。
对于 G 列第 7 列是 C7
。
另请注意,我在上面使用了 FormulaR1C1
属性。
当您在公式中使用 R1C1 表示法时,这是正确的 属性。