Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1484to1488
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sverweis mit mehreren Ergebnissen

Sverweis mit mehreren Ergebnissen
24.03.2016 11:06:19
Sebastian
Hallo zusammen,
ich habe folgendes Problem und finde leider nicht die exakte Lösung im Forum bzw. das, was ich finde kann ich nicht adaptieren :(
TAbelle:
A----------B
12345 | 14-Mar-15
56789 | 08-Jan-16
12345 | 09-Jul-16
56789 | 23-Dez-16
Formel/Makro soll folgendes Machen:
Suche Wert "x" in Spalte A und gib alle Ergebnisse in Spalte C aus. Ergebnisse sollen in der gleichen Zelle mit Zeilenumbruch realisiert werden, so dass jeweils ein Ergebnis in einer Zeile der Zielzelle steht.
Gibts da eine einfache Möglichkeit das umzusetzen?
Vielen Dank und beste Grüße
Basti

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sverweis mit mehreren Ergebnissen
24.03.2016 11:08:22
SF
Hola,
 so dass jeweils ein Ergebnis in einer Zeile der Zielzelle steht.
hat das einen bestimmten Grund?
Gruß,
steve1da

AW: unklar ...
24.03.2016 11:37:15
...
Hallo Basti,
... so wie Du schreibst, kann es eigentlich in Spalte C nur "" oder den gleichen Wert aus Spalte A geben der als angegebener Suchwert dort auch steht.
Lade doch mal eine kleine Beispieldatei hoch, aus der Dein Zielergebnis für das hier von Dir bisher eingestellte Textbeispiel von Hand aufzeigst.
Gruß Werner
.. , - ...

AW: Sverweis mit mehreren Ergebnissen
24.03.2016 14:14:48
Steve
Hallo Basti,
probier bitte mal ob dies deinen Vorstellungen entspricht.
Sub Test()
Dim oCol As Collection
Dim wks As Worksheet
Dim rBereich As Range, rZelle As Range, rZ As Range
Dim sFirstAddress As String, sSpalteC As String, i As Long
Set wks = Sheets("Tabelle1")
With wks
Set rBereich = .Range(.Range("A2"), .Cells(.Rows.Count, 1).End(xlUp))
End With
For Each rZelle In rBereich
Set rZ = rBereich.Find(rZelle, LookIn:=xlValues, LookAt:=xlWhole)
If Not rZ Is Nothing Then
Set oCol = New Collection
sFirstAddress = rZ.Address
Do
On Error Resume Next
oCol.Add rZ.Offset(0, 1), rZ.Offset(0, 1)
Err.Clear
On Error GoTo 0
Set rZ = rBereich.FindNext(rZ)
Loop While Not rZ Is Nothing And rZ.Address  sFirstAddress
For i = 1 To oCol.Count
If i = 1 Then
sSpalteC = oCol.Item(i)
Else: sSpalteC = sSpalteC & Chr(10) & oCol.Item(i)
End If
Next i
rZelle.Offset(0, 2) = sSpalteC
End If
Next rZelle
End Sub
lg Steve

Anzeige
AW: Sverweis mit mehreren Ergebnissen
24.03.2016 14:53:06
IngoG
Hallo Sebastian,
versuchs mal mit folgender UDF:
Function SV_ALLE(vKey As String, vMatr As Range, vSP As Long) As Variant
Dim zelle As Range
Dim oAddr As Object
If vSP  vMatr.Columns.Count Then
SV_ALLE = CVErr(xlErrNA)
Else
Set oAddr = CreateObject("scripting.dictionary")
'    MsgBox "Key-Bereich: " & vMatr.Columns(1).Address
For Each zelle In Range(vMatr.Columns(1).Address)
If zelle.Text = vKey Then
oAddr(zelle.Offset(0, vSP - 1).Text) = 0
End If
Next zelle
If oAddr.Count Then
SV_ALLE = Join(oAddr.keys, vbLf)
Else
SV_ALLE = CVErr(xlErrNA)
End If
End If
End Function
Das Coding in ein Modul eintragen und analog zum Sverweis (4. Parameter nicht vorgesehen) aufrufen
zB in c1 eintragen
=sv_alle(a1;$A1$10:$B$20;2)
und nach unten kopieren
die Zelle muss formatiert werden mit Zeilenumbruch
Vielleicht hilft Dir das ja weiter
Gruß Ingo

Anzeige
AW: Sverweis mit mehreren Ergebnissen
24.03.2016 15:34:04
Sebastian
Hallo zusammen,
danke für die schnelle Rückmeldung.
@SF: Im Endefekt habe ich eine Liste mit Sachnummern und möchte feststellen, an welchem Datum zu dieser Nummer etwas notiert wurde.
@steve: ich hab das Makro im Modul eingefügt und laufen lassen. Es ist leider nichts passiert und ich steig leider mit meinen VBA kenntnissen auch nicht komplett durch. Sollte er in Spalte C etwas befüllen?
@Ingo: Danke Dir für deinen Versuch. Mir zeigt er hier leider immer nur #NV an obwohl er da was treffen müsste. Ne idee woran das liegen kann?
Habs mit einem anderen Funktion aus dem Forum versucht, die gibt mir aber nur die einzelnen verschiedenen Daten an.
D.h. so lange es sich um verschiedene Werte handelt, die zurückgegeben werden sollen werden alle einzelnen Werte korrekt dargestellt. Ich möchte aber auch gleiche Werte zurückgespiegelt bekommen.
D.h. für das obere Beispiel sollte es so aussehen:
Userbild
Kann die Funktion unten so modifiziert werden?
Function SVERWEIS2(Kriterium As String, Bereich As Range, SuchSpalte As Integer,  _
ErgebnissSpalte As Integer, Optional Trenner As String = ", ") As String
'Original von UDO
Dim arrTmp
Dim L As Long
arrTmp = Bereich
For L = 1 To UBound(arrTmp)
If arrTmp(L, SuchSpalte) = Kriterium Then _
If InStr(1, SVERWEIS2, arrTmp(L, ErgebnissSpalte)) = 0 Then _
SVERWEIS2 = SVERWEIS2 & arrTmp(L, ErgebnissSpalte) & Trenner
Next
SVERWEIS2 = Left(SVERWEIS2, Len(SVERWEIS2) - Len(Trenner))
End Function

Anzeige
AW: Sverweis mit mehreren Ergebnissen
24.03.2016 15:51:27
IngoG
Hallo Basti,
ich war davon ausgegangen, dass die Tabelle im selben sheet liegt
wenn Du folgende Änderung vornimmst sollte es funzen...
For Each zelle In vMatr.Worksheet.Range(vMatr.Columns(1).Address)
Gruß Ingo

AW: Sverweis mit mehreren Ergebnissen
24.03.2016 16:27:12
Steve
Hallo Sebastian,
von einem zweiten Blatt war nie die Rede, genauso wenig dass die Werte in Spalte A nicht mehr doppelt vorkommen sollen. Ein Verweis und Aussortieren sind gänzlich unterschiedliche Dinge. Ersteres sucht und findet nur.
Bitte solche Dinge nicht als selbstverständlich annehmen. Ihr macht es uns allen leichter wenn ihr gleich mit allen Anforderungen herausrückt, dann braucht nicht 10x umgedschrieben werden.
Das Ergebnis sah fast genauso aus wie bei dir im Bild, ich habe hier doppelte Werte wie deinen 14. März nicht doppelt anzeigen lassen, aber wenn du das wünschst umso einfacher. Nur das Ergebnis wurde in Spalte C geschrieben, ich zitiere mal "[...]und gib alle Ergebnisse in Spalte C aus."
lg Steve
Sub Test()
Dim oCol As Collection
Dim wks As Worksheet, wks2 As Worksheet
Dim rBereich As Range, rZelle As Range, rZ As Range
Dim sFirstAddress As String, sErgebnis As String
Dim i As Long, lZeile As Long
Set wks = Sheets("Tabelle1")
Set wks2 = Sheets("Tabelle2")
With wks
Set rBereich = .Range(.Range("A2"), .Cells(.Rows.Count, 1).End(xlUp))
End With
With wks2
lZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
Set oCol = New Collection
For Each rZelle In rBereich
On Error Resume Next
oCol.Add rZelle.Text, rZelle.Text
Debug.Print Err.Number
If Err.Number = 0 Then
On Error GoTo 0
Set rZ = rBereich.Find(rZelle, LookIn:=xlValues, LookAt:=xlWhole)
If Not rZ Is Nothing Then
sFirstAddress = rZ.Address
Do
If sErgebnis = "" Then
sErgebnis = rZ.Offset(0, 1)
Else
sErgebnis = sErgebnis & Chr(10) & rZ.Offset(0, 1)
End If
Set rZ = rBereich.FindNext(rZ)
Loop While Not rZ Is Nothing And rZ.Address  sFirstAddress
End If
lZeile = lZeile + 1
wks2.Cells(lZeile, 1) = rZ
wks2.Cells(lZeile, 2) = sErgebnis
End If
On Error GoTo 0
sErgebnis = ""
Next rZelle
End Sub

Anzeige
AW: Sverweis mit mehreren Ergebnissen
29.03.2016 10:38:09
Sebastian
Servus zusammen,
Sorry für die nicht ganz so genauen Anforderungen :(
Danke für die überarbeiteten Versionen. Leider kommt sowohl bei der Function von Ingo als auch beim Sub von Steve nur jeder Ergebniswert maximal 1mal vor, obwohl ich ihn in der tatsächlichen Anzahl benötigen würde:
D.h.
12345 hat im BSP den 14.3, den 9.7. und den 14.3 und genau diese 3 Werte bräuchte ich im Ergebnis. Mir werden aber jeweils immer nur eindeutige Werte zurückgeliefert, d.h. in diesem Fall nur "14.3 und 9.7".
Mach ich hier was falsch? :)

AW: Sverweis mit mehreren Ergebnissen
29.03.2016 10:36:15
Sebastian
Servus zusammen,
Sorry für die nicht ganz so genauen Anforderungen :(
Danke für die überarbeiteten Versionen. Leider kommt sowohl bei der Function von Ingo als auch beim Sub von Steve nur jeder Ergebniswert maximal 1mal vor, obwohl ich ihn in der tatsächlichen Anzahl benötigen würde:
D.h.
12345 hat im BSP den 14.3, den 9.7. und den 14.3 und genau diese 3 Werte bräuchte ich im Ergebnis. Mir werden aber jeweils immer nur eindeutige Werte zurückgeliefert, d.h. in diesem Fall nur "14.3 und 9.7".
Mach ich hier was falsch? :)
Anzeige

333 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige