【问题标题】:Excel - Changing Index-Match Formula to a VBA ActionExcel - 将索引匹配公式更改为 VBA 操作
【发布时间】:2017-09-21 15:50:44
【问题描述】:

我在 Excel VBA 中使用索引匹配公式从数据库中查找工具的零件号和描述。这是一个带有条件的索引匹配公式。首先在某个数组中查找机器工具类型的匹配项,然后将其与某个数组中的配置进行匹配。

我的问题是我想更改查找方式,因为我使用公式编写特定范围并且我希望它具有灵活性,这样如果我在数据库中添加新行,我就不需要更改代码。数据库是一个表名“Illuminators”。

这是我之前使用的条件公式,您可以看到有一个单元格引用,如果我要在数组下的数据库表中添加一个新工具,它就不会在那里查找它。

 Selection.FormulaArray = "=INDEX(DB!R2C1:R21C7,MATCH(1,(DB_Illumiators!R2C1:R21C1=RC[1])*(DB_Illumiators!R2C2:R21C2=RC[2]),0),4)"

我在主工作表中循环使用公式,并从第二张图片的数据库工作表中使用它:

我会感谢那些帮助过的人

拉斐尔

【问题讨论】:

  • R2C1:R21C7 更改为 C1:C7 或者如果您不想查找整个列(可能会很慢)更改为您知道数据不会超出的非常大的内容(例如 - @ 987654328@

标签: vba excel excel-formula array-formulas


【解决方案1】:

R21C7R21C1R21C2 更改为INDEX(DB!C7, MATCH("zzz", DB!C1))INDEX(DB!C1, MATCH("zzz", DB!C1))INDEX(DB!C2, MATCH("zzz", DB!C1))。这些将根据 DB!A:A 中的最后一个文本值动态调整终止单元格。

Selection.FormulaArray = _
  "=INDEX(DB!R2C1:INDEX(DB!C7, MATCH(""zzz"", DB!C1)), MATCH(1, (DB_Illumiators!R2C1:INDEX(DB!C1, MATCH(""zzz"", DB!C1))=RC[1])*(DB_Illumiators!R2C2:INDEX(DB!C2, MATCH(""zzz"", DB!C1))=RC[2]), 0), 4)"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-17
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 2019-08-12
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多