Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1488to1492
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
Inhaltsverzeichnis

Schleife zum füllen einer Tabelle

Schleife zum füllen einer Tabelle
03.05.2016 17:57:07
Sam
Hallo,
habe eine sogenannte Lasttabelle die in zwei Spalten aufgeteilt ist, die bekomme ich so von unserem Energieanbieter. In der Spalte A steht das Datum mit Uhrzeit im Viertelstunden Rythmus und in der Spalte B der gemessene kw Wert zu dem Zeitpunkt.
Nun möchte ich aber die Werte in einer Kreutztabelle haben um die Werte mit Bedingter Formatierung in einer Gant Grafik darzustellen.
Wie ich das mit den Achsen mache weis ich aber ich hätte gerne eine Schleife oder den Ansatz dazu wie ich die Werte in den Spalten auslese und in der Tabelle eintrage.
Zum besseren Verständniss habe ich einen kleinen Ausschnitt der Lastgangtabelle angehängt.
https://www.herber.de/bbs/user/105385.xlsx
Ein Bericht (Tabellenblatt) ist ein Monat und hat ca. 3000 Zeilen.
Hoffe das ist verständlich :-)
p.s. bin VBA Anfänger und sehe die Aufgabe auch als Übung.
Grüße
Sam

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife zum füllen einer Tabelle
03.05.2016 23:58:44
Piet
Hallo Sam,
anbei ein kurzer Makro Code als Lösungsvorschlag für diese Aufgabe.
Ich gehe davon aus das die Spalten und Zeilen wie im Beispiel stimmen.
Sonst müssten die Range Angaben im Makro manuell geaendert werden.
Würde mich freuen wenn die Aufgabe damit gelöst ist.
mfg Piet
Option Explicit      'Kreuztabelle erstellen
Const UhrZeit = "E4:K4"    'Uhrzeit Überschriftzeile
Sub Kreuztabelle_erstellen()
Dim DA As Object, AC As Object
Dim Datum As Date, Zeile As Long
Dim Zeit As Date, SZeit As Single
With Worksheets("Tabelle1 (2)")
'alte Tabelle löschen, 1.Zeile = 4
.Range("C5:K10000").ClearContents
Zeile = 5 - 1   '1.Zeile  (5-1)
'Schleife für Zeitstempel Werte
For Each DA In Range("A5", [a5].End(xlDown))
'Datum prüfen, naechstes Datum setzen
If CDate(Mid(DA, 1, 10))  Datum Then
Zeile = Zeile + 1  'Zeile +1
Datum = CDate(Mid(DA, 1, 10))
Cells(Zeile, 4) = Datum
End If
Zeit = CDate(Mid(DA, 13, 8))
SZeit = CSng(Zeit) 'als Zahl
'Schleife für Uhrzeit Überschrift
For Each AC In Range(UhrZeit)
If AC.Value = SZeit Then
Cells(Zeile, AC.Column) = DA.Offset(0, 1)
Zeit = Empty:  Exit For
End If
Next AC
'Fehlermeldung:  aktuelle Zeit "Not Find"
If Zeit  Empty Then DA.Offset(0, 2) = "Not Find"
Next DA
End With
End Sub

Anzeige
AW: Schleife zum füllen einer Tabelle
04.05.2016 10:34:12
JoWe
Hallo Sam,
ein anderer Vorschlag.
Dazu habe ich den Bereich E5:CV5 gemäß Vorgabe in 15 Min-Schritten ausgefüllt (00:15 bis 00:00).
Hier mein Code (in Tabelle1 (Code)):
Option Explicit
Public sp As Long
Public ze1 As Long
Public ze2 As Long
Public zeile As Long
Public ze As Range
Sub put_step1()
ze1 = 5: ze2 = 5
Range("D5:CV3000").ClearContents
Cells(5, 4) = Cells(5, 1)
Do While Cells(ze1, 1)  ""
If CDate(Left(Cells(ze2, 4), 10))  CDate(Left(Cells(ze1, 1), 10)) Then
ze2 = ze2 + 1
End If
Cells(ze2, 4) = CDate(Left(Cells(ze1, 1), 10))
ze1 = ze1 + 1
Loop
put_step2
End Sub
Sub put_step2()
ze2 = 5: zeile = 5
For Each ze In Range("D5:D" & Cells(Rows.Count, 4).End(xlUp).Row)
For sp = 5 To 100
Cells(ze2, sp) = Cells(zeile, 2).Value
zeile = zeile + 1
Next
ze2 = ze2 + 1
Next
End Sub
Gruß
Jochen

Anzeige
AW: Schleife zum füllen einer Tabelle
04.05.2016 12:40:52
Daniel
Hi
geht im Prinzip einfach per Formel.
in E5 muss die Formel:

=SVERWEIS($D5+E$4;$A$4:$B$11;2;WAHR)

wenn die Liste vollständig ist, geht auch folgende Formel in E5:
=Index($B:$B;(Zeile()-5)*96+Spalte()+0)

die Formeln dann in alle Zellen der Tabelle schreiben.
Gruß Daniel

AW: Schleife zum füllen einer Tabelle
04.05.2016 13:19:10
JoWe
Hallo Daniel,
völlig richtig, Deine Formel arbeitet korrekt und führt zum eigentlichen Ziel.
Nur: Die Frage zielte auf eine VBA-Lösung, eine Formel war nicht nachgefragt.
Zitat 1: "ich hätte gerne eine Schleife oder den Ansatz dazu"
Zitat 2: "bin VBA Anfänger und sehe die Aufgabe auch als Übung"
Gruß
Jochen

Anzeige
AW: Schleife zum füllen einer Tabelle
04.05.2016 13:47:01
Daniel
Hi
man kann und darf auch die Formel per VBA in in die Zellen eintragen.
Gruß Daniel

AW: Schleife zum füllen einer Tabelle
04.05.2016 18:59:46
Sam
Hallo Daniel und Jochen,
über sverweis bin ich auch schon gestolpert aber ich mein auch mal gelesen zu haben das sverweis nicht so elegant wäre weil macht Excel langsam. Aber man kann es ja auch mal in einem Makro anwenden da hat Daniel natürlich recht.
Vielen Danke erstmal, melde mich morgen nochmal, jetzt kämpfe ich hier noch mit der Antwortfunktion ;-)
Grüße
Sam

AW: Schleife zum füllen einer Tabelle
04.05.2016 19:07:16
Sam
Hi Piet und JoWE,
auch an euch erst mal danke, werde morgen beide Makros testen und mich dann nochmal melden
@ Daniel
die Index Formel teste ich morgen auch. Danke
Grüße Sam

Anzeige
AW: Danke für die Rückmeldung oT
04.05.2016 22:18:28
JoWe

AW: Schleife zum füllen einer Tabelle
04.05.2016 19:31:52
Daniel
Hi
kommt darauf an.
wenn die Ausgangsliste nach Datum und Uhrzeit aufsteigend sortiert ist und du die SVerweisvariante mit 4. Parameter = Wahr verwendest, dann ist der SVerweis sehr schnell.
nur die Variante mit 4. Parameter = falsch ist bei grossen Datenmengen sehr langsam.
das liegt daran, dass aufgrund der Sortiertung eine sehr schnelle Suchmethode verwendet werden kann, während bei nicht sortierten Daten jeder Wert in der Liste einzeln überprüft werden muss.
bei Excel-gut solltet du den SVerweis eigentlich kennen...
(und bevor man anfängt, für Excel Makros zu schreiben, sollte man erstmal Excel an sich kennen und können, es wäre nicht das erste mal, das hier Markos vorgestellt werden, die zur Abarbeitung einer Aufgabe länger brauchen, als ein Excelandwender von Hand)
Gruß Daniel

Anzeige
AW: Schleife zum füllen einer Tabelle
04.05.2016 20:25:17
Sam
Hallo Daniel,
ehrlich gesagt arbeite ich sehr häufig mit sverweis aber ich habe keine einzige Tabelle in der 3000 Zeilen durchforstet werden muss. Da ich später vorhabe eine Gant Grafik damit zu realisieren , die vielleicht je nach kw größe(z.B über 200 kw) zwei oder mehr Monate anzeigen kann, soll, habe ich dann sogar 6 bis 9000 Zeilen zu durch suchen. Deswegen dachte ich das es vielleicht über ein Makro eleganter ist als über eine Formel. Die Formel kann ich am Ende immer noch einsetzten sozusagen aus dem Ärmel ziehen. Mit Index dagegen habe ich noch nicht so viel Erfahrung mal schauen wie die funktioniert. Die Daten sollen natürlich Chronologisch angeordnet sein, also aufsteigend.
Excel-Gut ist natürlich auch eine Definitionsfrage, bei meinen Kollegen gut hier im Forum vielleicht eher erfahrener Anfänger. :-)
Danke und Grüße
Sam

Anzeige
AW: Schleife zum füllen einer Tabelle
04.05.2016 23:01:24
Daniel
Hi
hier mal ein Beispiel, wie man die komplette Tabelle (inkl. Zeilen und Spaltenbeschriftungen)
vollständig aus der Liste generiert.
der Code nutzt nur die Excelfunktionen "Ausfüllen - Reihe" und die SVerweis-Funktion
Schau dir das mal an.
Wenn du das mit Schleifen und "richtigem" VBA programmieren willst, wird's aufwendiger und wenns genauso schnell gehen soll, musst du schon etwas tiefer in die Trickkiste greifen.
ggf wird's noch schneller, wenn man die Index-Funktion anstelle des Sverweises nimmt.
https://www.herber.de/bbs/user/105400.xlsm
Gruß Daniel

Anzeige
AW: Schleife zum füllen einer Tabelle
08.05.2016 09:47:01
Sam
Hallo Daniel,
wollte mich nochmal melden, tolle Idee, was ich nicht wusste ist daß ich bei sverweis auch eine Formel als Suchkriterium angeben kann.
Danke für die Anregung, habe es so auch umgesetzt und wegen der schnelligkeit absolut im dunkel grünen Bereich, da hast du recht.
Grüße
Sam

AW: Schleife zum füllen einer Tabelle
04.05.2016 22:26:36
Sam
Hallo Daniel,
ehrlich gesagt arbeite ich sehr häufig mit sverweis aber ich habe keine einzige Tabelle in der 3000 Zeilen durchforstet werden muss. Da ich später vorhabe eine Gant Grafik damit zu realisieren , die vielleicht je nach kw größe(z.B über 200 kw) zwei oder mehr Monate anzeigen kann, soll, habe ich dann sogar 6 bis 9000 Zeilen zu durch suchen. Deswegen dachte ich das es vielleicht über ein Makro eleganter ist als über eine Formel. Die Formel kann ich am Ende immer noch einsetzten sozusagen aus dem Ärmel ziehen. Mit Index dagegen habe ich noch nicht so viel Erfahrung mal schauen wie die funktioniert. Die Daten sollen natürlich Chronologisch angeordnet sein, also aufsteigend.
Excel-Gut ist natürlich auch eine Definitionsfrage, bei meinen Kollegen gut hier im Forum vielleicht eher erfahrener Anfänger. :-)
Danke und Grüße
Sam
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige