Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Excel: Diagramm erstellen

Empfohlene Antworten

Veröffentlicht

Ich habe hier die Aufgabe aus einer (großen) Exceldatei ein Diagramm auszugeben.

Kein Problem denk ihr? Dann mal fleißig weiter lesen:

Die Exceldatei wird automatisch generiert und den Generierungsprozess kann ich nicht beeinflussen.

Sie besteht aus mehreren Seiten. Auf jeder Seite ist genau eine Tabelle abgebildet. Die Seiten sind nach dem Datum benannt an dem sie der Exceldatei hinzugefügt wurden.

Die Tabellen zeigen eine detaillierte Übersicht über den Festplattenspeicherplatz von Laufwerk C eines Rechners.

Die Aufzeichnungen haben Mitte Januar begonnen und seit dem wurde der Exceldatei für jeden Tag eine neue Seite mit entsprechender Tabelle hinzugefügt (Rund 120 Seiten).

Meine Aufgabe ist es nun ein Diagramm zu erstellen, welches den max. Festplattenspeicherplatz, den belegten Platz und den freien Platz im bezug zum Datum anzeigt.

Erschwerend kommt hinzu, dass bis auf das Datum alle Daten in einer Zelle stehen.

Hier meine ersten Ansätze:

Die Felder der einzelnen Seite kann ich so erreichen:

='Seitenname'!Feld
z.B.:
='5.13.2006 20-51-32'!A3
oder
='5.13.2006*'!A3
"Rückgabewert" ist jeweils der Inhalt des Feldes "A3" auf der Seite "5.13.2006 20-51-32". Ich brauch von jeder Seite die Felder A1 und A3. A1:
TreeSize Professional Bericht, 5/13/2006  8:51 PM
A3:
Laufwerk: \\LBMPDC01\c$\     Größe: 40,962.6  MB     Belegt: 5,808.2  MB     Frei: 35,154.4  MB        4096 Bytes pro Cluster (NTFS)

Ja, die Angaben stehen jeweils in EINEM Feld.

Aus diesen beiden Angaben pro Seite soll ich nun ein Verlaufsdiagramm "erstellen" an dem man sehen kann wie sich die Speicherplatzbelegung im Laufe der Tage ändert.

Mit normalen Excelmitteln ist das aber nicht wirklich möglich v.a. weil das ganze nicht einmalig sondern dynamisch geschehen soll. Es soll jeden Tag möglich sein sich das aktuelle Diagramm anzeigen zu lassen ohne großartig Hand anzulegen.

Meine ersten Ideen waren folgende:

Alle A1- und A3-Felder sollten in einer Tabelle angezeigt werden (diese Tabelle kann sich natürlich auch in einer anderen Exceldatei befinden). Und von dieser Tabelle wird dann das Diagramm erstellt.

Probleme an der Sachen sind:

Wie kann ich die Felder A1 und A3 aus allen Seiten auslesen?

Wie bekomme ich die einzelnen Daten aus den jeweiligen Feldern heraus?

Wie kann ich das ganze automatisiert ablaufen lassen (Ich hab kein bock 120 Seiten und mehr durchzuklicken oder manuell einzugeben)?

Dummerweise hab ich auch Null Ahnung von VB-Makros :(

Kann mir jemand helfen?

PN für die Exceldatei oder ICQ: 71226633

PS: Ich bin Systemintegrator, kein Anwendungsentwickler.

mir würds schon reichen, wenn ich ein paar quellen, links oder isbns bekommen würde :rolleyes:

hm... also mit VBA kenn ich mich auch nicht aus... aber du könntest evtl. PHP arbeiten?! Ich bin grad dabei ein Script zu schreiben das die dynamisch aus einer Exceldatei ausliest... bis jetzt werden die Inhalte allerdings nur in HTML wieder ausgegeben und noch nicht in eine neue Datei gespeichert...

Ok, bin schon etwas weiter!

Falls du schn was fertiges hast, sag bitte bescheid! Und ansonsten schreib mal welche Daten du für die Auswertung brauchst... also Datum, belegter Speicher ...?

Ich hoffe es wird nicht so dringend benötigt?!

Danke, ich hab dir mal auf deine PN geantwortet.

makro:

tabellenzeile ansprechen:

Dim das As String

das = Sheets("Sheet1").Cells(1, 3)[/PHP]

sheet1 ist der name deiner tabelle... das sheets object heißt in der deutschen excel-version tabelle oder so

also:

[PHP]das = Tabelle("Sheet1").Cells(1, 3) 'oder so...

oder aber:

Dim das As String
Dim das2 As String

das2 = "Sheet1"

das = Sheets(das2).Cells(1, 3)[/PHP]

hier könntest du dann den tag in die variable nehmen und so alle tabellenblätter nacheinander durchsehen (mit einem loop drumrum eben)

deine daten kannst du dann mit dem split befehl oder so trennen... oder auch mit mid (einfach in excel eintippen - also im visual basic fenster - und f1 drücken...)

Danke für den Tipp mit dem mid().

Ich hab es nun hinbekommen.

Danke allen für die Hilfe!

Hier noch der Quellcode:

Dim xlsEinlesen

Dim xlsAusgeben


Set xlsEinlesen = WScript.CreateObject("Excel.Application")

Set xlsAusgeben = WScript.CreateObject("Excel.Application")


xlsAusgeben.Visible = True

xlsAusgeben.Workbooks.Add  		'Neue Mappe für die Ausgabe öffnen


With xlsAusgeben				'Überschriften erstellen	

	.Range("A1").Select

	.ActiveCell.Value = "Datum"

	.Range("B1").Select

	.ActiveCell.Value = "Größe"

	.Range("C1").Select

	.ActiveCell.Value = "Belegt"

	.Range("D1").Select

	.ActiveCell.Value = "Frei"

End With	


With xlsEinlesen

	.Visible = True

	.Workbooks.Open ("C:\LBMPDC01C$.xls")		'Quelldatei öffnen

	For i = 1 To .ActiveWorkbook.Sheets.Count	'For-Schleife, welche die Tabellen durchgeht

		.Sheets(i).Select

		With xlsAusgeben						'Erstellen der Ausgabe.

			.Range("A" & i + 1).Select

			.ActiveCell.Value = mid(xlsEinlesen.ActiveSheet.Cells(1, 1),32,9)	'Eingrenzen der Zeichenfolge aus einer Zelle

			.Range("B" & i + 1).Select						'Syntax: Mid(string, start[, length])

			.ActiveCell.Value = mid(xlsEinlesen.ActiveSheet.Cells(3, 1),36,8)	'string: Zeichenfolgenausdruck (Quellzelle)

			.Range("C" & i + 1).Select						'start: Position in string, an der die zurückzugebende Zeichenfolge beginnt

			.ActiveCell.Value = mid(xlsEinlesen.ActiveSheet.Cells(3, 1),61,8)	'length: optional; Anzahl der zurückzugebenden Zeichen

			.Range("D" & i + 1).Select

			.ActiveCell.Value = mid(xlsEinlesen.ActiveSheet.Cells(3, 1),83,8)

			.ActiveCell.Offset(1, 0).Select

		End With

	Next

End With

Msgbox "Auswertung beendet!"

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.