Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
164to168
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
164to168
164to168
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Auswertung aller Tabellenblätter

Auswertung aller Tabellenblätter
30.09.2002 14:38:24
Oliver Olt
Guten Tag,
ich bin VBA Leihe und muss für meine Firma eine Excel Datei bauen. Einiges hab ich mir bereits aus dem Excel Server rausgelesen, aber jetzt stehe ich vor einem Problem:

Meine Datei funktioniert wie folgt:
per Schaltfläche wird ein neues Tabellenblatt (nach Tagesdatum) erstellt und die Werte aus dem Vortag in das neue Tabellenblatt übernommen/kopiert. Datei kann also viele Tabellenblätter nach Tagesdatum enthalten!

Jetzt soll es eine Zusätzliche Funktion geben die es erlaubt, bestimmte Zellen aus allen Tagesdatum-Tabellenblättern (1 bis x)und/oder per Tabellenblattauswahl (wieder per Button)
in ein extra Tabellenblatt "Verlauf" in einm Diagramm darzustellen. Die Achsen sollen wie folgt aufgebaut sein:
X - Werte aus jedem/oder Ausgewählten Tabellenblättern
Y - Tabellenblättnamen (in unserem Fall das Tagesdatum)

Das im "Verlauf" Tabellenblatt gebalstelte Diagramm sollte dynamisch sein, damit neu kopierte Tagesdatums-Tabellenblätter automatisch mit ausgewertet werden (oder per "Diagramm-aktualisieren" Schaltfläche)

Wer kann mir bei dieser (für mich) zu kniffeligen Aufgabe helfen? Wäre sehr dankbar!

mfg

Olt Oliver

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Auswertung aller Tabellenblätter
30.09.2002 15:51:01
Chris
Hallo Oliver

Verlangst etwas viel auf einmal. Die nachstehende Routine trägt die Werte von Blatt1, Blatt2, Blatt3 etc. zusammen und fasst diese auf dem Blatt "Verlauf" als Liste zusammen.

Dim a
On Error GoTo errorhandler:
For i = 1 To 370
Sheets("Blatt" & i).Select
a = ActiveSheet.Cells(1, 1).Formula
Sheets("Verlauf").Select
For y = 1 To 100000
If ActiveSheet.Cells(y, 1).Formula = "" Then GoTo ende
Next y
ende:
ActiveSheet.Cells(y, 2).Formula = a
ActiveSheet.Cells(y, 1).Formula = i
Next i
Exit Sub
errorhandler:

Die Routine holt die Werte jeweils aus Zelle A1 ab.

Du musst verstehen, dass deine Beschreibung diverse unbekannte enthält. Angefangen wo werden die Werte abgeholt (A1?), welche Formatierung, wie genau sind die Blätter beschriftet, was für ein Diagramm, Legende ja oder nein etc.

Würde dir deshalb empfehlen ein Problem nach dem anderen zu posten.

Gruss
Chris

Anzeige
Re: Auswertung aller Tabellenblätter
01.10.2002 09:44:42
Oliver Olt
Hallo Chris,

vielen Dank für Dein Script! Hat mich schon mal ein bisschen anders denken lassen, aber leider noch nicht weiter gebracht!

Ich versuche es noch mal zu erklären (bin darin nicht sehr gut:(

Meine Excel Datei besteht aus vielen Tabellenblättern, die mit dem jeweiligen (erstell) Tagesdatum beschriftet wurden. Das heisst, Blatt1 hat den Namen "01.08.2002", Blatt2 "02.08.2002" u.s.w.
Jetzt soll es in dieser Datei noch ein weiteres Blatt geben Namens "Verlauf", in dem alle in dieser Datei enthaltenen Datums-Tabellenblätter (egal wie viele) nach dem Feld B44 Ausgewertet werden sollen. Die Jeweiligen Werte des Feldes und der dazugehörige Tabellenblattnamen sollen in eine Tabelle im Blatt "Verlauf" eingetragen werden.

Dabei muss darauf geachtet werden, dass Blatt "Verlauf" nicht in die Auswertung mit einbezogen wird, sondern wirklich nur die Datums-Tabellenblätter! Das ist für meine lächerlichen VBA-Kenntnisse zu hoch!

mfg

Oliver

Anzeige
Re: Auswertung aller Tabellenblätter
01.10.2002 11:11:58
Chris
Gruss
Chris

Dim a, b
On Error GoTo errorhandler
For i = 1 To 100000
Worksheets(i).Select
a = ActiveSheet.Name
b = ActiveSheet.Cells(44, 2).Formula
Sheets("Verlauf").Select
For y = 1 To 100000
If ActiveSheet.Cells(y, 1).Formula = "" Then GoTo ende
Next y
ende:
If a <> "Verlauf" Then
ActiveSheet.Cells(y, 1).Formula = Format(a, "dd.mm.yyyy")
ActiveSheet.Cells(y, 2).Formula = b
End If
Next i
Exit Sub
errorhandler:

Re: Auswertung aller Tabellenblätter
01.10.2002 11:59:23
Oliver Olt
Super! Vielen Dank!

Langsam blick ichs! Jetzt funktioniert es prima! OK dann zum STEP2:

aus der eben erstellten Tabelle soll nun ein Diagramm erstellt werden:

mit zwei Achsen + Beschriftung - Liniendiagramm

Y - Datumstabellenblattnamen
X - Werte (aus B44)

Wie baut man das aus VBA Befehlen zusammen, damit es auf Knopfdruck funktioniert?

Eine Sache gibt es auch noch. Wenn ich im Tabellenblatt "Verlauf" auf den Button Verlauf klicke, wird Dein Script abgearbeitet und die Werte werden in eine Tabelle eingetragen. Bei einem erneuten klick, soll aber die alte Tabelle entfernt werden und neu begonnen werden! Wie mache ich das?

Wie kann ich Dir danken? (Flasche Bier per Post oder so?)

mfg

Oliver

Anzeige
Re: Auswertung aller Tabellenblätter
01.10.2002 12:21:44
Oliver Olt
Super! Vielen Dank!

Langsam blick ichs! Jetzt funktioniert es prima! OK dann zum STEP2:

aus der eben erstellten Tabelle soll nun ein Diagramm erstellt werden:

mit zwei Achsen + Beschriftung - Liniendiagramm

Y - Datumstabellenblattnamen
X - Werte (aus B44)

Wie baut man das aus VBA Befehlen zusammen, damit es auf Knopfdruck funktioniert?

Eine Sache gibt es auch noch. Wenn ich im Tabellenblatt "Verlauf" auf den Button Verlauf klicke, wird Dein Script abgearbeitet und die Werte werden in eine Tabelle eingetragen. Bei einem erneuten klick, soll aber die alte Tabelle entfernt werden und neu begonnen werden! Wie mache ich das?

Wie kann ich Dir danken? (Flasche Bier per Post oder so?)

mfg

Oliver

Anzeige
Re: Auswertung aller Tabellenblätter
01.10.2002 12:39:02
Oliver Olt
Super! Vielen Dank!

Langsam blick ichs! Jetzt funktioniert es prima! OK dann zum STEP2:

aus der eben erstellten Tabelle soll nun ein Diagramm erstellt werden:

mit zwei Achsen + Beschriftung - Liniendiagramm

Y - Datumstabellenblattnamen
X - Werte (aus B44)

Wie baut man das aus VBA Befehlen zusammen, damit es auf Knopfdruck funktioniert?

Eine Sache gibt es auch noch. Wenn ich im Tabellenblatt "Verlauf" auf den Button Verlauf klicke, wird Dein Script abgearbeitet und die Werte werden in eine Tabelle eingetragen. Bei einem erneuten klick, soll aber die alte Tabelle entfernt werden und neu begonnen werden! Wie mache ich das?

Wie kann ich Dir danken? (Flasche Bier per Post oder so?)

mfg

Oliver

Anzeige
Re: Auswertung aller Tabellenblätter
01.10.2002 13:17:21
Chris
Also erstmal den Code so, dass er die alten Daten überschreibt und nicht unten anhängt. Zeile 1 wird dabei ausgelassen, da ich davon ausgehe, dass darin der Titel z.B. Datum, Wert steht.

Fortsetzung folgt.

Gruss
Chris

Dim a, b
y = 0
For i = 1 To Worksheets.Count
Worksheets(i).Select
a = ActiveSheet.Name
b = ActiveSheet.Cells(44, 2).Formula
Sheets("Verlauf").Select
y = y + 1
If a <> "Verlauf" Then
ActiveSheet.Cells(y, 1).Formula = Format(a, "dd.mm.yyyy")
ActiveSheet.Cells(y, 2).Formula = b
End If
Next i
Sheets("Verlauf").Select
For z = Worksheets.Count + 1 To Range("A1").End(xlDown).Row
ActiveSheet.Cells(z, 1).Formula = ""
ActiveSheet.Cells(z, 2).Formula = ""
Next z

Anzeige
Re: Auswertung aller Tabellenblätter
01.10.2002 13:32:38
Chris
Oliver,

Mit folgendem Makro erzeugst du ein Diagramm als neues Blatt (Name: "Diagramm"). Der Bezugsbereich ist variabel.

Das Problem ist nun, wenn das Blatt Diagramm bereits vorhanden ist. Habe es zwar so hinbekommen, dass er das bestehende Blatt automatisch löscht und neu erstellt, jedoch muss man das löschen jedesmal bestätigen. Irgendwie wäre dies sicher zu unterdrücken, jedoch weiss ich nicht wie.

Gruss
Chris

Dim a
On Error GoTo errorhandler
Sheets("Diagramm").Select
ActiveWindow.SelectedSheets.Delete
errorhandler:
a = Range("A1").End(xlDown).Row
Range("A1:B" & a).Select
Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets("Verlauf").Range("A1:B" & a), PlotBy _
:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Diagramm"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Wert"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With

Anzeige
Re: Auswertung aller Tabellenblätter
01.10.2002 14:09:44
Oliver Olt
ok, das genügt mir, den Rest lerning by doing!

Ich möchte mich herzlich für die Hilfe bedanken!

mfg

Oliver

Re: Auswertung aller Tabellenblätter
01.10.2002 14:15:59
Chris
Gern geschehen...

have fun
Chris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige