Wie konvertiere ich Folgendes in Makro-VBA-Code? =INDEX(CLASSIFICATION,MATCH(TRUE,ISNUMBER(SEARCH(NAMES,O12)),0))
Ich habe eine Spalte (O) in Blatt1, in der gesucht werden muss. Ich habe zwei Spalten in Blatt2, die mit einem Namen definiert sind (Namen und Klassifizierung). Wenn in Spalte O von Blatt1 ein Name gefunden wird, hat Spalte P den entsprechenden Wert aus der Klassifizierung von Blatt2
Tabelle 1 Spalte O Der Name unseres Kunden ist John Doe
Blatt 2 Name Klassifizierung John Doe Klasse A
Tabelle 1: Spalte P enthält den Wert Klasse A
Bitte helfen Sie!
Antwort1
Da keine Beispieldaten verfügbar sind, gehe ich davon aus,
Sheet 1
SpalteO
, Namen in denen gesucht werden sollO2:O10
.Sheet 2
hatClasification
&Names
, sindNamed range
inA2:A10
&B2:B10
.- Sie benötigen Ergebnisse im Bereich
P2:P10
inSheet1
.
Nun möchte ich zunächst vorschlagen, wie man einer Excel-Formel einen VBA-Code zuweist.
Range("P2").FormulaArray = "=IFERROR(INDEX(Clasification,MATCH(TRUE,ISNUMBER(SEARCH(Names,O2)),0)),""No Found"")"
AchtungSie benötigen eine Array-Formel (CSE), die .FormulaArray
verwendet werden kann.
Da aber Named Range
bei der Verwendung mit VBA-Makros „is/are“ deklariert werden muss/müssen, möchte ich Ihnen empfehlen, den folgenden Code als zu verwenden 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
Passen Sie Zellreferenzen und benannte Bereiche im Code nach Bedarf an.