Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Array auf einmal in Tabellenblatt schreiben

Array auf einmal in Tabellenblatt schreiben
24.09.2015 11:47:12
Bonduca01
Hallo liebes Forum,
ich versuche schon den ganzen Vormittag lang einen Array auf einmal in ein Tabellenblatt zu schreiben.
Mein Array ist folgendermaßen deklariert: Dim Array(500,4)as Variant.Mein Array füllt sich über eine Schleife, beginnend bei array(3,4). Die Werte werden nicht direkt aus einem Tabellenblatt gelesen, sondern in einem Makro berechnet

For i=3 to 500
Array(i,4) = irgendetwas
Next i

Jetzt möchte ich den Array in ein neues Tabellenblatt auf einmal ausgeben lassen (mit einer Schleife dauert es ziemlich lange, da mein Array groß ist).
Hab schon folgendes versucht:

Dim Array (500,4) as Variant
Range("A1:B26600") = Array
oder:
Tabelle1.Range("A1").Resize(UBound(array, 1) - LBound(array, 1) + 1, UBound(array, 2) - LBound( _
array, 2) + 1).Value = Array
Bisher bleibt der Bereich A1:B26600 in Tabelle1 leer.
Was mache ich falsch?

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array auf einmal in Tabellenblatt schreiben
24.09.2015 11:58:23
Rudi
Hallo,
der Bereich muss genauso groß sein wie das Array, also 501 Zeilen und 5 Spalten.
Gruß
Rudi

AW: Array auf einmal in Tabellenblatt schreiben
24.09.2015 16:50:00
Michael
Hi Bonduca01,
lies mal bitte: http://www.online-excel.de/excel/singsel_vba.php?f=152
Das ist eine Einsteiger-Info für Arrays.
Was Rudi meint, ist, daß Felder standarmäßig nullbasiert sind, d.h. die Zählung der Felder beginnt bei 0.
Übrigens hilft es Dir nichts, wenn Du das Array erst ab 3 füllst - wenn Du es komplett schreibst, werden Deine vorhandenen Werte in den ersten Zeilen trotzdem überschrieben, vermutlich mit 0 oder "".
Teste mal:
Sub arrayTest()
Dim a(1 To 10, 1 To 5) As Long
Dim zeile As Long, spalte As Long
For zeile = 1 To 10
For spalte = 1 To 5
a(zeile, spalte) = zeile * spalte
Next
Next
Range("A3:E12") = a
Range("b15").Resize(UBound(a, 1) - LBound(a, 1) + 1, UBound(a, 2) - _
LBound(a, 2) + 1).Value = a
End Sub
Schöne Grüße,
Michael
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Array auf einmal in Tabellenblatt schreiben


Schritt-für-Schritt-Anleitung

Um ein Array in Excel effizient in ein Tabellenblatt zu schreiben, befolge diese Schritte:

  1. Deklaration des Arrays: Zuerst musst Du Dein Array deklariert haben. Ein Beispiel könnte so aussehen:

    Dim Array(500, 4) As Variant
  2. Befüllen des Arrays: Fülle das Array mit Werten. Hier ist ein einfaches Beispiel:

    For i = 3 To 500
       Array(i, 4) = irgendetwas
    Next i
  3. Array in das Tabellenblatt schreiben: Verwende die Range-Eigenschaft, um das Array auf einmal in das Tabellenblatt zu schreiben. Achte darauf, dass der Zielbereich die gleiche Größe wie das Array hat:

    Tabelle1.Range("A1").Resize(UBound(Array, 1) - LBound(Array, 1) + 1, UBound(Array, 2) - LBound(Array, 2) + 1).Value = Array

Häufige Fehler und Lösungen

Ein häufiger Fehler ist, dass der Zielbereich nicht die gleiche Größe wie das Array hat. Achte darauf, dass Du genügend Zeilen und Spalten reservierst.

  • Fehler: Der Zielbereich bleibt leer.
  • Lösung: Überprüfe die Dimensionen des Arrays und den Zielbereich. Stelle sicher, dass der Bereich, den Du verwendest, mit der Größe des Arrays übereinstimmt.

Ein weiterer häufiger Fehler ist die Nullbasierung von Arrays in VBA. Arrays beginnen standardmäßig bei 0, aber Du kannst sie so deklarieren, dass sie bei 1 beginnen.


Alternative Methoden

Eine alternative Methode, um ein Array in Excel auszugeben, ist die Verwendung von vba array ausgeben in Kombination mit der Methode Transpose, falls Du das Array in einer anderen Ausrichtung benötigst.

Range("A1").Resize(UBound(Array, 1), UBound(Array, 2)).Value = Application.Transpose(Array)

Diese Methode kann besonders nützlich sein, wenn Du Vektoren in Excel erzeugen möchtest.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um ein Array auszugeben:

Sub BeispielArrayInTabelle()
    Dim a(1 To 10, 1 To 5) As Long
    Dim zeile As Long, spalte As Long

    For zeile = 1 To 10
        For spalte = 1 To 5
            a(zeile, spalte) = zeile * spalte
        Next
    Next

    Range("A1:E10") = a  ' Hier wird das Array direkt in die Tabelle geschrieben
End Sub

In diesem Beispiel wird ein 10x5 Array in die Zellen A1 bis E10 ausgegeben.


Tipps für Profis

  • Nutze Option Base 1, um die Standardindizierung auf 1 zu setzen, wenn Du häufig mit 1-basierten Arrays arbeitest.
  • Denke daran, dass die Verwendung von Arrays in VBA die Performance erheblich steigern kann, insbesondere bei großen Datenmengen.
  • Überlege, ob Du die Collection- oder Dictionary-Objekte nutzen willst, die mehr Flexibilität bieten als Arrays.

FAQ: Häufige Fragen

1. Was ist ein Array in Excel?
Ein Array in Excel ist eine Datenstruktur, die mehrere Werte in einer einzelnen Variablen speichert. Es kann eindimensional oder mehrdimensional sein.

2. Wie kann ich die Größe eines Arrays ändern?
Du kannst die Größe eines Arrays nicht direkt ändern. Du musst ein neues Array mit der gewünschten Größe erstellen und die Werte kopieren.

3. Was bedeutet "Nullbasierung" von Arrays?
Das bedeutet, dass die Indizes von Arrays in VBA standardmäßig bei 0 beginnen. Du kannst jedoch auch 1-basierte Arrays verwenden, wenn Du dies bei der Deklaration angibst.

4. Wie gebe ich ein Array in Excel aus?
Du kannst ein Array in Excel ausgeben, indem Du den Zielbereich an die Größe des Arrays anpasst und die Value-Eigenschaft 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