So konvertieren Sie eine Excel-Formel in Makro-VBA-Code

So konvertieren Sie eine Excel-Formel in Makro-VBA-Code

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 1Spalte O, Namen in denen gesucht werden soll O2:O10.
  • Sheet 2hat Clasification & Names, sind Named rangein A2:A10& B2:B10.
  • Sie benötigen Ergebnisse im Bereich P2:P10in Sheet1.

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 .FormulaArrayverwendet werden kann.


Da aber Named Rangebei 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.

verwandte Informationen