Riesentabellen umbauen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

hgeosand
Beiträge: 4
Registriert: Di, 15.06.2004 18:06
Wohnort: Bad Pyrmont
Kontaktdaten:

Riesentabellen umbauen

Beitrag von hgeosand » Di, 15.06.2004 19:40

Hallo,
ich hoffe, hier Hilfe zu bekommen, sonst sehe ich meine Masterarbeit platzen...
Zur Sache:
Ich habe hier wahlweise eine Riesentabelle mit ca. 100.000 Datensätzen oder den gleichen Inhalt in 36 einzelnen, unabhängigen Tabellen.
Die (kleinen) Tabellen haben folgenden Aufbau:

1. Spalte Datum, Format tt.mm.jj
2. Spalte Zeit, Format hh:mm:ss
3. Spalte Wert_1, Format Zahl standard
4. Spalte Wert_2, Format Zahl standard

Das Datum läuft immer über einen ganzen Monat, die Uhrzeit über 24h im 0,25-Stunden-Takt.

Was ich brauche:

Eine Datei, in der alle Montage (z.B. 0304Montag.sxc) respektive Dienstage usw. eines Monats enthalten sind. Das soll dann wie folgt aussehen:

1. Spalte Uhrzeit, Format tt.mm.jj
2. Spalte Wert_1 für 1. Montag des Monats, wobei das Tagesdatum in der ersten Zeile als Überschrift stehen sollte.
3. Spalte Wert_1 für 2. Montag des Monats
4. Spalte Wert_1 für 3. Montag des Monats
5. Spalte Wert_1 für 4. Montag des Monats
6. Spalte Wert_1 für 5. Montag des Monats (falls es den gibt), sonst

6. Spalte =MIN() der Zeile
7. Spalte =MAX() der Zeile
8. Spalte =MITTEL() der Zeile
9. Spalte =MEDIAN() der Zeile

In die zweite Tabelle der Datei soll dann noch eine Grafik, die den Bereich von B2 bis I98 (oder J98, wenn es fünf gleiche Wochentage in dem betreffenden Monat gibt) umfassen soll.

Ich habe inzwischen schon eine Menge ausprobiert; am einfachsten wäre es, mit berechneten Bezügen zu arbeiten. Das Problem dabei: wegen der Masse der Daten dauert eine Neuberechnung einer bezogenen Tabelle wie zuvor beschrieben ca. 3 Stunden, und das auf schneller Hardware (Athlon 2800+ mit 1 GByte Hauptspeicher im Rücken)

Von Hand behelfe ich mir jetzt damit, dass ich eine Tabelle für einen Monat öffne (z.B. 0303.sxc für März 2003), unter dem Namen 0303Montag.sxc speichere und dann alle Daten von Hand lösche, die nicht Montage sind. Anschließend mit Strg-X und Strg-V noch ein bisschen hin und her schieben, und schon passt's :-(

So werd ich damit nie fertig; aber jetzt die Macroprogrammierung lernen zu wollen passt zeitlich auch nicht. Ich bin für jeden Vorschlag dankbar, der mir das Leben vereinfacht...

Georg

Gast

Beitrag von Gast » Di, 15.06.2004 20:41

Hallo Georg,
Ich habe inzwischen schon eine Menge ausprobiert; am einfachsten wäre es, mit berechneten Bezügen zu arbeiten. Das Problem dabei: wegen der Masse der Daten dauert eine Neuberechnung einer bezogenen Tabelle wie zuvor beschrieben ca. 3 Stunden, und das auf schneller Hardware (Athlon 2800+ mit 1 GByte Hauptspeicher im Rücken)
wie ist denn das praktisch umgesetzt? (ich arbeite zugegeben nicht mit so großen Tabellen, allerdings erscheint mir die Rechenzeit extrem lang da ich mich glaube zu erinnern das ich mal ExcelTabellen hatte und dort Berechnungen durchführte, einige 10.000 Sätze mit PIII-500 256MB Windows 2000 und Rechenzeiten unter 15 min und eine Deiner Tabellen enthält doch weniger als 3000 Sätze)
Von Hand behelfe ich mir jetzt damit, dass ich eine Tabelle für einen Monat öffne (z.B. 0303.sxc für März 2003), unter dem Namen 0303Montag.sxc speichere und dann alle Daten von Hand lösche, die nicht Montage sind. Anschließend mit Strg-X und Strg-V noch ein bisschen hin und her schieben, und schon passt's
Wenn es helfen würde die Wochentage (halb-)automatisch zu separieren, wäre ein pragmatischer Vorschlag:
mache eine zusätzliche Spalte in die Tabelle und füge in alle Zellen der Spalte die Formel zur Wochentagsberechnung anhand des Datums ein
die zusätzliche Spalte enthält nun Werte von 1 bis 7
setze einen Autofilter und stelle ihn auf 1
markiere alle gefilterten Werte und kopiere sie in ein neues Blatt
wiederhole das mit Autofilter 2...7

mal aus Interesse: Wie groß sind den Deine Tabellendokumente bezüglich der Dateigröße?

Gruß
Stephan

hgeosand
Beiträge: 4
Registriert: Di, 15.06.2004 18:06
Wohnort: Bad Pyrmont
Kontaktdaten:

Beitrag von hgeosand » Di, 15.06.2004 22:28

Hallo Stefan,
wie ist denn das praktisch umgesetzt? (ich arbeite zugegeben nicht mit so großen Tabellen, allerdings erscheint mir die Rechenzeit extrem lang da ich mich glaube zu erinnern das ich mal ExcelTabellen hatte und dort Berechnungen durchführte, einige 10.000 Sätze mit PIII-500 256MB Windows 2000 und Rechenzeiten unter 15 min und eine Deiner Tabellen enthält doch weniger als 3000 Sätze)
Die große Tabelle enthält -rechnerisch- ca. 128.000 Datensätze zu je 8 Zellen, also knapp an eine Million gefüllte Zellen...
Wenn es helfen würde die Wochentage (halb-)automatisch zu separieren, wäre ein pragmatischer Vorschlag:
mache eine zusätzliche Spalte in die Tabelle und füge in alle Zellen der Spalte die Formel zur Wochentagsberechnung anhand des Datums ein
die zusätzliche Spalte enthält nun Werte von 1 bis 7
setze einen Autofilter und stelle ihn auf 1
markiere alle gefilterten Werte und kopiere sie in ein neues Blatt
wiederhole das mit Autofilter 2...7
Ja, das hab ich gerade probiert, geht schon mal deutlich schneller :-)
mal aus Interesse: Wie groß sind den Deine Tabellendokumente bezüglich der Dateigröße?
Die große Tabelle ca. 16 MB, die kleineren Monatstabellen (mit denen es dann auch flott geht) ca. 20 kB.
Gruß
Stephan
Georg

Gast

Beitrag von Gast » Mi, 16.06.2004 11:46

Hallo Georg,
Die große Tabelle enthält -rechnerisch- ca. 128.000 Datensätze zu je 8 Zellen, also knapp an eine Million gefüllte Zellen...
Naja, dann hatte ich das falsch verstanden, denn ich dachte es handele sich um eine der kleinen Tabellen und ich wollte eigentlich nur verstehen warum es so lange dauert das zu berechnen. Falls Du nämlich im Tabellenblatt Formeln eigefügt hast und es dann so lange dauert, wäre die Information ansich schon interessant gewesen.

Allerdings, da es sich nun um die große Tabelle handelt, verstehe ich nun nicht mehr warum 3 Stunden Rechenzeit das Problem sind. Denn diese 3 Stunden sind ja dann bezüglich aller Daten im Sinne Du mußt nicht 36 mal 3 Stunden rechnen?

Gruß
Stephan

hgeosand
Beiträge: 4
Registriert: Di, 15.06.2004 18:06
Wohnort: Bad Pyrmont
Kontaktdaten:

Beitrag von hgeosand » Mi, 16.06.2004 11:59

Na ja, das Problem ist nur, dass bei jeder Veränderung an einer Zelle ein Aktualisierungslauf erfolgt, der dann diese Zeit dauert.. Kannst Du Dir vorstellen, wie lange es dann braucht, ein paar Varianten bei der Auswertung durchzuspielen?

Deshalb: Ich brauche die vielen kleinen, schnellen Tabellen, um mittels Formeln in Zellen auf die Schnelle Varianten durchtesten zu können. Und das Umbauen der Tabellen muss ich irgendwie automatisieren.
Dein Tipp mit den Autofiltern hilft schon mal weiter; lästig ist die Sache aber immer noch ;-)

Gast

Beitrag von Gast » Mi, 16.06.2004 18:16

Bereite eine der kleinen Tabellen so auf das für Tabellenblatt1:
Zelle B1 (Überschrift: Datum)
Zelle C1 (Überschrift: Zeit)
Zelle D1 (Überschrift: Wert1)
Zelle E1 (Überschrift: Wert2)
die Spalten B-E müssen nun Deine Werte enthalten
schreibe in Zelle A2 die Formel: "=WOCHENTAG(B2;2)"
kopiere diese Formel in alle Zellen der Spalte A
sortiere die Tabelle so das die Werte chronologisch sortiert sind

richte Tabellenblatt2 wie folgt ein:
Zelle A3 (Zeit: 00:00) bis Zelle A98 (Zeit: 23:45)
Zelle B1 -->Überschrift: Montag_1 (verbinden mit Zelle C1)
Zelle B2 -->Überschrift: Wert1
Zelle C2 -->Überschrift: Wert2

gehe wieder in Tabellenblatt1 und suche in Spalte A von oben gerechnet den ersten wert welcher 1 ist (1 entspricht Montag)
(dieser Wert sollte dem ersten Montag des Monats um 00:00 Uhr entsprechen)
markiere die entsprechende Zelle in Spalte D die mit der gerade gefundenen in Spalte A korrespondiert

gehe in Tabellenblatt2 und setze der Cursor in Zelle B3
trage die Formel ein: "=Tabelle1.D2", wobei Du D2 durch die Zellbezeichnung ersetzen mußt, welche der Zelle entspricht die Du gerade in Tabellenblatt1 markiert hast

kopiere die gerade erstellte Formel in alle Zellen von B3-B98 und C3-C98 in Tabellenblatt2

die Werte sollten nun für den erten Montag richtig angezeigt werden.

mache Dir in Tabellenblatt2 noch Spalten für den 2.Montag usw. und verfahre analog

Wenn das fertig ist sollte es für eine der 36 Dateien funktionieren.

Du brauchst das Ganze nun nur 6mal zu wiederholen, da der erste Tag eines Monats entweder Montag oder Dienstag... sein kann.

Letztlich hast Du sieben Dateien, in denen Du in Tabellenblatt1 nur die Werte Deiner 36 Dateien hineinkopieren mußt und alles wird sortiert. Du mußt nur beachten das Du die Ausgangswerte in die richtige Datei kopierst jenachdem was für ein Wochentag der erste Tag des Monats ist.

So wäre mein Vorschlag. Ich denke mal das Ganze ist in weniger als 2 Stunden zu schaffen und dann geht es später ja alles automatisch.

Stephan

hgeosand
Beiträge: 4
Registriert: Di, 15.06.2004 18:06
Wohnort: Bad Pyrmont
Kontaktdaten:

Der Lösung ein Stück näher...

Beitrag von hgeosand » Sa, 19.06.2004 22:07

Hallo Stephan,
zunächst vielen Dank für Deinen Vorschlag. Ich habe angefangen, danach zu arbeiten, ging auch ganz gut.
Nach einer Weile (3 Tabellen) wurde es mir dann aber doch wieder zu blöd:
Wofür bitteschön habe ich einen Rechner, wenn ich zigmal die gleiche Tastenfolge/Mausbewegung selbst machen soll? Alsobin ich auf die Suche gegangen...
Jetzt habe ich eine Lösung, die auf der Basis von berechneten Zellen aufsetzt:
Mit dem Befehl
=ADRESSE(Zeilen-Nr;Spalten-Nr.)
kann man jede Zelle als Textfunktion darstellen. So gibt z.B. der Befehl
=TABELLE(2;5) das Feld $E$2 aus Tabelle 1 aus; in der Ergebniszelle steht dann Tabelle1.$E$2.

Mit dem Befehl =INDIREKT(Zeile;Spalte;AbsolutJaNein;Tabellenname) kann man den Inhalt beliebiger Zellen auslesen. Schachtelt man das ineinander, ist man am Ziel :-))

Jetzt habe ich mir eine Vorlage gebastelt, mit der die Auswertung praktisch automatisch läuft.

Vielen Dank für die Denkanstöße, auch an die anderen Mithelfer.

Georg

Antworten