Excel-将索引匹配公式更改为VBA操作
我使用Excel VBA中的索引匹配公式从数据库中查找工具的零件号和说明。这是一个符合条件的索引匹配公式。首先在特定数组中查找机器刀具类型的匹配项,然后将其与特定数组中的配置进行匹配 我的问题是,我想更改为查找方式,因为我用公式编写特定的范围,我希望它是可伸缩的,这样,如果我在数据库中添加新行,我就不需要更改代码。数据库是一个表名“Illuminators” 这是我以前使用的带有to条件的公式,正如您所看到的,这里有一个单元格引用,如果我向数组下的数据库表添加一个新工具,它将不会在那里查找它Excel-将索引匹配公式更改为VBA操作,vba,excel,excel-formula,array-formulas,Vba,Excel,Excel Formula,Array Formulas,我使用Excel VBA中的索引匹配公式从数据库中查找工具的零件号和说明。这是一个符合条件的索引匹配公式。首先在特定数组中查找机器刀具类型的匹配项,然后将其与特定数组中的配置进行匹配 我的问题是,我想更改为查找方式,因为我用公式编写特定的范围,我希望它是可伸缩的,这样,如果我在数据库中添加新行,我就不需要更改代码。数据库是一个表名“Illuminators” 这是我以前使用的带有to条件的公式,正如您所看到的,这里有一个单元格引用,如果我向数组下的数据库表添加一个新工具,它将不会在那里查找它
Selection.FormulaArray = "=INDEX(DB!R2C1:R21C7,MATCH(1,(DB_Illumiators!R2C1:R21C1=RC[1])*(DB_Illumiators!R2C2:R21C2=RC[2]),0),4)"
我在循环的主工作表中使用公式,并在第二张图片的数据库工作表中使用公式:
我将感谢那些帮助我的人
拉斐尔将
R21C7
,R21C1
和R21C2
更改为索引(DB!C7,MATCH(“zzz”,DB!C1”)
,索引(DB!C1,MATCH(“zzz”,DB!C1))
和索引(DB!C2,MATCH(“zzz”,DB!C1))
。这些将根据最后的文本值动态调整终止单元格;数据库中的ue!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)"
将
R2C1:R21C7
更改为C1:C7
,或者如果您不想查找整个列(可能很慢),请更改为您知道数据不会超出范围的非常大的内容(例如-R2C1:R5000C7