Thema Datum  Von Nutzer Rating
Antwort
Rot Do Until...Loop-Schleife
20.06.2008 00:39:06 Konrad
NotSolved
20.06.2008 18:14:53 jh
NotSolved
20.06.2008 18:25:47 jh
NotSolved
27.06.2008 16:22:32 Konrad
NotSolved

Ansicht des Beitrags:
Von:
Konrad
Datum:
20.06.2008 00:39:06
Views:
2061
Rating: Antwort:
  Ja
Thema:
Do Until...Loop-Schleife
Hallo,

ich hatte vor einiger Zeit eine Anfrage zu einer Do Until…Loop-Schleife gestellt, das Thema aber dann wieder aus den Augen verloren. Danke für die Vorschläge von Phil und jh. Da ich wie gesagt Anfänger bin, kam ich damit nicht so richtig weiter. Ich habe deshalb hier die Schleife mit Kommentaren noch einmal eingefügt.

Ich habe also eine Tabelle in der in 1, 2 oder mehr Spalten rationale Zahlen (aus Messprozessen) enthalten sind. In der ersten Spalte fangen diese erst in Zeile 4 an und gehen bis zur letzten Zeile (65536). Die darauf folgenden Spalten setzen die Zahlenkolonne fort und sind vollständig gefüllt. In der letzten Spalte endet die Zahlenkolonne in irgendeiner Zeile.
Ich möchte für jeweils 100 aufeinander folgende Werte den Mittelwert bilden. Und in einer separaten Spalte derselben Tabelle, beginnend mit der Zeile 1, ablegen. Dies gilt natürlich für die letzten Werte einer Spalte und die ersten Werte der nächsten Spalte, welche zusammengenommen auch 100 Werte sind, ebenso. (Sorry besser kann ich`s leider nicht erklären ;) ). Die Mittelwerte sollen bis auf 3 Stellen hinter dem Komma genau angegeben werden.
Mit meiner Schleife erzeuge ich jedes Mal den Laufzeitfehler 1004 und es wird, wie ich vermute, nur die erste Spalte bis Zeile 65503 bearbeitet. Die Variablendeklaration habe ich deaktiviert, weil ich hier auch noch nicht sehr sattelfest bin.
Es wäre schön, wenn mir jemand das Makro verbessern könnte. Kommentare sind ausdrücklich erwünscht.


Sub Mittelwerte()
'Dim lngZeile As Long, i As Long, j As Long, _
z As Long, intSpalte As Integer

i = 4 'Startzeile in der ersten Spalte
z = 1 'Startzeile für die Mittelwerte
s = 1 'Startspalte

With Tabelle1 'With-Anweisung
lngZeile = .UsedRange.Rows.Count 'Alle belegten Zeilen sollen abgearbeitet werden

Do Until lngZeile = True 'Die Schleife läuft solange es belegte Zeilen gibt
j = i + 99 'aus 100 Zeilen-Block...
f = WorksheetFunction.Average(Range(Cells(i, 1), Cells(j, 1)))
'...wird der Mittelwert gebildet
Cells(z, 5) = f 'Der Mittelwert wird in die 1. Zeile der 5. Spalte geschrieben
i = i + 100 'Beginn für Nächsten Zeilenblock
z = z + 1 'nächster Mittelwert in nächste Zeile der 5. Spalte
If lngZeile = 65537 Then 'Wenn die Letzte Zeile der 1. Spalte überschritten wird dann...
i = 1 '...gehe zu 1. Zeile...
intSpalte = intSpalte + 1 '...der nächsten Spalte
End If 'Ende Wenn...Dann-Verzweigung
Loop

End With 'Ende With-Anweisung
End Sub

Danke

Konrad

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Do Until...Loop-Schleife
20.06.2008 00:39:06 Konrad
NotSolved
20.06.2008 18:14:53 jh
NotSolved
20.06.2008 18:25:47 jh
NotSolved
27.06.2008 16:22:32 Konrad
NotSolved