【问题标题】:Excel vlookup range issue while adding using VBA使用 VBA 添加时的 Excel vlookup 范围问题
【发布时间】:2015-03-26 09:26:42
【问题描述】:

第一个 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)))

【问题讨论】:

    标签: excel vba formula


    【解决方案1】:

    使用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 表示法中,[] 括号用于表示相对引用。
    要表示绝对引用,您只需要指明实际的 columnrow 编号。
    因此,对于 B 列 来说,C2 是第 2 列。
    对于 G 列,这是第 7 列,C7

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-29
      • 2020-07-21
      • 2017-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多