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

Zellwerte aus verschiedenen Tabellen sammeln

Forumthread: Zellwerte aus verschiedenen Tabellen sammeln

Zellwerte aus verschiedenen Tabellen sammeln
28.02.2008 11:53:00
Hans-Jörg
Hallo,
habe eine Mappe mit einer Artikelliste auf mehreren Tabellen verteilt.
Tabelle1 = 000000 - 100000
Tabelle2 = 100001 - 200000
Tabelle3 = 200001 - 300000
......
Tabelle7 = 600001 - 7000000
ca 5000 Datensätze
In der Spalte AA wird in allen Tabellen ein Preis eingetragen.
Tabelle 8 besitzt alle Artikel und soll in der Spalte G die Preise der Tabellen1 - T7 einsammeln.
Mein Ansatz währe eine große WENN() Verschachtelung mit ISTNV(SVERWEIS()) und SVERWEIS() da in allen Tabellen nur der Preis in Spalte AA zur Artikelnummer in Spalte A gesucht wird.
Wer kann hier eine bessere Lösung finden.
vilen Dank
Hans-Jörg

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellwerte aus verschiedenen Tabellen sammeln
29.02.2008 16:25:33
fcs
Hallo Hans-Jörg,
du solltest keine Verschachtelung machen. Gibt wegen der vielen WENNs und SVERWEISE ein Problem.
Besser ist hier zu Addieren. Ergebnis 0 bedeutet dann ggf. nicht gefunden.

=WENN(ISTFEHLER(SVERWEIS(A2;Tabelle1!$A:$AA;1;FALSCH));0;
SVERWEIS(A2;Tabelle1!$A:$AA;27;FALSCH))+
WENN(ISTFEHLER(SVERWEIS(A2;Tabelle2!$A:$AA;1;FALSCH));0;
SVERWEIS(A2;Tabelle2!$A:$AA;27;FALSCH))+ u.s.w.


Eine Alternative wäre eine benutzerdefinierte VBA-Funktion:


Function SVERWEIS_Tabs(Suchen As Variant, _
Tabellenbereich As Variant, _
Tabelle1Bereich As Range, _
TabelleLetzteBereich As Range, _
SpalteWert As Long, _
Optional boVerweis As Boolean = True) As Variant
'SVERWEIS über mehrere Tabellen
'Suchen = gesuchter Wert
'Tabellenbereich = Bereich über meherere Tabellen: Tabelle1:Tabelle7!$A:$AA
'Dieser Parameter ist erforderlich, damit bei Änderungen in den Blättern zwischen _
1. und letem Blatt das Formelergebnis aktualisert wird.
'Tabelle1Bereich = Bereich in der 1. Tabelle: Tabelle1!$A:$AA
'TabelleLetzteBereich = Bereich in der letzten Tabelle: Tabelle7!$A:$AA
'Die Zell-Bereiche für die 3 Bereiche müssen identisch sein, damit Berechnungen _
und Aktualisierung der Formelergebnisse korrekt erfolgen.
'SpalteWert = Spalte im Bereich aus der das Ergebnis ausgelesen werden soll
'boVerweis = entspricht der Funktion des 4. parameters in SVERWEIS-Funktion
'Formelbeispiel: _
=SVERWEIS_Tabs(A2;Tabelle1:Tabelle7!$A:$AA;Tabelle1!$A:$AA;Tabelle7!$A:$AA;27;FALSCH)
Dim iIndex As Integer, Tabelle1 As String, Tabelle2 As String, Zellen As Range
Dim Bereich As String
Tabelle1 = Tabelle1Bereich.Parent.Name
Tabelle2 = TabelleLetzteBereich.Parent.Name
Bereich = Tabelle1Bereich.Address
On Error GoTo fehler
SVERWEIS_Tabs = "#NV"
For iIndex = Worksheets(Tabelle1).Index To Worksheets(Tabelle2).Index
Set Zellen = Worksheets(iIndex).Range(Bereich)
SVERWEIS_Tabs = Application.WorksheetFunction.VLookup(Suchen, Zellen, SpalteWert, _
boVerweis)
Exit For
weiter:
Next
Exit Function
fehler:
Resume weiter 'falls VLookup nichts findet
End Function


Das Ganze wird bei 5000 Datenzeilen jedoch ziemlich rechenintensiv.
Gruß
Franz

Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige