Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Sverweis m. mehreren Ergebnissen in gleicher Zelle

Sverweis m. mehreren Ergebnissen in gleicher Zelle
Felix
Hallo Forum,
Sagen wir ich habe eine Tabelle mit Artikelnummern in Spalte A. In einem anderen worksheet habe ich eine Tabelle mit den gleichen Artikelnummern und einer Auftragsnummer.
Ich moechte fuer jede Artikelnummern in Spalte A die Auftragsnummer aus der anderen Tabelle in Spalte B einfuegen. Also im prinzip ein SVerweis.
Die Auftragsnummern kommen allerdings haeufiger vor und der Sverweis zeigt ja nur den ersten match an. Ausserdem sollen die Auftragsnummern aneinandergereiht in der selben Zelle auftauchen. Deswegen bringt mich auch eine Indexformel nicht weiter.
Geht das nur mit Macro? Jemand eine Idee?
Vielen Dank im Voraus,
Gruesse,
Felix
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Sverweis m. mehreren Ergebnissen in gleicher Zelle
06.10.2010 10:38:28
Rudi
Hallo,
nur per VBA
in ein Modul:
Function SVerweisDup(vntMatch, rKriteria As Range, rResults As Range) As String
Dim arrSV, iCount As Long, n As Long, i As Long, rFind As Range
Dim arrKriteria, arrResults
If rKriteria.Row  rResults.Row Or rKriteria.Rows.Count  rResults.Rows.Count Then
SVerweisDup = "Bereiche prüfen!"
Else
iCount = Application.CountIf(rKriteria, vntMatch)
If iCount = 0 Then
SVerweisDup = "nich da!"
Else
With rKriteria
Set rFind = .Find(vntMatch, .Cells(1), , xlWhole, , xlPrevious)
End With
ReDim arrSV(1 To iCount)
arrKriteria = Range(rKriteria.Cells(1), rFind).Value
arrResults = Range(rKriteria.Cells(1), rFind).Offset(, rResults.Column - rKriteria.Column) _
.Value
For i = 1 To UBound(arrKriteria)
If arrKriteria(i, 1) Like vntMatch Then
n = n + 1
arrSV(n) = arrResults(i, 1)
End If
Next i
SVerweisDup = Join(arrSV, vbLf)
End If
End If
End Function

Du kannst auch mit Jokern im Suchbegriff arbeiten.
Gruß
Rudi
Anzeige
AW: Sverweis m. mehreren Ergebnissen in gleicher Zelle
07.10.2010 03:15:12
Felix
Absoluter Wahnsinn!!
Genial, vielen Dank Rudi!
Ich kannte bisher nur Makros, die ich aufgenommen habe und entsprechend der Beduerfnisse umgebastelt.
Dass man auch eigene funktionen schreiben kann, die voellig im Hintergrund laufen, ist super.
Muss mich da unbedingt mal genauer reinlesen.
Deine Funktion klappt auf jeden Fall Prima
Anzeige
;

Forumthreads zu verwandten Themen

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

Sverweis mit mehreren Ergebnissen in einer Zelle


Schritt-für-Schritt-Anleitung

Um mit Excel den SVerweis so zu nutzen, dass mehrere Ergebnisse in einer Zelle ausgegeben werden, kannst Du eine benutzerdefinierte Funktion in VBA erstellen. Folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Function SVerweisDup(vntMatch, rKriteria As Range, rResults As Range) As String
       Dim arrSV, iCount As Long, n As Long, i As Long, rFind As Range
       Dim arrKriteria, arrResults
       If rKriteria.Row <> rResults.Row Or rKriteria.Rows.Count <> rResults.Rows.Count Then
           SVerweisDup = "Bereiche prüfen!"
       Else
           iCount = Application.CountIf(rKriteria, vntMatch)
           If iCount = 0 Then
               SVerweisDup = "nicht da!"
           Else
               With rKriteria
                   Set rFind = .Find(vntMatch, .Cells(1), , xlWhole, , xlPrevious)
               End With
               ReDim arrSV(1 To iCount)
               arrKriteria = Range(rKriteria.Cells(1), rFind).Value
               arrResults = Range(rKriteria.Cells(1), rFind).Offset(, rResults.Column - rKriteria.Column) _
                   .Value
               For i = 1 To UBound(arrKriteria)
                   If arrKriteria(i, 1) Like vntMatch Then
                       n = n + 1
                       arrSV(n) = arrResults(i, 1)
                   End If
               Next i
               SVerweisDup = Join(arrSV, vbLf)
           End If
       End If
    End Function
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Verwende die Funktion in einer Zelle, um mehrere Ergebnisse zu verketten. Zum Beispiel:

    =SVerweisDup(A1, Tabelle1!A:A, Tabelle1!B:B)

Dabei ist A1 die Zelle mit der Artikelnummer, Tabelle1!A:A ist der Bereich mit den Artikelnummern in der anderen Tabelle und Tabelle1!B:B der Bereich mit den Auftragsnummern.


Häufige Fehler und Lösungen

  • Fehler: "Bereiche prüfen!"

    • Lösung: Überprüfe, ob die Bereiche für rKriteria und rResults die gleiche Anzahl an Zeilen haben.
  • Fehler: "nicht da!"

    • Lösung: Stelle sicher, dass der gesuchte Wert tatsächlich im rKriteria-Bereich vorhanden ist.

Wenn Du den SVerweis mit mehreren Ergebnissen in einer Zelle ausgeben möchtest, achte darauf, dass die Daten korrekt formatiert sind.


Alternative Methoden

Falls Du keine VBA-Programmierung nutzen möchtest, kannst Du auch die folgende Formel ausprobieren, um mehrere SVerweise zu kombinieren:

=TEXTVERKETTEN(", "; WAHR; WENN(A1=Tabelle1!A:A; Tabelle1!B:B; ""))

Diese Formel setzt voraus, dass Du Excel 365 verwendest, da die Funktion TEXTVERKETTEN nur in dieser Version verfügbar ist. Hiermit kannst Du mehrere SVerweise in einer Zelle nebeneinander ausgeben.


Praktische Beispiele

Angenommen, Du hast folgende Daten:

Artikelnummer Auftragsnummer
123 A001
123 A002
456 A003

Wenn Du den Artikel 123 in Zelle A1 hast und die obige Funktion verwendest, erhältst Du in der Zelle:

A001
A002

Das zeigt, wie Du mehrere SVerweise in einer Zelle verketten kannst.


Tipps für Profis

  • Experimentiere mit Wildcards in der SVerweisDup-Funktion, um flexiblere Suchkriterien zu verwenden.
  • Du kannst die SVerweisDup-Funktion auch in Kombination mit anderen Excel-Funktionen nutzen, um noch komplexere Abfragen zu erstellen.
  • Achte darauf, die Daten regelmäßig zu aktualisieren, wenn sich die Auftragsnummern ändern, um immer die aktuellen Werte zu erhalten.

FAQ: Häufige Fragen

1. Kann ich mehrere SVerweise in einer Zelle ohne VBA durchführen?
Ja, mit der TEXTVERKETTEN-Funktion in Excel 365 kannst Du mehrere SVerweise nebeneinander ausgeben, ohne VBA zu verwenden.

2. Was mache ich, wenn mein SVerweis nicht das erwartete Ergebnis liefert?
Überprüfe die Bereiche, die Du in der Funktion verwendest, und stelle sicher, dass die gesuchten Werte im Kriteriabereich vorhanden sind.

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