Microsoft Excel

Herbers Excel/VBA-Archiv

Daten von anderen Tabellenblättern

Betrifft: Daten von anderen Tabellenblättern von: Sarbach
Geschrieben am: 11.08.2008 18:11:55

Hallo miteinander

Ich habe ein kleines grosses Problem. Muss bis ende Woche das Problem gelöst haben und ich weiss einfach nicht weiter.

In Tabelle 9000 Zelle I15 hab ich folgende Formel:
=SUMMEWENN('m-9000'!$G$1:$G$1869;B15;'m-9000'!$R$1:$R$1869)

Das heisst, ich gehe mit dieser Formel Daten holen in der Tabelle m-9000. Jetzt möchte ich aber Daten aus vielen verschiedenen Tabellenblättern holen. Und weil ich sehr viele Zeilen habe mit dieser Formel, möchte ich diese Formeln nicht immer wieder manuell ändern müssen. Kopieren kann ich sie nicht, da dazwischen immer wieder Leerzeilen vorhanden sind (müssen).

Ich dachte nun, dass ich beispielsweise in der Spalte "L" vielleicht 10 Tabellennamen auflisten kann, und mit den Namen eine Verknüpfung zu der jeweiligen Tabelle herstellen kann. Wie kann ich das nun machen? 'm-9000'! irgendwie ersetzen und ergänzen mit einer WENN-Formel? Das übersteigt einfach meine Kenntnisse!

Vielen Dank im voraus für eure Hilfe!
Lieber Gruss
Albin

P.S. Die Datei kann ich sonst auch zusenden.

  

Betrifft: AW: Daten von anderen Tabellenblättern von: Tino
Geschrieben am: 11.08.2008 18:19:59

Hallo,
schon mal mit Indirekt versucht, dann kannst du den Bezug als Text übergeben und diesen kannst du verändern.

Beispiel:

 A
1360

Formeln der Tabelle
ZelleFormel
A1=SUMMEWENN(INDIREKT("'m-9000'!$G$1:$G$1869"); B15;INDIREKT("'m-9000'!$G$1:$G$1869"))




Gruß Tino


  

Betrifft: AW: Daten von anderen Tabellenblättern von: Sarbach
Geschrieben am: 11.08.2008 18:28:58

Vielen Dank für den Tipp, funktioniert leider nicht bei mir. Kann ich dir die Datei mal zusenden?
Gruss Albin


  

Betrifft: AW: Daten von anderen Tabellenblättern von: Tino
Geschrieben am: 11.08.2008 18:43:05

Hallo,
vielleicht bin ich ja auf dem Holzweg oder es gibt bessere Lösungsmöglichkeiten wie die von mir
vorgeschlagene.
Daher schlage ich vor, lade sie doch einfach hier hoch,
vertrauliche Sachen kannst du ja löschen, somit können andere auch Ihre Ideen mit einbringen.

Gruß Tino


  

Betrifft: AW: Daten von anderen Tabellenblättern von: Daniel
Geschrieben am: 11.08.2008 20:40:17

Hi



vielleicht würde das über Indirekt in Verbindung mit einer Matrix-Formel gehen, aber die einfachere Lösung ist hier wahrscheinlich, sich eine kleine, Selbstgeschriebene Funktion zu basteln, die diese aufgabe erfüllt:


Public Function SuWeTabs(Suchbereich As String, _
                        Suchwert As Variant, _
                        Summenbereich As String, _
                        Tabellenblätter As Range) As Double

Dim Tabs
Dim T

Tabs = Tabellenblätter.Value
For Each T In Tabs
SuWeTabs = SuWeTabs + WorksheetFunction.SumIf(Sheets(T).Range(Suchbereich), Suchwert.Value,  _
Sheets(T).Range(Summenbereich))
Next

End Function





der Code muss in ein allgemeines Modul kopiert werden und funktioniert dann ähnlich wie SummeWenn mit folgenden Parameter:


1. Parameter: Suchbereich, muss als String eingegeben werden und nicht als Zellbezug)
2. Parameter: Suchwert, (wie in SummeWenn)
3. Parameter: Summenbereich, muss wieder als String eingegeben werden
4. Parameter: Tabellenblätter: Zellbereich (1-Spaltig), in dem die Tabellenblätter aufgelistet sind:

Beispiel: "=SuWeTabs("G1:G1863";B22;"R1:R1863";$L$1:$L$5)



Gruß, Daniel

hier die Datei, die Beispielformel steht in Zeile 22
https://www.herber.de/bbs/user/54527.xls


  

Betrifft: AW: Daten von anderen Tabellenblättern von: Albin
Geschrieben am: 11.08.2008 21:04:08

Hey super, das funktioniert! Hervorragend, danke! :)

Ich hab den Code mal studiert, komme da nicht ganz nach. Da ist die Spalte L ja gar nirgends erwähnt, dort wo doch die Arbeitsmappenbuchstaben steht!? Kann ich da beliebig weit nach unten die Spalte L benutzen?

Gruss albin


  

Betrifft: AW: Daten von anderen Tabellenblättern von: Daniel
Geschrieben am: 11.08.2008 21:22:02

Hi

nein, du musst den Zellbereich, in dem die Tabellenblattnamen ganz genau als 4. Parameter in der Formel angeben.

die Inhalte aus dem angegebenen Zellbereich (also die Tabellenblattnamen) werden zuerst in die Feldvariable TABS kopiert.
T sind dann die einzelnen Tabellenblattnamen.

dh in der Schleife For Each T in TABS wird jeder einzelnen Tabellenblattname ausgewählt und in der funktion verwendet.

Gruß, Daniel


  

Betrifft: AW: Daten von anderen Tabellenblättern von: Albin
Geschrieben am: 13.08.2008 08:42:00

Vielen Dank, ich habs jetzt geschafft!


 

Beiträge aus den Excel-Beispielen zum Thema "Daten von anderen Tabellenblättern"