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

Varibale - Array - ohne Schleife ausgeben

Varibale - Array - ohne Schleife ausgeben
06.02.2017 10:17:58
Björn
Hallo,
ich würde gerne eine Vielzahl von Werten im Arbeitsspeicher berechnen lassen, die einzelnen Werte in einem Array speichern und sie dann auf einmal in einem Zellbereich ausgeben. Bis jetzt gelingt mir das nur mit einer Schleife, in der ich jede einzelne Array Position aufrufe und sie in eine Zelle schreibe. Leider dauert diese Lösung sehr lange.
Hier mein Ansatz, leider bekomme ich nur den gleichen Wert ausgegeben. Vielleicht kann mir _
jemand helfen?

Sub ArrayNutzen()
Dim Speicher(1 To 3000) As Long
Dim i As Integer
Dim j As Integer
'Werte berechnen und in Array speichern
Cells(1, 1).Value = 2500 'soll jeweils im vorfeld durch Eingabe bestimmt werden
i = 1
j = Cells(1, 1).Value
Do Until i > j
Speicher(i) = i + 1 'hier nur eine exemplarische Rechnung
i = i + 1
Loop
'Gespeicherte Werte im Array auf einmal in einen Zellbereich schreiben
Range(Cells(178, 13), Cells(178 + j - 1, 13)) = Speicher
End Sub

danke.
Gruß
Björn

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Varibale - Array - ohne Schleife ausgeben
06.02.2017 10:24:27
Fennek
Hallo,
ja, es geht und ist richtig schnell.
Als Tutorial ist m.E. bestens geeignet: www.snb-vba.eu
Im Beispiel könnte (ungeprüft) gehen:

Range("M178").resize(ubound(speicher)) = application.transpose(speicher)
mfg
AW: Varibale - Array - ohne Schleife ausgeben
06.02.2017 10:26:23
Daniel
Hi
wenn du ein eindimensionales Array als ganzes in einen Zellbereich schreiben willst, dann so:
1. Werte sollen in eine Zeile geschrieben werden:
Cells(178, 13).Resize(1, Ubound(Speicher) - Lbound(Speicher) + 1) = Speicher

2. Werte sollen in eine Spalte geschrieben werden (das ist meistens der Fall:
Cells(178, 13).Resize(Ubound(Speicher) - LBound(Speicher) + 1, 1) = Worksheetfunction.Transpose(Speicher)
Hintergrund ist folgender:
- wenn du ein Array in einen Zellbereich schreiben wills, muss der Zellbereich genauso groß sein, wie ie Anzahl der Elemente im Array
- der Startindex eines Arrays kann unterschiedlich sein (0, 1, aber auch jeder andere Wert). Daher berechnet man die Anzahl der Elemente am besten über die Differenz aus erstem (Lbound) und letztem (Ubound) Index
- wird ein eindimensionales Array wie ein zweidimensionales Array verwendet, so entspricht es einem Array mit einer Zeilen und vielen Spalten. Daher muss man es Transponieren, wenn man die Werte in eine Spalte und viele Zeilen schreiben will.
Gruß Daniel
Anzeige
AW: Varibale - Array - ohne Schleife ausgeben
06.02.2017 11:41:07
Björn
Hallo Fennek und Daniel,
danke für Eure schnelle Hilfe, jetzt funktioniert es problemlos und ich habe einiges dazu gelernt.
Gruß und einen schönen Tag
Björn

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige