以下をマクロ 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 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
必要に応じて、コード内のセル参照と名前付き範囲を調整します。