【问题标题】:Converting a Index & Match & Offset function to work with userform将 Index & Match & Offset 函数转换为与 userform 一起使用
【发布时间】:2019-12-25 22:24:27
【问题描述】:

我这里有一个有效的 VBA 代码:

Evaluate("INDEX(A$6:A$72,MATCH(J5,B$6:B$72,0))") = Change_Pool.Value

它的作用是获取一个索引并将其与用户表单链接单元格 (J5) 匹配。


我想要它做的是: 1. 使 VBA 代码使用用户窗体上的组合框 (Edit_pool.Change_Pool) 而不是链接的单元格。即:

Evaluate("INDEX(A$6:A$72,MATCH(  *Edit_pool.Change_Pool.value*  ,B$6:B$72,0))")
  1. 然后我希望它将结果向下偏移一个单元格。 所以它看起来像

    偏移量 ("INDEX(A$6:A$72,MATCH(Edit_pool.Change_Pool.value ,B$6:B$72,0))") 1

什么的^^

【问题讨论】:

  • 您要调用 Worksheet.Evaluate,而不是 Application.Evaluate - 否则 Evaluate 正在任何工作表当前处于活动状态的上下文中运行...而您不要 想要为此激活工作表。

标签: excel vba indexing match


【解决方案1】:

要匹配文本值,请尝试...

Evaluate("OFFSET(INDEX(A$6:A$72,MATCH(""" & Edit_pool.Change_Pool.value & """,B$6:B$72,0)),1,0)") = Change_Pool.Value

要匹配数值,请尝试...

Evaluate("OFFSET(INDEX(A$6:A$72,MATCH(" & Edit_pool.Change_Pool.value & ",B$6:B$72,0)),1,0)") = Change_Pool.Value

【讨论】:

    【解决方案2】:

    你可以这样做:

    Evaluate("INDEX(A$6:A$72,MATCH(" & Edit_pool.Change_Pool.value & ",B$6:B$72,0))")
    

    请注意,如果您的值不是数字,则需要在其周围添加引号:

    Evaluate("INDEX(A$6:A$72,MATCH(""" & Edit_pool.Change_Pool.value & """,B$6:B$72,0))")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-28
      • 2019-09-06
      • 1970-01-01
      • 2017-12-30
      • 2020-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多