如何将 Excel 公式转换为宏 VBA 代码

如何将 Excel 公式转换为宏 VBA 代码

我如何将以下内容转换为宏 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 1O,要搜索的名称O2:O10
  • Sheet 2Clasification & Names,在&Named range中。A2:A10B2: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

根据需要调整代码中的单元格引用和命名范围。

相关内容