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

Forumthread: Array füllen ohne For...Next-Schleife

Array füllen ohne For...Next-Schleife
Micha
Hallo,
ich möchte einen Array-füllen, ohne eine Schleife benutzen zu müssen, um Zeit zu sparen, d.h. anstatt
For CalcArraycnt = 1 To 30
CalcArray(cnt, CalcArraycnt) = "=PRODUCT(R[-2]C,R[-1]C)"
Next
irgendwas wie
Range(CalcArray(cnt, 1),CalcArray(cnt, 30) = "=PRODUCT(R[-2]C,R[-1]C)"
irgendjemand ne Idee ?
Grüße
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Array füllen ohne For...Next-Schleife
13.10.2009 12:21:38
Hajo_Zi
Hallo Micha,
meinst Du sowas?
Dim arr As Variant
arr = Array("ä", "ae", "ö", "oe", "ü", "ue", "ß", "ss")

AW: Array füllen ohne For...Next-Schleife
13.10.2009 13:27:22
Micha
Hallo,
nein, der Array soll dynamisch sein, lediglich eine 'Zeile' des arrays (cnt = 3) soll nicht 'Spalte' für 'Spalte' gefüllt werden. Ich würde nur gerne auf einmal alle 'Zellen' einer 'Zeile' des arrays füllen, ohne eine
Schleife verwenden zu müssen.
Vielleicht noch jemand eine Idee ?
Grüße
Anzeige
AW: Array füllen ohne For...Next-Schleife
13.10.2009 12:22:15
Josef
Hallo Micha,
beschreib mal etwas genauer was du vor hast.
Gruß Sepp

AW: Array füllen ohne For...Next-Schleife
13.10.2009 13:36:25
Micha
Hallo Sepp,
angenommen, mein array umfasst 5 'Zeilen' und 30 'Spalten'. Die ersten beiden 'Zeilen' werden über For...Next - Schleifen entsprechend bestimmter Bentzereingabe gefüllt. In der dritten 'Zeile' sollen nun
in jeder 'Zelle' des arrays die gleiche Formel stehen. Anstelle nun mit einer For...Next - Schleife die gleiche
Formel in die 'Zellen' des Arrays zu schreiben, möchte ich auf einmal alle 'Zellen' der dritten 'Zeile' des arrays mit dieser Formel füllen.
So als würde ich über Range(Cells(3,1),Cells(3,30)) = "=PRODUCT(R[-2]C,R[-1]C)"
in eine Excel-Zeile auf einmal die gleiche Formel in die dritte Zeile, Spalten 1-30 schreiben wollen -
das gleiche halt in ein array.
ich hoffe das ist halbwegs verständlich.
Grüße
Anzeige
AW: Array füllen ohne For...Next-Schleife
14.10.2009 01:02:45
Daniel
Hi
solange du mit Arrays arbeitest, ist VBA doch sauschnell.
Schleifen sind da kein Problem.
Dein Makro wird vielleicht übersichtlicher, aber sicherlich kaum schneller, da VBA die Schleife ja intern doch durchführen muss.
wenn Schleifenfrei, dann vielleicht so (der Code ist in einem freien Tabellenblatt auszführen):
with Cells(1,1).resize(ubound(CalcArray,1), Ubound(CalcArray, 2))
.Formular1c1 = CalcArray
.cells(cnt,1).Resize(1,30).FormulaR1C1 = "=PRODUCT(R[-2]C,R[-1]C)"
CalcArray = .FormulaR1C1
.Clear
end with

Gruß, Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Array füllen ohne For...Next-Schleife in Excel


Schritt-für-Schritt-Anleitung

  1. Erstelle ein neues VBA-Modul:

    • Öffne Excel und drücke Alt + F11, um den VBA-Editor zu öffnen.
    • Klicke auf "Einfügen" und wähle "Modul".
  2. Definiere das Array:

    • Erstelle ein Array, welches die gewünschten Daten enthalten soll. Zum Beispiel:
      Dim CalcArray(1 To 5, 1 To 30) As Variant
  3. Fülle das Array ohne Schleife:

    • Verwende die Resize-Methode, um das gesamte Array auf einmal zu füllen:
      With Cells(1, 1).Resize(5, 30)
      .FormulaR1C1 = "=PRODUCT(R[-2]C,R[-1]C)"
      CalcArray = .Value
      End With
  4. Verwende das Array:

    • Nach dem Füllen kannst du das Array für Berechnungen oder zur Darstellung in deiner Excel-Tabelle nutzen.

Häufige Fehler und Lösungen

  • Fehler: "Typen sind inkompatibel":

    • Dieser Fehler tritt auf, wenn das Array nicht korrekt dimensioniert ist. Stelle sicher, dass die Dimensionen des Arrays richtig angegeben sind.
  • Fehler: "Formel kann nicht angewendet werden":

    • Überprüfe, ob die Formel korrekt ist und dass alle notwendigen Zellen im Array vorhanden sind.

Alternative Methoden

Wenn du das VBA-Array füllen möchtest, ohne eine For...Next-Schleife zu verwenden, gibt es verschiedene Alternativen:

  • Verwende die Evaluate-Funktion:

    Dim FormulaString As String
    FormulaString = "=PRODUCT(R[-2]C,R[-1]C)"
    Range("A3:AD3").FormulaR1C1 = FormulaString
  • Nutze Application.Transpose:

    • Diese Methode kann hilfreich sein, wenn du ein 1D-Array in ein 2D-Array umwandeln möchtest.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du ein Array in VBA füllen kannst:

Sub FillArrayWithoutLoop()
    Dim CalcArray(1 To 5, 1 To 30) As Variant
    Dim i As Integer

    ' Fülle die ersten beiden Zeilen mit Werten
    For i = 1 To 2
        CalcArray(i, 1) = i * 10
    Next i

    ' Fülle die dritte Zeile mit einer Formel
    With Cells(3, 1).Resize(1, 30)
        .FormulaR1C1 = "=PRODUCT(R[-2]C,R[-1]C)"
        CalcArray(3, 1) = .FormulaR1C1
    End With
End Sub

In diesem Beispiel wird eine Zeile des Arrays mit einer Formel gefüllt, ohne eine Schleife zu verwenden.


Tipps für Profis

  • Optimiere deine Formeln: Wenn du viele Berechnungen in deinem Array hast, überlege, ob du deine Formeln vereinfachen kannst, um die Berechnungszeit zu reduzieren.
  • Vermeide unnötige Berechnungen: Fülle nur die Zellen, die du tatsächlich benötigst, um die Leistung zu verbessern.
  • Nutze die Option Explicit-Anweisung: Dies hilft dir, Fehler bei der Variablen-Deklaration zu vermeiden und sorgt für klareren Code.

FAQ: Häufige Fragen

1. Kann ich mit dieser Methode auch andere Formeln verwenden? Ja, du kannst jede Formel verwenden, die in Excel unterstützt wird. Achte darauf, die richtige Syntax zu verwenden.

2. Funktioniert das nur in bestimmten Excel-Versionen? Die beschriebenen Methoden funktionieren in Excel 2007 und späteren Versionen. Stelle sicher, dass du die richtige Syntax für die jeweilige Version verwendest.

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