我如何将以下内容转换为宏 vba 代码?=INDEX(CLASSIFICATION,MATCH(TRUE,ISNUMBER(SEARCH(NAMES,O12)),0))
Sheet1 中有一列 (O),需要从中进行搜索。Sheet2 中有两列,它们都定义了名称 (名称和分类)。当在 Sheet1 的 O 列中找到名称时,P 列将具有来自 Sheet2 分类的相应值
Sheet1 Column O 我们的客户名字是 John Doe
Sheet2 姓名 分类 John Doe A 类
Sheet1 的 P 列将具有值 Class A
请帮忙!
答案1
由于样本数据不可用,因此我假设,
Sheet 1
列O
,要搜索的名称O2:O10
。Sheet 2
有Clasification
&Names
,在&Named range
中。A2:A10
B2:B10
- 您需要在 范围内的
P2:P10
结果Sheet1
。
现在首先,我想建议如何将 Excel 公式分配给 VBA 代码。
Range("P2").FormulaArray = "=IFERROR(INDEX(Clasification,MATCH(TRUE,ISNUMBER(SEARCH(Names,O2)),0)),""No Found"")"
注意:您需要一个数组(CSE)公式,以便.FormulaArray
使用它。
但是由于Named Range
在使用 VBA 宏时需要声明,因此我建议您使用以下代码Standard Module
。
Sub Formula()
Dim Clasification As Range
Dim Names As Range
Set Clasification = Sheets("Sheet2").Range("A2:A10")
Set Names = Sheets("Sheet2").Range("B2:B10")
Range("P2").FormulaArray = "=IFERROR(INDEX(Clasification,MATCH(TRUE,ISNUMBER(SEARCH(Names,O2)),0)),""No Found"")"
Range("P2:P10").FillDown
End Sub
根据需要调整代码中的单元格引用和命名范围。