Excel の数式をマクロ VBA コードに変換する方法

Excel の数式をマクロ VBA コードに変換する方法

以下をマクロ VBA コードに変換するにはどうすればよいですか? =INDEX(CLASSIFICATION,MATCH(TRUE,ISNUMBER(SEARCH(NAMES,O12)),0))

Sheet1 には検索対象となる列 (O) があります。Sheet2 には名前 (名前と分類) で定義された 2 つの列があります。Sheet1 の列 O に名前が見つかると、列 P には Sheet2 の分類から対応する値があります。

Sheet1 列O 顧客の名前はJohn Doeです

シート2 名前 分類 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 RangeVBA マクロを使用する場合は を宣言する必要があるため、 として使用するための次のコードをお勧めします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

必要に応じて、コード内のセル参照と名前付き範囲を調整します。

関連情報