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

Forumthread: Array in einzelne Zellen ausgeben

Array in einzelne Zellen ausgeben
12.09.2017 14:25:42
Tobi93
Liebe Excelianer,
kann mir jemand sagen was ich falsch mache? Ich versuche einen Array auszulesen der durch die Split() Funktion erzeugt wurde.
Es kommt die Fehlermeldung:
Index außerhalb des gültigen Bereichs.
Mein Code ist wie folgt:
TextMitte = Mid(SearchString, Anfangsposition, LängeTextMitte)
Dim SplitArray() As String
SplitArray() = Split(TextMitte, " ")
For i = 0 To LBound(SplitArray, 1)
Sheets("Tabelle1").Range(1, i).Value = SplitArray(i)
kann es sein das ich die LBound Funktion falsch benutze?
Beste Grüße
Tobias Beetz
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Array in einzelne Zellen ausgeben
12.09.2017 14:37:00
Fennek
Hallo,
ungeprüft, Bedingung ist, dass "Textmitte" mindestens 1 Leerzeichen enthält:

TextMitte = Mid(SearchString, Anfangsposition, LängeTextMitte)
Ar = split(Textmitte) 'Leerzeichen ist default
for i = 0 to ubound(Ar) 'ubound ist die obere Grenze, lbound die unteres
Sheets("Tablle1").Range(1,i) = Ar(i)
next i
mfg
Anzeige
AW: Array in einzelne Zellen ausgeben
12.09.2017 15:12:35
Gerd
Hallo Tobias!
Sub test2()
Const Searchstring = "aa bb cc dd"
Const i = 3
Dim V As Variant
V = Split(Mid(Searchstring, 4, 5), " ")
Sheets("Tabelle1").Cells(1, i).Resize(1, UBound(V) + 1) = V
End Sub

Gruß Gerd
AW: Array in einzelne Zellen ausgeben
12.09.2017 17:20:25
Daniel
Hi
Folgende Fehler:
1. den höchsten Index eines Arrays bekommst du mit UBound, nicht mit LBound.
2. Range(1, i) ist Unsinn, das Range braucht ein Zelladresse als Text ("A1"),
   du meinst hier Cells(1, i)
3. der Spaltenzähler für Cells beginnt bei 1 und nicht bei 0
korrekt dann:
for i = 0 to Ubound(SplitArray)
Sheets("Tabelle1").Cells(1, i + 1) = SplitArray(i)
Next

oder alternativ:
   Sheets("Tabelle1").Range("A1").Offset(0, i) = SplitArray(i)

die Schleife an sich ist hier unnötig.
du kannst das Array auch direkt in die Zellen schreiben:
Sheets("Tabelle1").Range("A1").Resize(1, Ubound(SplitArray) + 1).Value = SplitArray
wenn die Werte des SplitArrays nicht nebeneindaner sondern untereinander geschrieben werden sollen dann:
.Resize(Ubound(SplitArray) + 1, 1).Value = Worksheetfunction.Transpose(SplitArray)
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Array in einzelne Zellen ausgeben


Schritt-für-Schritt-Anleitung

Um ein Excel-Array aus einzelnen Zellen auszugeben, kannst du die Split()-Funktion verwenden, um einen längeren Text in mehrere Teile zu zerlegen. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Erstelle eine neue Subroutine in deinem VBA-Editor:

    Sub ArrayInZellenAusgeben()
  2. Definiere den Text und wende die Split()-Funktion an:

    Dim SearchString As String
    SearchString = "Dies ist ein Beispieltext"
    Dim SplitArray() As String
    SplitArray = Split(SearchString, " ")
  3. Gib das Array in die Zellen aus:

    Dim i As Integer
    For i = 0 To UBound(SplitArray)
       Sheets("Tabelle1").Cells(1, i + 1).Value = SplitArray(i)
    Next i
  4. Schließe die Subroutine:

    End Sub
  5. Führe die Subroutine aus, um das Array in die Zellen zu schreiben.


Häufige Fehler und Lösungen

Hier sind einige häufige Fehler, die beim Ausgeben eines Excel-Arrays in einzelne Zellen auftreten können, und deren Lösungen:

  • Index außerhalb des gültigen Bereichs: Stelle sicher, dass du die UBound()-Funktion korrekt verwendest. Sie gibt den höchsten Index des Arrays zurück.

  • Falsche Zelladresse: Verwende Cells(1, i + 1) anstelle von Range(1, i). Range erwartet einen Zellbezug als Text.

  • Spaltenindex beginnt bei 1: Denke daran, dass das Zählen in Excel bei 1 beginnt, nicht bei 0.


Alternative Methoden

Es gibt auch alternative Methoden, um ein Excel-Array auszugeben:

  • Direktes Ausgeben:

    Sheets("Tabelle1").Range("A1").Resize(1, UBound(SplitArray) + 1).Value = SplitArray
  • Werte untereinander schreiben:

    Sheets("Tabelle1").Range("A1").Resize(UBound(SplitArray) + 1, 1).Value = Application.Transpose(SplitArray)

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du mit Arrays in Excel arbeiten kannst:

  1. Beispiel mit festem Text:

    Dim Text As String
    Text = "Apfel Banane Orange"
    Dim FruchtArray() As String
    FruchtArray = Split(Text, " ")
    Sheets("Tabelle1").Range("A1").Resize(1, UBound(FruchtArray) + 1).Value = FruchtArray
  2. Beispiel mit dynamischem Text (z.B. aus einer Zelle):

    Dim DynamischerText As String
    DynamischerText = Sheets("Tabelle1").Cells(2, 1).Value
    Dim TextArray() As String
    TextArray = Split(DynamischerText, " ")
    Sheets("Tabelle1").Range("A2").Resize(1, UBound(TextArray) + 1).Value = TextArray

Tipps für Profis

  • Verwende Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind.

  • Kommentiere deinen Code ausführlich, um die Lesbarkeit und Wartbarkeit zu verbessern.

  • Nutze WorksheetFunction.Transpose(), um Werte einfach untereinander anzuzeigen, anstelle sie manuell in jede Zelle zu schreiben.


FAQ: Häufige Fragen

1. Wie kann ich lange Texte in Excel-Zellen untereinander ausgeben?
Verwende die Transpose()-Funktion, um ein Array in mehrere Zeilen auszugeben.

2. Was ist der Unterschied zwischen LBound und UBound in VBA?
LBound gibt den niedrigsten Index eines Arrays zurück, während UBound den höchsten Index zurückgibt. Für die meisten Excel-Arrays, die durch Split() erzeugt werden, verwendest du UBound für die Schleifensteuerung.

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