Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1520to1524
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

For schleife Zeile Überspringen

For schleife Zeile Überspringen
28.10.2016 11:24:36
Thoomas
Hallo zusammen,
ich habe eine For-Schleife in der ich den Mittelwert aus einer Zeile mit gewisser Range bestimmen möchte. Ist diese Zeile fertig wandert die For-Schleife einen Wert weiter und soll in dieser Zeile den Mittelwert berechnen.
Jetzt hab ich zwischendrin eine Leerzeile bei welcher mein Programm eine Fehlermeldung ausspuckt.
Meine Idee war nun die Zeile zu überspringen indem ich eine If-Abfrage mache, falls die Anzahl meiner gezählten Werte in der Zeile 0 ist, soll die Schleife mit dem nächsten Laufindex weitermachen.
Bekomme ich leider nicht richtig umgesetzt. Habt ihr da bessere Ideen?
Sub Mittelwert()
For i = 0 To 17
anz = Application.WorksheetFunction.Count(Worksheets("Tabelle1").Range(Cells(3 + i, 4), Cells(3  _
+ i, 19)))
meani = Application.WorksheetFunction.Sum(Worksheets("Tabelle1").Range(Cells(3 + i, 4), Cells(3  _
+ i, 19))) / anz
Set RangeMean = Worksheets("Tabelle1").Cells(3 + i, 19)
RangeMean.Value = meani
Next i
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For schleife Zeile Überspringen
28.10.2016 11:42:07
Michael
Hallo Thomas!
Probier mal:
Sub Mittelwert()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Tabelle1")
Dim i As Long, meani As Double
Dim r As Range, RangeMean As Range
With Ws
For i = 0 To 17
Set r = .Range(.Cells(3 + i, 4), .Cells(3 + i, 19))
If WorksheetFunction.Count(r) > 0 Then
meani = WorksheetFunction.Sum(r) / WorksheetFunction.Count(r)
Set RangeMean = .Cells(3 + i, 19): RangeMean.Value = meani
End If
Next i
End With
End Sub
Du überschreibst Dir mit dem Mittelwert der Zeile jeweils den letzten Zeilenwert, der in die MW-Berechnung miteinfließt; das ist beabsichtigt?
LG
Michael
Anzeige
Noch kürzer...
28.10.2016 11:57:20
Michael
Thomas,
...wäre gleich die Worksheetfunction.Average (=Mittelwert) zu verwenden, dann sparen wir uns das Summe durch Anzahl-Gestöpsel:
Sub Mittelwert()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Tabelle1")
Dim i As Long, r As Range, RangeMean As Range
With Ws
For i = 0 To 17
Set r = .Range(.Cells(3 + i, 4), .Cells(3 + i, 19))
If WorksheetFunction.Count(r) > 0 Then
Set RangeMean = .Cells(3 + i, 19): RangeMean.Value = WorksheetFunction.Average( _
r)
End If
Next i
End With
End Sub
Den von der Forumssoftware eingefügten Zeilenumbruch (_) bitte löschen.
Meine Anmerkung mit dem Überschreiben der letzten Spalte bleibt davon natürlich unberührt.
LG
Michael
Anzeige
AW: Noch kürzer...
28.10.2016 12:08:46
Thoomas
Hi Michael,
der erste Code funktioniert einwandfrei! Dankeschön :)
Der zweite Code (der kürzere) überprüft die If-Abfrage und überspringt dann die Mittelwertsberechnung, sodass alle Zellen leer bleiben.
Ich werde mich am Montag noch weiter damit auseinandersetzen habe aber jetzt auf jeden Fall eine super Lösung. Dankeschön nochmal und ein schönes Wochenende :)
Gruß Thomas
Freut mich und...
28.10.2016 12:25:42
Michael
bzgl. dem zweiten Code: der läuft genauso; ich vermute nur, dass da der Zeilenumbruch der Forensoftware ein Problem beim Kopieren/Einfügen verursacht ;-).
LG und ein schönes Wochenende!
Michael
Anzeige
AW: For schleife Zeile Überspringen
28.10.2016 11:44:24
MatthiasG
Hallo Tho(o)mas,
vielleicht so?

For i = 0 To 17
anz = Application.WorksheetFunction.Count(Worksheets("Tabelle1").Range(Cells(3 + i, 4),  _
Cells(3 + i, 19)))
If anz  0 Then
meani = Application.WorksheetFunction.Sum(Worksheets("Tabelle1").Range(Cells(3 + i, 4),  _
Cells(3 + i, 19))) / anz
Set RangeMean = Worksheets("Tabelle1").Cells(3 + i, 19)
RangeMean.Value = meani
End If
Next i
End Sub

Gruß Matthias
AW: For schleife Zeile Überspringen
28.10.2016 12:09:37
Thoomas
Hi Matthias,
der Michael hatte das schon super gelöst, aber dir auch ein dickes Danke für deine Unterstützung :).
Schönes Wochenende
Anzeige

232 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige