Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Variablen in For-Schleifen erzeugen

Variablen in For-Schleifen erzeugen
11.01.2018 21:04:33
Tim

Hallo zusammen,
ich komme gerade nicht weiter, hat jemand eine Idee?
Wie kann ich Variablen erzeugen?
For i = 1 To 99
Sheets("Sheet").Range("$A$9:$C$1000").AutoFilter Field:=2, Criteria1:="*" & i
Zahl & i = Sheets("Sheet").Range("F5").Value
Next
Das Fett markierte klappt leider nicht.
In der Zelle F5 steckt die Formel "=TEILERGEBNIS(9;C10:C1000)"
Es soll 99x ein Filter gesetzt werden
und jeweils eine Variable mit dem Inhalt der Zelle F5 befüllt werden.
Zahl1 =
Zahl2 =
.
.
Zahl99=
Jemand eine Idee warum das nicht funktioniert?
lg und Danke Tim
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variablen in For-Schleifen erzeugen
11.01.2018 21:15:48
Sepp
Hallo Tim,
so geht das nicht, aber z.B. so.
Sub tim()
Dim i As Long, zahl(1 To 99) As Long

With Sheets("Sheet")
  For i = 1 To 99
    .Range("$A$9:$C$1000").AutoFilter Field:=2, Criteria1:="*" & i
    zahl(i) = .Range("F5").Value
  Next
End With
End Sub

Gruß Sepp

Anzeige
AW: Variablen in For-Schleifen erzeugen
11.01.2018 21:38:40
Tim
Ahh Danke Sepp,
funktioniert prima.
Das mit dem Zahl(i) hatte ich auch probiert, hatte bei mir nicht funktioniert, weil ich nicht mit Dim Zahl(1 to 99) definiert habe.
Top Vielen Dank
Gruß Tim
AW: Variablen in For-Schleifen erzeugen
11.01.2018 22:30:14
Tim
Darf ich noch mal eine Frage in die Runde Werfen?
Wie kann ich den den nun mit den Variablen Rechnen?
Summe aus Zahl(1) bis Zahl(99)
Mittelwert (Die Summe durch 99 teilen)
Höchsterwert
Gibt es eine Art Formelsammlung für VBA?
Anzeige
AW: Variablen in For-Schleifen erzeugen
11.01.2018 22:46:08
Tim
Ich habe das nun so gelöst, bestimmt geht es auch einfacher?
For i = 1 To 99
Summe = Summe + zahl(i)
Next
Mittelwert = Summe / 99
Debug.Print "Summe: " & Summe
Debug.Print "Mittelwert: " & Mittelwert
Leider hat der Mittelwert zu viele Nachkomma stellen, obwohl Mittelwert As Double.
Double heißt eigentlich 2 Kommata, dachte ich.
Anzeige
AW: Variablen in For-Schleifen erzeugen
11.01.2018 22:50:00
Sepp
Hallo Tim,
MsgBox Application.Sum(zahl)
MsgBox Application.Average(zahl)

Gruß Sepp

Anzeige
AW: Und Double hat nichts ...
11.01.2018 23:42:49
Tim
Danke, da habe ich ja heute wieder einiges gelernt.
Falls noch jemand das Problem hat...
Für Rundung auf 2 Stellen:
MsgBox Application.Round(Application.Average(zahl), 2)
Der Höchste Wert:
MsgBox Application.Max(zahl)
Danke Sepp
Gute N8
Tim
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Variablen in For-Schleifen in VBA


Schritt-für-Schritt-Anleitung

  1. Deklaration der Variablen: Zuerst musst du die Variablen in deinem VBA-Code deklarieren. Verwende Dim, um das Array zahl zu erstellen, das die Werte speichern soll.

    Dim i As Long, zahl(1 To 99) As Long
  2. For-Schleife einrichten: Setze eine For-Schleife auf, um durch die Werte von 1 bis 99 zu iterieren.

    For i = 1 To 99
  3. Filter anwenden: Wende den AutoFilter auf das gewünschte Blatt an, um die Daten zu filtern.

    Sheets("Sheet").Range("$A$9:$C$1000").AutoFilter Field:=2, Criteria1:="*" & i
  4. Daten in das Array speichern: Weise den Wert der Zelle F5 dem aktuellen Index des Arrays zu.

    zahl(i) = Sheets("Sheet").Range("F5").Value
  5. Schleife beenden: Vergiss nicht, die Next-Anweisung hinzuzufügen, um die Schleife zu schließen.

    Next

Der vollständige Code sieht wie folgt aus:

Sub tim()
    Dim i As Long, zahl(1 To 99) As Long
    With Sheets("Sheet")
        For i = 1 To 99
            .Range("$A$9:$C$1000").AutoFilter Field:=2, Criteria1:="*" & i
            zahl(i) = .Range("F5").Value
        Next
    End With
End Sub

Häufige Fehler und Lösungen

  • Fehler: "Variable nicht definiert": Stelle sicher, dass du deine Variablen mit Dim korrekt deklariert hast.

  • Fehler: "Index außerhalb des Bereichs": Achte darauf, dass du beim Zugriff auf das Array zahl keine Werte außerhalb des definierten Bereichs verwendest (1 bis 99).

  • Problem mit der Rundung: Wenn dein Mittelwert zu viele Nachkommastellen hat, könnte das an der Art und Weise liegen, wie du die Werte speicherst. Verwende Application.Round, um das Ergebnis zu formatieren.


Alternative Methoden

Eine alternative Methode, um die Summe und den Durchschnitt zu berechnen, besteht darin, die integrierten Funktionen von Excel zu verwenden:

MsgBox Application.Sum(zahl)
MsgBox Application.Average(zahl)

Dadurch sparst du dir die manuelle Berechnung innerhalb einer Schleife.


Praktische Beispiele

Hier ist ein Beispiel, wie du die Ergebnisse aus dem Array zahl verwenden kannst:

Dim Summe As Double
Summe = 0

For i = 1 To 99
    Summe = Summe + zahl(i)
Next

Dim Mittelwert As Double
Mittelwert = Application.Round(Summe / 99, 2)

MsgBox "Summe: " & Summe
MsgBox "Mittelwert: " & Mittelwert
MsgBox "Höchster Wert: " & Application.Max(zahl)

Tipps für Profis

  • Verwende Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.

  • Nutze Debug.Print, um Werte während der Ausführung des Codes zu überprüfen. Es ist nützlich, um Probleme schnell zu identifizieren.

  • Experimentiere mit benutzerdefinierten Funktionen, um spezifische Berechnungen durchzuführen, die du oft verwendest.


FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der Variablen dynamisch festlegen?
Du kannst die Größe des Arrays zur Laufzeit festlegen, indem du ReDim verwendest. Beispiel: ReDim zahl(1 To num), wobei num eine Variable ist.

2. Was ist der Unterschied zwischen Long und Double?
Long ist ein Datentyp für ganze Zahlen, während Double für Fließkommazahlen mit Dezimalstellen verwendet wird. Verwende Double, wenn du mit Werten rechnen möchtest, die Nachkommastellen benötigen.

3. Wie kann ich den höchsten Wert im Array ermitteln?
Verwende die Funktion Application.Max(zahl), um den höchsten Wert in deinem Array zahl zu finden.

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