如何將Excel公式轉換為巨集VBA程式碼

如何將Excel公式轉換為巨集VBA程式碼

如何將下面的內容轉換為巨集 vba 程式碼? =索引(分類,匹配(真,ISNUMBER(搜尋(名稱,O12)),0))

我在 Sheet1 中有一個列 (O),需要從中進行搜尋。我在sheet2中有兩列用名稱定義(名稱和分類)。當在 Sheet1 的 O 欄位中找到名稱時,P 欄位具有 Sheet2 分類中的對應值

Sheet1 第 O 欄 我們客戶的名字是 John Doe

Sheet2 名稱分類 John Doe A 級

Sheet1 列 P 的值為 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

根據需要調整程式碼中的儲存格參考和命名範圍。

相關內容