2.8k Aufrufe
Gefragt in Tabellenkalkulation von felixso Einsteiger_in (79 Punkte)
Hallo zusammen,

ich versuche folgendes Problem zu lösen:
ich habe eine Excel Mappe mit mehreren Tabellenblättern und Datensätzen.
Alle Tabellenblätter enthalten die gleiche Gliederung.
Jeweils unterschiedlich ist jedoch das Datum und die Bewertung eines jeden Datensatzes.

Mein Ziel:
ich möchte in einem neuen Tabellenblatt darstellen, welche Bewertung wie oft in welchem Zeitraum vorgenommen wurde.

Leider ist mir noch keine Lösung eingefallen, wie ich das ohne ein Makro realisieren kann. (die Funktion "zählenwenn" funktioniert ja nur mit einer Bedingung)
Nachdem ich mich ein bisschen mit VBA beschäftigt habe, dachte ich mir, dass es damit möglich sein muss.
Also müsste man ein Makro schreiben, dass alle Datensätze aus dem Zeitraum xy in eine neue Tabelle kopiert.
Zum Beispiel:
Es sollen alle Datensätze der Arbeitsblätter kopiert werden, die in der Spalte Datum im Zeitraum 01.01.2009 – 30.06.2009 erfasst wurden.
Möglich sein müsste das doch mit einer "for each next" Schleife und "selection.SpecialCells(xlCellTypeSameValidation) oder?

Aus dieser neuen Tabelle könnte man dann mit der Funktion "zählenwenn" die entsprechenden Werte erhalten. (das könnte man aber auch noch in das Makro integrieren, nur muss dafür erstmal der erste Teil funktionieren…)

Zum besseren Verständnis habe ich die Arbeitsmappe hier hochgeladen:

http://rapidshare.de/files/48028719/Mappe1.xls.html

Vielen Dank für die Unterstützung!

7 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo felixso,

da brauchst Du kein Makro, das geht auch per Formel.

Kopiere folgende Formel in C5 der Auswertungstabelle und kopiere sie
in beide Richtungen

=SUMMENPRODUKT((--
LINKS('2007'!$J$2:$J$21;1)=$A5)*(RECHTS('2007'!$J$2:$J$21;1)=C$4
))+SUMMENPRODUKT((--
LINKS('2008'!$J$2:$J$21;1)=$A5)*(RECHTS('2008'!$J$2:$J$21;1)=C$4
))+SUMMENPRODUKT((--
LINKS('2009'!$J$2:$J$21;1)=$A5)*(RECHTS('2009'!$J$2:$J$21;1)=C$4
))


Gruß
Rainer
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo noch mal,

sorry, ich hatte das Datum vergessen.

=SUMMENPRODUKT((--
LINKS('2007'!$J$2:$J$21;1)=$A5)*(RECHTS('2007'!$J$2:$J$21;1)=C$4)*(JA
HR('2007'!$G$2:$G$21)=2009)*(MONAT('2007'!$G$2:$G$21)>=1)*(MONAT('
2007'!$G$2:$G$21)<=6))+SUMMENPRODUKT((--
LINKS('2008'!$J$2:$J$21;1)=$A5)*(RECHTS('2008'!$J$2:$J$21;1)=C$4)*(JA
HR('2008'!$G$2:$G$21)=2009)*(MONAT('2008'!$G$2:$G$21)>=1)*(MONAT('
2008'!$G$2:$G$21)<=6))+SUMMENPRODUKT((--
LINKS('2009'!$J$2:$J$21;1)=$A5)*(RECHTS('2009'!$J$2:$J$21;1)=C$4)*(JA
HR('2009'!$G$2:$G$21)=2009)*(MONAT('2009'!$G$2:$G$21)>=1)*(MONAT('
2009'!$G$2:$G$21)<=6))


Gruß
Rainer
0 Punkte
Beantwortet von felixso Einsteiger_in (79 Punkte)
Hallo Rainer!

Vielen Dank für die schnelle Hilfe und die Antworten!!!

Wenn ich diese Formel eintrage, erscheint leider nur eine "0" in der Zelle "C5".
Die Gründe warum ich denke, dass es per Makro vielleicht besser ist, sind folgende:
- die Tabellen enthalten in der Realität ca. jeweils 500 Datensätze (was aber nicht das Problem wäre...)
- die Ideallösung wäre eine Auswertung "auf Knopfdruck", d. h., dass man letztendlich bei Makrostart per Auswahlfenster ein Anfangsdatum und ein Enddatum auswählen kann.
Für diesen individuellen Zeitraum soll dann die Auswertung erfolgen.
- die von mir hochgeladene Excel Tabelle enthält auch einen Makroentwurf der leider nicht funktioniert, weil ich ein in einem Buch gefundenes Makro geändert habe und kaum VBA Kenntnisse habe...
(vor allem weiss ich nicht wie man die Funktion xlSpecialCells richtig anwendet...)

Könntest Du mir auch bei diesem Problem helfen?

Gruß

Felix
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Felix,

wollte nur demonstrieren, dass es geht und die Formel funktioniert tatsächlich in
der Beispieldatei. Hast irgendwo einen Fehler gemacht oder die Beispieldatei
entspricht nicht dem Original.

Die Formel kann man auch erheblich verkürzen, wenn man Bereichsnamen
einsetzt.
Habe das im Anhang mal praktiziert.
Dabei ist es unerheblich, wie viel Zeilen Deine Arbeitsblätter haben, Du brauchst
keine Formel mehr zu ändern.
Lediglich das Start- u. Zieldatum ist einzugeben.
Schau es Dir mal an.

www.file-upload.net/download-1806287/Felix.xls.html

Gruß
Rainer
0 Punkte
Beantwortet von felixso Einsteiger_in (79 Punkte)
Hallo Rainer,

nachdem ich Deine Datei heruntergeladen habe, habe ich festgesteltt, dass sie genau mein Problem löst!!!
Hätte nicht gedacht, dass es mit einer Formel möglich ist...

Vielen Dank!!!
Felix
0 Punkte
Beantwortet von felixso Einsteiger_in (79 Punkte)
Hallo Rainer,

nachdem ich endlich das Prinzip deiner Lösung verstanden habe, habe ich festgestellt, dass es ein kleines Problem damit gibt.

Bei der Definition von Namensbereichen ist das Problem, dass alle 3 Tabellen die gleiche Anzahl an Datensätzen benötigen.
Sonst ist keine Auswertung möglich, bzw. es kommt zu einer Fehlermeldung.

Lösen kann man das, wenn man individuell die von die hier gepostete Formel etwas umstellt und die Bereiche, die Datensätze enthalten immer manuell anpasst und nicht auf die in der von Dir geposteten Tabelle definierten Namensbereiche zurückgreift.

Deshalb meine Frage:
kann man die Formel in der von dir geposteten Excel Tabelle auch so ändern, dass sie automatisch alle Datensätze berücksichtigt, wenn jedes Tabellenblatt unterschiedlich viele Datensätze enthält?

Vielen Dank schon mal im Voraus!

Gruß
Felix
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Felix,

sorry, da war in den Definitionsformeln noch ein Bezugsfehler, den ich jetzt
beseitigt habe.
Die Listenlänge von 2008 und 2009 bezog sich auf die Länge von 2007.


www.file-upload.net/download-1807898/Felix_2.xls.html

Gruß
Rainer
...