SVERWEIS Abfrage von mehreren Arbeitsblättern.

Bild

Betrifft: SVERWEIS Abfrage von mehreren Arbeitsblättern. von: Josef
Geschrieben am: 17.03.2005 12:03:36

Hallo!

Ist es bitte möglich , mittels SVERWEIS eine Abfrage über mehrere Arbeitsblätter durchzuführen?

Beispiel:

Ist der Wert in Tabelle1 nicht vorhanden, dann durchsuche Tabelle2 usw.


Danke


Josef

Bild


Betrifft: AW: SVERWEIS Abfrage von mehreren Arbeitsblättern. von: tom_r
Geschrieben am: 17.03.2005 12:51:01

Hi,

probier das: =WENN(ISTFEHLER(SVERWEIS(A2;Tabelle2!$A$2:$B$16;2;0));SVERWEIS(A2;Tabelle3!$A$2:$B$16;2;0);SVERWEIS(A2;Tabelle2!$A$2:$B$16;2;0))

Gruß

Thomas


Bild


Betrifft: SVERWEIS über mehrere Blätter - mit UDF von: Boris
Geschrieben am: 17.03.2005 13:20:55

Hi Josef,

...ich hab kürzlich eine ähnliche Funktion für ZÄHLENWENN über mehrere Blätter geschrieben - und sie jetzt kurzerhand für den SVERWEIS umgebaut.

Option Explicit


Function SVERWEIS3D(Bezug As Variant, Suchkriterium As Variant, Spaltenindex As Integer) As Variant
Dim s           As String       'Formelstring
Dim WsStart     As String       'Name Erstes Blatt
Dim WsEnde      As String       'Name Letztes Blatt
Dim iCount      As Integer      'Zähler vom 1. bis zum letzten Blatt
Dim i           As Integer      'Index des 1. Blattes
Dim j           As Integer      'Index des letzten Blattes
Dim B           As Boolean      'Prüfung, ob Mehrfachbezug vorhanden
Dim sBereich    As String       'Bereich auslesen bei Mehrfachmarkierung
Const MB        As String = "*:*!*,*" 'typische Syntax für Mehrfachbereich
s = Application.Caller.Formula 'Formel auslesen
'Prüfen, ob Mehrfachmarkierung vorliegt
B = s Like MB
If B Then 'Falls Mehrfachbezug vorhanden in der Form: Tabelle1:Tabelle3!A1:C100
    'Formelstring innerhalb der Klammern auslesen und an s übergeben
    s = Mid(s, InStr(1, s, "(") + 1, InStr(1, s, ")") - InStr(1, s, "(") - 1)
    'Erstes Blatt auslesen
    WsStart = Trim(Left(s, InStr(1, s, ":") - 1))
    'Letztes Blatt auslesen
    WsEnde = Trim(Mid(s, InStr(1, s, ":") + 1, InStr(1, s, "!") - InStr(1, s, ":") - 1))
    'Zellbereich auslesen
    sBereich = Trim(Mid(s, InStr(1, s, "!") + 1, InStr(1, s, ",") - InStr(1, s, "!") - 1))
    'Index des 1. Blattes ermitteln
    i = Worksheets(WsStart).Index
    'Index des letzten Blattes ermitteln
    j = Worksheets(WsEnde).Index
    'Schleife über alle tangierten Blätter
    For iCount = i To j
        With WorksheetFunction
            If .CountIf(Sheets(iCount).Range(sBereich).Columns(1), Suchkriterium) Then
                SVERWEIS3D = .VLookup(Suchkriterium, Sheets(iCount).Range(sBereich), Spaltenindex, 0)
                Exit Function
            Else
                SVERWEIS3D = "x" * 1
            End If
        End With
    Next iCount
Else 'Falls kein Mehrfachbezug vorhanden: Einfacher SVERWEIS
        SVERWEIS3D = WorksheetFunction.VLookup(Suchkriterium, Bezug, Spaltenindex, 0)
End If
End Function


Funktionssyntax:

=SVERWEIS3D(Bezug;Suchkriterium;Spaltenindex)

Den klassischen 4. Paramter des SVERWEIS (Bereich_Verweis) hab ich einfach mal weggelassen - es wird NUR auf exakte Übereinstimmung geprüft.

Für den Parameter Bezug kannst du hier auch eine Mehrfachmarkierung (erzeugt bei gedrückter Shift-Taste) einsetzen - also z.B.:

=SVERWEIS3D(Tabelle1:Tabelle3!B1:Z100;A1;2)

Gesucht wird der Wert aus A1 in der Matrix B1:Z100 in allen Blättern, die zwischen Tabelle1 und Tabelle3 liegen. Sobald ein Treffer vorliegt, wird das Ergebnis (hier aus der 2. Spalte) geliefert.

Natürlich kannst du diese eigene Funktion auch nur auf 1 Blatt anwenden - dann ist es nix anderes, als der normale SVERWEIS.

Wird nix gefunden, dann gibt es #WERT!.

Um die Funktion einzubinden:
VBA-Editor mit Alt+F11 öffnen, Einfügen - Modul - und dann in das rechte Fenster den gesamten Code reinkopieren.
Editor dann wieder schließen - und du kannst die Funktion wie beschrieben anwenden.

Grüße Boris


Bild


Betrifft: AW: SVERWEIS über mehrere Blätter - mit UDF von: Josef
Geschrieben am: 17.03.2005 14:55:32

Hallo Boris!

Danke für Deine Hilfe.

Ich habe folgende Formel eingegeben:


=SVERWEIS3D("'[BHZ.xls]01_0999:40_9999'!";$A$2:$F$20000;A2;6)


Ich erhalte jetzt die Meldung #Wert, obwohl der Wert vorhanden wäre.

Was mache ich hier bitte noch falsch?


Danke


Josef


Bild


Betrifft: Die UDF geht NICHT mappenübergreifend... von: Boris
Geschrieben am: 17.03.2005 15:48:25

Hi Josef,

...sondern eben nur innerhalb einer Mappe.

Grüße Boris


Bild


Betrifft: AW: Die UDF geht NICHT mappenübergreifend... von: Josef
Geschrieben am: 18.03.2005 07:32:27

Danke Boris



Josef


 Bild

Beiträge aus den Excel-Beispielen zum Thema "SVERWEIS Abfrage von mehreren Arbeitsblättern."