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

Forumthread: Werte eines Arrays auf ein Mal in Range schreiben?

Werte eines Arrays auf ein Mal in Range schreiben?
17.10.2005 14:26:30
Jens
Hallo liebe Leute!
Mir schien, da gab's eine Möglichkeit...
Ich möchte die Werte eines Arrays auf einen Schlag an einen Range zuweisen. Etwa so:

Sub Test()
Dim intTest(1 to 3) As Integer
intTest(1) = 4
intTest(2) = 6
intTest(3) = 9
Range("A1:A3").Value = intTest()
End Sub

Geht aber so nicht, weil am Ende steht in allen Zellen nur die 4 drin.
Die Variante, jeden Wert einzeln zuzuweisen, möchte ich aus Zeiteffizienz-Gründen nicht gehen. Wenn's aber sonst eine sehr schnelle Möglichkeit gibt, dies zu machen, bin ich offen!
Vielen Dank für eure Antworten sagt wie immer
der Jens
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Werte eines Arrays auf ein Mal in Range schreiben?
17.10.2005 14:33:59
Uduuh
Hallo,
das Array muss 2-Dimensional sein (Zeile,Spalte).

Sub Test()
Dim intTest(1 To 3, 1 To 1) As Integer
intTest(1, 1) = 4
intTest(2, 1) = 6
intTest(3, 1) = 9
Range("A1:A3").Value = intTest()
End Sub

Gruß aus’m Pott
Udo

Anzeige
AW: Werte eines Arrays auf ein Mal in Range schrei
17.10.2005 14:36:08
Jens
Hallo Udo!
Danke, funktioniert! Hat mir sehr geholfen, also vielen Dank!
Jens
AW: Werte eines Arrays auf ein Mal in Range schreiben?
17.10.2005 14:35:09
MichaV
Hallo,
gehst doch, Du musst das Array vorher nur drehen:
Range("A1:A3").Value = WorksheetFunction.Transpose(intTest())
Gruss- Micha
PS: Rückmeldung wäre nett.
AW: Werte eines Arrays auf ein Mal in Range schrei
17.10.2005 15:07:43
Jens
Hallo Uduuh und MichaV!
Hab beide Versionen probiert, beide Funktionieren.
Allerdings ist die zweite Version (eindimensionales Array mit transponieren) um einiges schneller, v.a. bei größeren Datenmengen. Außerdem etwas einfacher zu implementieren.
Also vielen lieben Dank an euch beide, habt mir auf jeden Fall geholfen!
sagt der Jens
Anzeige
AW: Werte eines Arrays auf ein Mal in Range schrei
18.10.2005 07:41:19
Heiko
Moin Jens,
wenn du Transpose einsetzen willst, gerade bei großen Datensätzen, dann Vorsicht da gibt es Grenzen.
aus dem Online-Excel Forum von MichaV.
Auf der alten XLimits- Seite bin ich nun auf einen weiteren Hinweis gestolpert, der meine Vermutung bestätigt hat: Es gibt in Excel97 und 2000 (die kann ich testen) in einigen Fällen eine Einschränkung beim Arbeiten mit Arrays. XLimits sagt dazu:
Limitationen der Transpose-Methode
If you decide to use Excel's Transpose method instead of the TransposeDim() function to transpose the array, you should be aware of the following limitations with the Transpose method:
The array cannot contain an element that is greater than 255 characters.
The array cannot contain Null values.
The number of elements in the array cannot exceed 5461.
http://web.archive.org/web/20040706194455/http://195.186.84.74/xlimits/arrays.htm
( Ob der Link noch geht habe ich nicht getestet. !!! )
Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Werte eines Arrays auf ein Mal in Range schrei
18.10.2005 09:28:15
Jens
Hallo Heiko!
Danke für den Hinweis mit dem Transpose.
Inzwischen mache ich es so, dass ich einem größeren Zellbereich ein mehrdimensionales Array zuweise, also n Zeilen und m Spalten. So in der Art
redim intTest(1 to n, 1 to m)
...
Range(cells(1,1),cells(n,m)).value = intTest
Funktioniert bisher problemlos.
Danke trotzdem für deinen Hinweis.
LG,
Jens
Anzeige
AW: Werte eines Arrays auf ein Mal in Range schrei
18.10.2005 09:32:45
MichaV
Hallo,
danke Heiko, da hab ich nicht mehr dran gedacht.
Für alle, die es nicht glauben: (XL2000)


Option Explicit
Sub Test()
Dim a
Dim b
Dim i%
ReDim a(5460)
For i = 1 To UBound(a)
  a(i) = Rnd
Next
On Error Resume Next
b = WorksheetFunction.Transpose(a)
If Err.Number = 0 Then Debug.Print "Transponieren bei 5460 Elementen erfolgreich"
On Error GoTo 0
ReDim a(5461)
For i = 1 To UBound(a)
  a(i) = Rnd
Next
On Error Resume Next
b = WorksheetFunction.Transpose(a)
If Err.Number <> 0 Then Debug.Print "Transponieren bei 5461 Elementen nicht erfolgreich"
On Error GoTo 0
ReDim a(2)
For i = 1 To 2
  a(i) = Space(255)
Next i
On Error Resume Next
b = WorksheetFunction.Transpose(a)
If Err.Number = 0 Then Debug.Print "Transponieren bei Elementen mit Länge 255 erfolgreich"
On Error GoTo 0
ReDim a(2)
For i = 1 To 2
  a(i) = Space(256)
Next i
On Error Resume Next
b = WorksheetFunction.Transpose(a)
If Err.Number <> 0 Then Debug.Print "Transponieren bei Elementen mit Länge 256 nicht erfolgreich"
End Sub



Gruss- Micha.
Anzeige
;

Forumthreads zu verwandten Themen

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

Werte eines Arrays auf einmal in einen Range schreiben


Schritt-für-Schritt-Anleitung

Um die Werte eines Arrays in einen Excel-Range zu schreiben, kannst du die folgende Vorgehensweise nutzen. Hier ist ein einfaches Beispiel, wie du ein eindimensionales Array in eine Tabelle schreiben kannst:

Sub Test()
    Dim intTest(1 To 3) As Integer
    intTest(1) = 4
    intTest(2) = 6
    intTest(3) = 9
    Range("A1:A3").Value = Application.Transpose(intTest)
End Sub

Falls du ein mehrdimensionales Array verwenden möchtest, verwende diesen Code:

Sub Test()
    Dim intTest(1 To 3, 1 To 1) As Integer
    intTest(1, 1) = 4
    intTest(2, 1) = 6
    intTest(3, 1) = 9
    Range("A1:A3").Value = intTest
End Sub

Dieser Code weist die Werte des Arrays direkt dem angegebenen Range zu.


Häufige Fehler und Lösungen

  1. Fehler: Alle Zellen zeigen den gleichen Wert an.

    • Lösung: Stelle sicher, dass das Array mehrdimensional ist, z.B. intTest(1 To 3, 1 To 1).
  2. Fehler: Das Transponieren funktioniert nicht.

    • Lösung: Achte darauf, dass das Array nicht mehr als 5461 Elemente hat, und dass es keine Null-Werte oder Elemente mit mehr als 255 Zeichen enthält.
  3. Fehler: Der Range wird nicht aktualisiert.

    • Lösung: Überprüfe die Zellreferenzen und stelle sicher, dass du die richtige Range benutzt.

Alternative Methoden

Eine andere Methode, um Werte aus einem Array in einen Range zu schreiben, ist die Verwendung der WorksheetFunction.Transpose-Funktion. Hier ist ein Beispiel:

Sub Test()
    Dim intTest(1 To 3) As Integer
    intTest(1) = 4
    intTest(2) = 6
    intTest(3) = 9
    Range("A1:A3").Value = WorksheetFunction.Transpose(intTest)
End Sub

Diese Methode ist besonders nützlich, wenn du mit größeren Arrays arbeitest, da sie oft schneller ist.


Praktische Beispiele

Hier einige praktische Beispiele zur Verwendung von Arrays in Excel VBA:

  • Eindimensionales Array in eine Zeile schreiben:

    Sub Example1()
    Dim intTest(1 To 5) As Integer
    Dim i As Integer
    For i = 1 To 5
        intTest(i) = i * 2
    Next i
    Range("B1:F1").Value = intTest
    End Sub
  • Mehrdimensionales Array in einen Range schreiben:

    Sub Example2()
    Dim intTest(1 To 3, 1 To 2) As Integer
    intTest(1, 1) = 1
    intTest(1, 2) = 2
    intTest(2, 1) = 3
    intTest(2, 2) = 4
    intTest(3, 1) = 5
    intTest(3, 2) = 6
    Range("C1:D3").Value = intTest
    End Sub

Tipps für Profis

  • Leistungsoptimierung: Bei großen Datenmengen sollte die Nutzung von WorksheetFunction.Transpose bevorzugt werden, da diese Methode schneller arbeitet.
  • Fehlerbehandlung: Verwende On Error Resume Next, um Fehler beim Transponieren oder beim Zuweisen von Werten abzufangen.
  • Dynamische Arrays: Du kannst Arrays dynamisch mit ReDim anpassen, um die Größe zur Laufzeit zu ändern.

FAQ: Häufige Fragen

1. Wie kann ich ein Array in einen Range schreiben, der nicht zusammenhängend ist?
Du kannst die Werte einzeln zuweisen oder ein mehrdimensionales Array erstellen, das alle Werte enthält und dann in den gewünschten Range zuweisen.

2. Ist es möglich, ein Array mit Null-Werten in einen Range zu schreiben?
Nein, wenn das Array Null-Werte enthält, wird beim Zuweisen an den Range ein Fehler auftreten. Stelle sicher, dass alle Werte im Array gültig sind.

3. Welche Excel-Version benötige ich für diese Methoden?
Die Beispiele funktionieren mit Excel 2000 und höheren Versionen. Achte auf eventuelle Limitierungen in älteren Versionen.

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