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

Jeden String nach Zeilenumbruch in Array schreiben

Jeden String nach Zeilenumbruch in Array schreiben
12.07.2019 13:19:39
Waldemar
Guten Tag,
ich habe eine Spalte in der in jeder Zelle verschiedene Werte mit einem Zeilenumbruch getrennt sind. In Zelle P2 steht zum beispiel folgender String:
Name1
Name2
Name3
In Zelle P3 könnte jetzt stehen:
Name1
Name2
Name4
Ich würde gerne wissen wie man eine Variant oder String Array erstellt die folgende Werte hat:
arrayName(0) = Name1
arrayName(1) = Name2
arrayName(2) = Name3
arrayName(3) = Name4
Ich weiß, dass man dafür eine Schleife braucht die man so oft durchläuft wie man
Zeilen in Spalte P hat bzw. -1 oder +1 weil man die Kopfzeile nicht nehmen will.
Ich weiß jedoch auch nicht, wie man das in VBA formulieren soll.
Ich bedanke mich schon einmal im voraus.
Waldi

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

Betreff
Datum
Anwender
Anzeige
AW: Jeden String nach Zeilenumbruch in Array schreiben
12.07.2019 13:28:27
MCO
Hallo Waldi!
    Dim arrayName As Variant
arrayName= WorksheetFunction.Transpose(Selection)

Gruß, MCO
AW: Jeden String nach Zeilenumbruch in Array schreiben
12.07.2019 13:41:12
Waldemar
Hallo MCO,
deine Lösung funktioniert soweit, nur habe ich, wie ich jetzt bemerkt habe, meine Frage nicht richtig gestellt. Ich habe eine Tabelle mit mehreren Spalten und ich würde gerne nur die Werte aus Spalte P übernehmen. Deine Lösung trägt jegliche Zellenwerte in das Array ein. Ich habe versucht die Zeile anzupassen, weiß jedoch nicht was ich als Argument für Selection benutzen soll.
AW: Jeden String nach Zeilenumbruch in Array schreiben
12.07.2019 13:43:05
Daniel
HI
beispielsweise so:
Sub MitTextString()
Dim arrNamen
Dim Zelle
Dim TeilText
Dim Ergebnis As String
For Each Zelle In Range("A1:A2")
For Each TeilText In Split(Zelle.Value, vbLf)
If InStr("|" & Ergebnis & "|", "|" & TeilText & "|") = 0 Then
Ergebnis = Ergebnis & "|" & TeilText
End If
Next
Next
arrNamen = Split(Mid(Ergebnis, 2), "|")
End Sub

hier sammelst du die Werte erstmal in einem Textstring und teilst diese am Schluss ins Array auf.
wenn du weiter ernsthaft mit VBA arbeiten willst, solltest du dir auch mal diese Variante anschauen.
sie nutzt das Dictionary-Objekt.
Das Dictionary-Objekt ist im Pirnzip ein eindimensionales Array mit einem Freitext-Index.
Wenn man das kennt und verstanden hat, lassen sich damit viele schöne Sachen programmieren, besipelsweise komplexe Auswertungen ähnlich einer Pivottabelle, oder superschnelle SVerweis-Varianten für große Datenmengen.
Auch wenn man hier die Möglichkeiten des Dictionarys nur ansatzweise verwendet, ist diese Aufgabe ein gutes Beispiel, das Dictionary kennen zu lernen.
Sub MitDictionary()
Dim arrNamen
Dim Zelle
Dim TeilText
Dim dic As Object
Set dic = CreateObject("scripting.dictionary")
For Each Zelle In Range("A1:A2")
For Each TeilText In Split(Zelle.Value, vbLf)
If Not dic.exists(TeilText) Then dic(TeilText) = 0
Next
Next
arrNamen = dic.Keys
End Sub
Gruß Daniel
Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige