Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Schleife: Spalte durchlaufen, dann nächste Spa

VBA Schleife: Spalte durchlaufen, dann nächste Spa
10.09.2018 19:04:18
Marcel
Hallo VBA Profis,
ich brauche Eure Hilfe bezüglich einer Schleife.
Die Aufgabe bekomme ich ohne VBA leider nicht gelöst.
Ich habe eine sauber Datengrundlage aus einer Pivottabelle, GarantieDaten Auszug aus SAP (Beispielsdatei ist erstellt, der Upload erlaubt jedoch die Auswahl der Datei nicht, hoffe das klappt gleich noch).
Vielleicht klappt es aber auch so.
In Spalte A ab Zeile 20 stehen die Datumsangaben der letzten ca. 10 Jahre
In Zeile 19 stehen die Maschinen Seriennummern.
Der Bereich wird somit durch den letzten Eintrag in Spalte A und letzten Eintrag in Zeile 19 festgelegt.
Die 1 bedeutet ab diesem Tag gilt die Garantie und kommt aus der PivotTabelle.
Die Grundtabelle ist dank Pivot kein Problem.
Von der Schleife wünsche ich mir folgende Aufgabe.
Durchlaufe Spalte C20 abwärts bis eine 1 kommt.
Fülle die 10 Zellen darunter ebenfalls mit einer 1.
PS: Da eine Maschine ggf. erneut als Gebrauchtmaschine zurück gekauft und wieder verkauft wurde, soll diese Spalte erst verlassen werden, wenn die Spalte C am Ende ist. Ende bestimmt der letzte Eintrag in Spalte A.
Danach das gleich in Spalte D20 abwärts usw. bis in Zeile 19 keine Einträge mehr sind.
In Spalte B kann ich dann mit Summe(C20:F20) die Anzahl ermitteln, wie viele Maschinen an einem Datum in Garantie standen.
Da es deutlich mehr als vier Maschinen sind, ist die Aufgabe manuell nur sehr mühselig zu erledigen.
Überschriften in Zeile 19
Spalte A Datum, erste Maschine Spalte C
Die Garantiezeit ist real 365 Tage, aber für das Beispiel habe ich die auf 10 Tage gesetzt.
.......................Anzahl Maschinen mit Garantie...............Maschine 1.......Maschine 2....Maschine 3....Maschine4..usw
01.01.2008................................1............................................ 1
02.01.2008...............................2.......................................1durch Code..............1
03.01.2008................................3......................................1durch Code........1 durch Code...........................1
04.01.2008................................3......................................1durch Code........1 durch Code....................1 durch Code
05.01.2008................................3......................................1durch Code........1 durch Code....................1 durch Code
06.01.2008................................3......................................1durch Code........1 durch Code....................1 durch Code
07.01.2008.................................3.....................................1durch Code........1 durch Code....................1 durch Code
08.01.2008................................3......................................1durch Code........1 durch Code....................1 durch Code
09.01.2008.................................3.....................................1durch Code........1 durch Code....................1 durch Code
10.01.2008.................................3.....................................1durch Code........1 durch Code....................1 durch Code
11.01.2008..................................3....................................1durch Code........1 durch Code....................1 durch Code
12.01.2008..................................2...............................................................1 durch Code....................1 durch Code
13.01.2008..................................1........................................................................................................1 durch Code
14.01.2008..................................0.............................................................................................................................
....
10.09.2018...................................1...............................................................................................................1
usw.
Danke im Voraus und bin gespannt wer was aus dem Handgelenk schüttelt.
Gruß Marcel
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beispiel-Datei
10.09.2018 19:29:14
Fennek
Hallo,
der maximale upload ist 300kB, dies sollte für wenige dutzend Datensätze reichen.
Bedenke, dass ein Forum kein kostenloser Dienstleister ist. Falls es in kurzer Zeit per Formel bzw VBA lösbar ist, wird sich vermutlich jemand finden, falls der Arbeitsaufwand höher ist ...
mfg
AW: Beispiel-Datei hat nur 30KB
10.09.2018 20:02:38
Marcel
Hallo Fennek,
die Datei hat nur 30KB. Sie lässt sich trotzdem nicht auswählen.
Meine VBA Kenntnisse reichen nicht um das zu erledigen, da ich aber schon andere Sachen gebastelt habe, bin ich mir sicher dass der Profi drüber lacht und in wenigen Minuten das kann.
Sonst hätte ich nicht gefragt, ich möchte hier niemanden seine Zeit rauben.
Sollte ich mich irren, kann der Profi mir das gerne sagen ob es mehr Aufwand ist, dann schließe ich den Beitrag.
Gruß Marcel
Anzeige
AW: Java?
10.09.2018 20:59:30
Fennek
Hallo,
30kB sollte kein Problem sein, aber es sind nur bestimmte Dateitypen zulässig (in der Liste erkennbar).
Hast du Java-Script aktiviert? Ich normalerweise nicht, brauche deshalb 2 Anläufe.
mfg
AW: Beispiel-Datei hat nur 30KB
11.09.2018 03:31:42
Piet
Hallo Marcel
beim Datei hochladen habe ich auch öfter Probleme. Mal stört sich der Server an Buchstaben wie ö, ü, mal an Zahlen.
Probiere es mit einem ganz einfachen Text "Test" oder "Projekt xy"
mfg Piet
Anzeige
AW: Beispiel-Datei hat nur 30KB
11.09.2018 16:37:11
Hajo_Zi
Halo Marcel,
kopiere die Datei auf den Desktop, Sie sollte in der Ordnerstruktuur nicht zu tief liegen.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: Beispiel-Datei hat nur 30KB
11.09.2018 17:11:31
Marcel
Hallo Hajo, hallo Piet,
wie ich sehe ist meine Antwort über Handy an Piet auch nicht durch gegangen.
Ich habe die Datei schon auf dem Schreibtisch (Desktop beim MacBook).
Kann natürlich sein dass der Mac das Problem ist.
Auch auch als jpg habe ich es probiert, die Datei bleibt aber blass und somit nicht auswählbar.
Danke für Eure Beiträge, ich hoffe ich bekomme es noch hin.
Gruß Marcel
Anzeige
AW: Beispiel-Datei hat nur 30KB
12.09.2018 17:36:15
Marcel
Hallo zusammen,
anbei ein Bild was hoffentlich alles erklärt.
Es geht "nur" um die roten 1er.
Die Schleife soll in Spalte C ab Zeile 20 eine 1 suchen.
Nach dem Finden 10 Zeilen tiefer eine 1 eintragen (hier die roten 1er).
Am Ende der Spalte (Ende gibt der letzte Eintrag in Spalte A vor) soll die Schleife gleiches in Spalte D, dann E usw. bis zum Ende durchführen.
Ende der Spalten gibt der letzte Eintrag in Zeile 19 vor.
Wenn es zu viel Arbeit, dann bitte Info geben.
Ich denke jedoch der Profi ist da schnell mit durch.
Hier noch paar Eckdaten.
Zeile 20 bis Ende (letzter Eintrag in Spalte A)
Spalte C bis Ende (letzter Eintrag in Zeile 19)
In den Spalten befinden sich nur Zahlen und zwar nur die 1.
Bei Rückkauf und wieder Verkauf, kann es sein dass in einer Spalte auch eine zweite oder dritte 1 kommt, daher Spalte erst verlassen, wenn Spalte A am Ende ist.
Vielleicht kann mir ja einer helfen.
Danke
Gruß Marcel
Userbild
Anzeige
AW: VBA
12.09.2018 18:47:05
Fennek
Hallo,

Sub F_en()
ls = Cells(19, Columns.Count).End(xlToLeft).Column
For i = 3 To ls
Cells(19, i).End(xlDown).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay,  Step:= _
1, Stop:=11, Trend:=False
Next i
Range("C20", Cells(100000, ls)).SpecialCells(xlCellTypeConstants) = 1
End Sub
Bei 365 * 1 muss Stop:=356 gesetzt werden.
mfg
Anzeige
AW: VBA
12.09.2018 19:09:09
Marcel
Hallo Fennek,
naja was soll ich sagen?
Super, großartig, überragend?
Such Dir was aus, ich unterschreibe alles.
Vielen Dank für Deine Hilfe.
Ich hoffe es hat nicht zu viel Zeit in Anspruch genommen.
Viele viele viele liebe Grüße
Marcel
AW: schön
12.09.2018 19:48:01
Fennek
der Nachwuchs freut sich immer über einen Gutschein von Amazon. Schicke ihn als PN an meinen NickName bei
http://www.clever-excel-forum.de/Forum-Excel
Danke
Anzeige
AW: schön
13.09.2018 20:27:15
Marcel
Hallo Fennek,
ich hatte den ganzen Tag das Handy nicht dabei.
Werde mich am We mal damit beschäftigen. Habe das noch nie gemacht.
Bekomme ich aber sicher hin.
Gruß Marcel
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

VBA Schleife: Spalten und Zellen effizient durchlaufen


Schritt-für-Schritt-Anleitung

Um mit einer Excel VBA Schleife Spalten und Zellen zu durchlaufen, kannst Du den folgenden Code verwenden. Dieser Code durchläuft die Zellen in Spalte C, sucht nach der Zahl 1 und füllt die nächsten zehn Zellen darunter ebenfalls mit 1:

Sub DurchlaufeSpalten()
    Dim ls As Long
    Dim i As Long
    Dim j As Long
    Dim letzteZeile As Long

    ' Bestimme die letzte Spalte und Zeile
    ls = Cells(19, Columns.Count).End(xlToLeft).Column
    letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row

    ' Durchlaufe die Spalten von C bis zur letzten Spalte
    For i = 3 To ls
        ' Durchlaufe die Zellen in der aktuellen Spalte ab Zeile 20
        For j = 20 To letzteZeile
            If Cells(j, i).Value = 1 Then
                ' Fülle die nächsten 10 Zellen mit 1
                For k = 1 To 10
                    If j + k <= letzteZeile Then
                        Cells(j + k, i).Value = 1
                    End If
                Next k
            End If
        Next j
    Next i
End Sub

Dieser Code ist optimiert, um alle Zellen einer Spalte durchlaufen und die gewünschten Werte zu setzen.


Häufige Fehler und Lösungen

  • Fehler: "Index außerhalb des Bereichs"

    • Lösung: Überprüfe, ob letzteZeile korrekt ermittelt wird. Stelle sicher, dass die Datensätze in Spalte A bis zum Ende gefüllt sind.
  • Fehler: Schleife läuft nicht wie erwartet

    • Lösung: Stelle sicher, dass die Bedingungen in Deiner Schleife korrekt sind. Achte darauf, dass die Zellen, die Du durchläufst, tatsächlich Werte enthalten.

Alternative Methoden

Wenn die VBA Lösung nicht den gewünschten Effekt hat, kannst Du auch Excel-Formeln verwenden, um die gleichen Ergebnisse zu erzielen. Eine Kombination aus INDEX, MATCH und OFFSET könnte hilfreich sein, um ähnliche Ergebnisse zu erzielen, ohne VBA zu verwenden.


Praktische Beispiele

Angenommen, Du hast folgende Daten in Spalte A und C:

A (Datum) B C (Maschine 1) D (Maschine 2)
01.01.2008 1
02.01.2008 1
03.01.2008 1

Mit dem oben genannten VBA-Skript wird die Tabelle nach der Ausführung so aussehen:

A (Datum) B C (Maschine 1) D (Maschine 2)
01.01.2008 1
02.01.2008 1 1
03.01.2008 1
04.01.2008 1
05.01.2008 1
... 1

Tipps für Profis

  • Verwende Application.ScreenUpdating = False, um die Bildschirmaktualisierung während des Skriptlaufs zu deaktivieren, was die Ausführungsgeschwindigkeit erhöht.
  • Teste Deinen Code schrittweise, um sicherzustellen, dass jede Schleife wie gewünscht funktioniert.
  • Dokumentiere Deinen Code, um später Anpassungen einfacher machen zu können.

FAQ: Häufige Fragen

1. Wie kann ich die Schleife anpassen, um auch Zeilen zu durchlaufen? Du kannst die äußere Schleife ändern, um durch die Zeilen zu iterieren, und die innere Schleife entsprechend anpassen.

2. Was tun, wenn ich mehrere Bedingungen überprüfen möchte? Nutze logische Operatoren wie And oder Or, um mehrere Bedingungen in Deiner If-Anweisung zu prüfen.

3. Kann ich die Schleife für mehrere Spalten gleichzeitig verwenden? Ja, der oben angegebene Code durchläuft bereits mehrere Spalten. Du kannst die Start- und Endbedingungen entsprechend einstellen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige