Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wert in matrix suchen

Wert in matrix suchen
03.11.2018 21:00:44
Thomas
Hallo Excelfreunde,
ich habe eine Liste von Werten in Spalte A zu stehen.
In einer weiteren Tabelle habe ich in einem Bereich Daten zu stehen.
Nun möchte ich gern den Bereich nach den Daten aus Spalte A durchsuchen und dann den jeweiligen Wert darunter in spalte B eintragen.
Im Netz habe ich schon eine UDF gefunden. allerdings findet die UDF nur immer einen Treffer, bei mir können es aber bis zu drei Treffer sein.
Ich weiß das hört sich verwirrend an deshalb habe ich in der Beispieldatei mein Wunschergebnis eingetragen. ( Die UDF ist mit bei).
https://www.herber.de/bbs/user/125096.xlsm
Kann sich dies mal jemand anschauen?
Ich freue mich über jeden Vorschlag ob Formel oder VBA.
MFG Thomas
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert in matrix suchen
03.11.2018 22:14:19
Rainer
Hallo Thomas,
probier mal:
Private Sub CommandButton1_Click()
Dim PL As Worksheet
Dim AT As Worksheet
Dim A, Z, S, x, n, i, j
A = 36  'Anzahl Artikel
Z = 10  'Zeilen der Matrix
S = 9   'Spalten der Matrix
x = 1   'Anzahl der Treffer
Set PL = Sheets(1)
Set AT = Sheets(2)
For n = 2 To 36
x = 1
For i = 1 To Z
For j = 1 To S
If AT.Cells(n, 1).Text = PL.Cells(i, j).Text Then
AT.Cells(n, 1 + x) = PL.Cells(i + 1, j).Value
x = x + 1
End If
Next j
Next i
Next n
End Sub
Gruß,
Rainer
Anzeige
AW: Wert in matrix suchen
03.11.2018 22:43:58
Thomas
Hallo Rainer,
hab recht vielen vielen dank für diesen Vorschlag.
Die Ergebnisse passen perfekt.
Kannst Du noch einbauen das leere Zellen in der Spalte A ( Tabelle Artikeltabelle ) ignoriert werden?
vielen vielen dank.
MFG Thomas
AW: Wert in matrix suchen
03.11.2018 23:00:40
Rainer
Meinst du so?
Private Sub CommandButton1_Click()
Dim PL As Worksheet
Dim AT As Worksheet
Dim A, Z, S, x, n, i, j
A = 36  'Anzahl Artikel
Z = 10  'Zeilen der Matrix
S = 9   'Spalten der Matrix
x = 1   'Anzahl der Treffer
Set PL = Sheets(1)
Set AT = Sheets(2)
For n = 2 To A
x = 1
If AT.Cells(n, 1).Text  "" Then
For i = 1 To Z
For j = 1 To S
If AT.Cells(n, 1).Text = PL.Cells(i, j).Text Then
AT.Cells(n, 1 + x) = PL.Cells(i + 1, j).Value
x = x + 1
End If
Next j
Next i
End If
Next n
End Sub

Anzeige
besten dank an Rainer
03.11.2018 23:13:49
Thomas
Hallo Rainer,
ja perfekt.
Hab recht vielen dank.
MFG Thomas
AW: besten dank an Rainer
04.11.2018 11:20:10
Rainer
Danke für die Rückmeldung und viel Spaß damit.
AW: Wert in matrix suchen
04.11.2018 11:49:49
Sulprobil
Hallo Thomas,
hier ein Vorschlag, der die Ergebnisse des vorherigen Suchlaufs löscht, der mitteilt wenn kein Preis gefunden wurde, und der die Artikelnummern nicht in den Preiszeilen sucht.
Darüberhinaus werden die Zeilenköpfe der Preisliste geprüft.
https://www.herber.de/bbs/user/125109.xlsm
Viele Grüße,
Bernd P
Anzeige
besten dank an Sulprobil
05.11.2018 05:10:08
Thomas
Hallo Bernd,
dein Vorschlag ist Klasse und auch schön schnell.
Hab recht vielen vielen dank für deine Mühe.
MFG Thomas
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Wert in Matrix suchen mit Excel


Schritt-für-Schritt-Anleitung

Um einen Wert in einer Matrix in Excel zu suchen und die entsprechenden Daten auszugeben, kannst Du die folgenden Schritte befolgen:

  1. Vorbereitung der Daten:

    • Stelle sicher, dass Deine Daten in Spalte A und die Matrix in einem anderen Arbeitsblatt, z.B. in „Artikeltabelle“, korrekt angeordnet sind.
  2. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf „VBAProject (Dein Arbeitsblatt)“ und wähle „Einfügen“ > „Modul“.
  4. Füge den VBA-Code ein:

    • Kopiere den folgenden VBA-Code in das Modul:
    Private Sub CommandButton1_Click()
       Dim PL As Worksheet
       Dim AT As Worksheet
       Dim A, Z, S, x, n, i, j
       A = 36  'Anzahl Artikel
       Z = 10  'Zeilen der Matrix
       S = 9   'Spalten der Matrix
       x = 1   'Anzahl der Treffer
       Set PL = Sheets(1)  'Arbeitsblatt mit den Artikelnummern
       Set AT = Sheets(2)  'Arbeitsblatt mit der Matrix
    
       For n = 2 To A
           x = 1
           If AT.Cells(n, 1).Text <> "" Then
               For i = 1 To Z
                   For j = 1 To S
                       If AT.Cells(n, 1).Text = PL.Cells(i, j).Text Then
                           AT.Cells(n, 1 + x) = PL.Cells(i + 1, j).Value
                           x = x + 1
                       End If
                   Next j
               Next i
           End If
       Next n
    End Sub
  5. Führe das Makro aus:

    • Schließe den VBA-Editor und kehre zu Excel zurück.
    • Füge einen Button hinzu, um das Makro auszuführen, und verlinke ihn mit CommandButton1_Click.

Häufige Fehler und Lösungen

  • Fehler: „Typen sind nicht kompatibel“
    Lösung: Überprüfe, ob die Datentypen in der Matrix und den Suchwerten übereinstimmen (z.B. Text vs. Zahl).

  • Fehler: „Keine Werte gefunden“
    Lösung: Stelle sicher, dass die Werte in Spalte A korrekt eingegeben sind und die Matrix die gesuchten Werte enthält.

  • Leere Zellen werden nicht ignoriert:
    Wenn leere Zellen in der Spalte A berücksichtigt werden, wird das Programm nicht korrekt funktionieren. Der oben angegebene Code ignoriert leere Zellen.


Alternative Methoden

Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du auch die integrierten Excel-Funktionen nutzen:

  • SVERWEIS: Diese Funktion kann verwendet werden, um Werte in einer Matrix zu suchen. Beispiel:

    =SVERWEIS(A2; B1:D10; 2; FALSCH)
  • FILTER (in neueren Excel-Versionen): Damit kannst Du gezielt Werte filtern.

    =FILTER(B1:D10; A2:A10 = E1)

Praktische Beispiele

Angenommen, Du hast folgende Daten in Spalte A:

A
Artikel1
Artikel2
Artikel3

Und in Deiner Matrix in einem anderen Blatt:

B C D
Artikel1 10€ 15€
Artikel2 20€ 25€
Artikel3 30€ 35€

Mit dem VBA-Code wird beim Ausführen des Makros der Preis von Artikel1 unter den entsprechenden Zellen in Spalte B eingetragen.


Tipps für Profis

  • Nutze Option Explicit am Anfang Deines VBA-Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Verwende Fehlerbehandlungsroutinen in Deinem VBA-Code, um unerwartete Fehler elegant zu handhaben.
  • Halte Deine Matrix-Daten stets aktuell und gut strukturiert, um die Suche zu optimieren.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Treffer in einer Matrix suchen?
Der bereitgestellte VBA-Code ist bereits darauf ausgelegt, mehrere Treffer zu finden und in den entsprechenden Zellen auszugeben.

2. Kann ich den Code anpassen, um eine andere Matrix zu durchsuchen?
Ja, ändere einfach die Werte von PL und AT auf die gewünschten Arbeitsblätter und die Dimensionen der Matrix.

3. Funktioniert der Code in jeder Excel-Version?
Der VBA-Code sollte in den meisten Excel-Versionen funktionieren, die VBA unterstützen (z.B. Excel 2010 und neuer).

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige