Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
780to784
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
780to784
780to784
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

SVERWEIS mit mehreren Ergebnissen per VBA

SVERWEIS mit mehreren Ergebnissen per VBA
20.07.2006 11:48:57
Anton
Hallo Leute,
ich möchte zwei Tabellen mit SVERWEIS verknüpfen.
Dabei sind pro Suchwert mehrere Ergebnisse vorhanden.
Diese sollen spaltenweise angeordet werden (ich will sie nachher als Uhrzeit formatieren).
Folgendes habe ich inzwischen: Ein Makro (Function) und die dazugehörige Formel.
Die Ergebnisse werden jedoch duch komma getrennt in die selbe Zelle geschrieben.
Option Explicit
Public
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
=sverweis2(A4;'[Export-tabelle-Access.xls]dbo_tblZeiterfassung'!$A:$C;1;2)
Ich vermute mal den Trenner muß ich anders definieren.....
Wer von Euch kann mir bitte mit VBA-Code weiterhelfen?
Es bedankt sich und sagt servus,
Anton

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

Betreff
Datum
Anwender
Anzeige
AW: SVERWEIS mit mehreren Ergebnissen per VBA
ransi
Hallo Anton
Der Trenner hat damit nichts zu tun.
Den hatte ich damals nur mit reingebaut damit man wählen kann wie die Daten getrennt werden.
Habe die Funktion mal auf deine Bedürfnisse umgestrickt:
Jetzt werden auch doppelte erfasst.


Option Explicit
Public Function SVERWEIS2(Kriterium As String, Bereich As Range, SuchSpalte As Integer, _
ErgebnissSpalte As Integer, welcher_wert As LongAs String
'Original von UDO
    Dim arrTmp
    Dim arr()
    Dim L As Long
    Dim z
    z = 1
arrTmp = Bereich
For L = 1 To UBound(arrTmp)
    If arrTmp(L, SuchSpalte) = Kriterium Then
        ReDim Preserve arr(z)
        arr(z) = arrTmp(L, ErgebnissSpalte)
        z = z + 1
    End If
Next
SVERWEIS2 = arr(welcher_wert)
End Function


Der Aufruf geht dann so:
Tabelle1
 ABCDE
14OOZWO XJN0NY
2XJN0NY  HJ20D
33T28VU  7A89I
44VZ48P  UTS2Q
51DT8XR   
617M8QM   
71TMT4O   
83UOE0O   
93L4LZJ   
10XHJ20D   
11144XEZ   
1246L8E4   
1315LGJT   
141K22NP   
152AQPR3   
16X7A89I   
174U1HG1   
183M6B7S   
1910QCV6   
20XUTS2Q   
Formeln der Tabelle
E1 : =SVERWEIS2($D$1;$A$1:$B$20;1;2;ZEILE(A1))
E2 : =SVERWEIS2($D$1;$A$1:$B$20;1;2;ZEILE(A2))
E3 : =SVERWEIS2($D$1;$A$1:$B$20;1;2;ZEILE(A3))
E4 : =SVERWEIS2($D$1;$A$1:$B$20;1;2;ZEILE(A4))
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
ransi
Anzeige
bitte noch kommentieren
20.07.2006 14:28:21
Anton
Hallo Ransi,
Bitte kannst Du Deinen Code noch kommentieren.
Ich möchte mir den Code so umstricken können, dass die Ergebnisse in Spalten nebeneinander stehen.
Dir schon jetzt herzlichen Dank,
Servus,
Anton
AW: bitte noch kommentieren
ransi
hallo


Public Function SVERWEIS2(Kriterium As String, Bereich As Range, SuchSpalte As Integer, _
ErgebnissSpalte As Integer, welcher_wert As LongAs String
'Kriterium As String ist der Begriff der gesucht werden soll
'Bereich ist die Matrix
'Suchspalte ist die Spaltennummer in der Kriterium zu finden ist.
'In diesem Fall in der ersten Spalte von Bereich. Also 1.
'ErgebnissSpalte ist die Spaltennummer in der der passende Wert gesucht werden soll.
'In diesem Fall also inder Zweiten Spalte.
'Alle gefundenen Werte werden in ein Array eingelesen.
'Das passiert hier:
'################
'If arrTmp(L, SuchSpalte) = Kriterium Then
'        ReDim Preserve arr(z)
'        arr(z) = arrTmp(L, ErgebnissSpalte)
'        z = z + 1
'End If
'################
'Welcher_wert sagt einfach nur an welcher Stelle in arr sverweis2() den Wert holen soll.
    Dim arrTmp
    Dim arr()
    Dim L As Long
    Dim z
    z = 1
arrTmp = Bereich
For L = 1 To UBound(arrTmp)
    If arrTmp(L, SuchSpalte) = Kriterium Then
        ReDim Preserve arr(z)
        arr(z) = arrTmp(L, ErgebnissSpalte)
        z = z + 1
    End If
Next
SVERWEIS2 = arr(welcher_wert)
End Function


da brauchst du nichts mehr umbauen.
Das geht auch so:
Tabelle1
 ABCDEFGH
14OOZWO XJN0NYHJ20D7A89IUTS2Q
2XJN0NY  1234
33T28VU      
44VZ48P      
51DT8XR      
617M8QM      
71TMT4O      
83UOE0O      
93L4LZJ      
10XHJ20D      
11144XEZ      
1246L8E4      
1315LGJT      
141K22NP      
152AQPR3      
16X7A89I      
174U1HG1      
183M6B7S      
1910QCV6      
20XUTS2Q      
21        
Formeln der Tabelle
E1 : =sverweis2($D$1;$A:$B;1;2;SPALTE(A1))
F1 : =sverweis2($D$1;$A:$B;1;2;SPALTE(B1))
G1 : =sverweis2($D$1;$A:$B;1;2;SPALTE(C1))
H1 : =sverweis2($D$1;$A:$B;1;2;SPALTE(D1))
E2 : =SPALTE(A1)
F2 : =SPALTE(B1)
G2 : =SPALTE(C1)
H2 : =SPALTE(D1)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Spalte(A1) ist nur eine Variable die die Formel kopierbar macht.
Habs in zeile2 mal versucht klar zumachen.
ransi
Anzeige
AW: bitte noch kommentieren
20.07.2006 16:06:47
Anton
Hallo Ransi,
Herzlichen Dank.
Hier bei uns im Büro haben wir gerade 40°C erreicht... mein Hirn beginnt zu streiken.
Eine Frage habe ich trotzdem:
Warum diese Formeln kein anderes Format annehmen?
Es dankt und sagt Ciao,
Anton
AW: bitte noch kommentieren
ransi
Hallo
Public Function SVERWEIS2(Kriterium As String, Bereich As Range, SuchSpalte As Integer, _
ErgebnissSpalte As Integer, welcher_wert As Long) As String
Lass das "as string" mal weg.
könnte dann gehn.
ransi
noch offen
20.07.2006 14:45:12
Anton
Hallo Heiko,
erstmal sorry, dass ich Dich vielleicht nicht so gut verstehe, wie es sein sollte.
Du hast sicher Recht.
Also:
Die Ergebnisse kommen aus einer externen Datei: Export-tabelle....
und sollen
erstes Ergebnis in Spalte C
zweites Ergebnis in Spalte D
drittes Ergebnis in Spalte E
.... das kann bis zu 31 Ergebnisse geben. -immer in der selben Zeile-
Du scheinst die Formel aus Deinem Link bestens zu verstehen.
Ich leider nicht. Auch mit Excel-Hilfe kann ich mir den Zusammenhang nicht erklären.
Wenn Du es mir erklärst, begreife ich es vielleicht.
Freue mich auf Deine Antwort.
(Wunschgemäß habe ich "offen" angehakt)
Dank, Servus,
Anton
Anzeige

327 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige