Anzeige
Archiv - Navigation
800to804
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
800to804
800to804
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

@Jonathan - Diagramm - Array mit Daten füllen

@Jonathan - Diagramm - Array mit Daten füllen
13.09.2006 11:04:29
fcs
Hallo Jonathan,
Nach dem Reset des Servers hier direkt meine Anwort.
Es reicht für deine Anwendung ein 2-dimensionales Array (x Zeilen, 5 Spalten). Es geht aber auch, wenn du für deine Daten im Code ein Range-Objekt festlegst. Die Daten des Range-Objektes kannst du genau so auslesen wie ein Array.
Hier ein Code-Beispiel für das Einlesen der Daten in ein Array und ein Beispiel für das Schreiben der Daten entsprechend einer Bedingung in eine Zieltabelle. Dabei habe ich das Array als Public deklariert, so dass der EinleseVorgang nur einmal gestartet werden muss. Anschließend können alle Prozeduren auf die Daten zugreifen.
Gruß
Franz

Option Explicit
Public Daten() As Variant
Sub DatenEinlesen()
Dim Bereich As Range, wksQ As Worksheet
Dim Zeile1 As Long, Spalte1 As Integer, ZeileL As Long, SpalteL As Integer, I As Long, J As Integer
Set wksQ = ActiveWorkbook.Worksheets("Tabelle1") 'Tabelle mit Quell-Daten
Zeile1 = 2 '1. Datenzeile
Spalte1 = 1 '1. Datenspalte
SpalteL = 5 'LetzteDatenspalte
With wksQ
ZeileL = .Cells(.Rows.Count, Spalte1).End(xlUp).Row 'Letzte Zeile mit Daten
Set Bereich = .Range(.Cells(Zeile1, Spalte1), Cells(ZeileL, SpalteL))
End With
ReDim Daten(1 To Bereich.Rows.Count, 1 To Bereich.Columns.Count)
For I = 1 To Bereich.Rows.Count
For J = 1 To Bereich.Columns.Count
Daten(I, J) = Bereich(I, J)
Next J
Next I
End Sub
Sub AusgabenSchreiben()
Dim wksZ As Worksheet, Zeile1 As Long, Spalte1 As Integer, I As Long, J As Integer, Zeile As Long
Set wksZ = ActiveWorkbook.Worksheets("Tabelle1") ' Zieltabelle
Zeile1 = 2 '1. Datenzeile die ausgefüllt werden soll
Spalte1 = 7 '1.Datenspalte die ausgefüllt werden soll
Zeile = Zeile1
With wksZ
'Löschen von vorhandene Daten im Zielbereich
.Range(.Cells(Zeile1, Spalte1), .Cells(.Rows.Count, Spalte1 + UBound(Daten, 2) - 1)).ClearContents
For I = 1 To UBound(Daten, 1)
If Daten(I, 1) = "Ausgabe" Then
For J = 1 To UBound(Daten, 2)
.Cells(Zeile, Spalte1 + J - 1) = Daten(I, J)
Next J
Zeile = Zeile + 1
End If
Next I
End With
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: @Jonathan - Diagramm - Array mit Daten füllen
13.09.2006 21:03:39
Jonathan
Hey,
das ist echt klasse! Dass hier immer so gut und schnell geholfen wird! Danke!
Das Beispiel funktioniert super, konnte es testen und auch etwas verändern.
Wo es aber bei mir hakt, ich muss die Daten ja nun in eine "diagrammmögliche" Struktur bringen.
Nehmen wir als BSP ich möchte ein ÄDiagramm erstellen, welches mir als Linien alle Einnahmen und Ausgaben der Jahre 2006 - 2008 darstellt.
Es müsste innerhalb des Arrays ja nun aufsummiert werden?! Die Ausgabe müsste dann lauten: Spalte A: Jahr, Spalte B alle Einnahmen des Jahres summiert, Spalte C: alle Ausgaben des Jahres summiert.
Und da komme ich nicht weiter!
Noch jemand Lust mir zu helfen?
Danke!
Anzeige
AW: @Jonathan - Diagramm - Array mit Daten füllen
14.09.2006 10:11:58
fcs
Hallo Jonathan,
hier ein Beispiel wie man die Auswertung machen kann. Möglicherweise gibt es elegantere Lösungen als mit For-Next-Schleifen die Bedingungen zu prüfen und die Summen zu bilden.

Sub EinnahmenAusgabenJahr()
Dim wksZ As Worksheet, Zeile1 As Long, Spalte1 As Integer, I As Long, J As Integer, Zeile As Long
Dim Auswertung(), Spaltentitel, Zeilentitel, Jahr As Integer, Art As String, Betrag As Double
Set wksZ = ActiveWorkbook.Worksheets("Tabelle1") ' Zieltabelle
Zeile1 = 1 '1. Datenzeile die ausgefüllt werden soll
Spalte1 = 7 '1.Datenspalte die ausgefüllt werden soll
Call DatenEinlesen
'Auswerte-Array einrichten
Spaltentitel = Array("Jahr", "Einnahmen", "Ausgaben")
Zeilentitel = Array(2006, 2007, 2008)
ReDim Auswertung(0 To UBound(Zeilentitel) + 1, 0 To UBound(Spaltentitel))
'Spaltentitel in Zeile 0 des Auswerte-Arrays schreiben
For I = 0 To UBound(Spaltentitel)
Auswertung(0, I) = Spaltentitel(I)
Next I
'Zeilentitel in Spalte 0 des Auswerte-Arrays schreiben
For J = 0 To UBound(Zeilentitel)
Auswertung(J + 1, 0) = Zeilentitel(J)
Next J
'Summenauswertung
For Zeile = 1 To UBound(Daten, 1)
Jahr = Daten(Zeile, 2)
Art = Daten(Zeile, 1)
Betrag = Daten(Zeile, 5)
'Zeile im Array ermitteln
For I = 1 To UBound(Auswertung, 1)
If Jahr = Auswertung(I, 0) Then Exit For
Next I
'Spalte im Array ermitteln
For J = 1 To UBound(Auswertung, 2)
If Art = Auswertung(0, J) Then Exit For
Next J
'Betrag im Zielfeld addieren
If I <= UBound(Auswertung, 1) And J <= UBound(Auswertung, 2) Then
Auswertung(I, J) = Auswertung(I, J) + Betrag
End If
Next Zeile
'Auswertung in Ziel-Tabelle übertragen
Zeile = Zeile1
With wksZ
'Löschen von vorhandene Daten im Zielbereich
.Range(.Cells(Zeile1, Spalte1), .Cells(.Rows.Count, Spalte1 + UBound(Auswertung, 2))).ClearContents
For I = 0 To UBound(Auswertung, 1)
For J = 0 To UBound(Auswertung, 2)
.Cells(Zeile, Spalte1 + J) = Auswertung(I, J)
Next J
Zeile = Zeile + 1
Next I
End With
End Sub

Gruß
Franz
Anzeige
AW: @Jonathan - Diagramm - Array mit Daten füllen
16.09.2006 17:57:32
Jonathan
Hey,
ich danke Dir!!
Das hat mir sehr weitergeholfen! Konnte damit sehr gut arbeiten...
Nochmals Danke!!!!!

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige