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

Eindim Array ohne Leer aus Spaltenrange

Eindim Array ohne Leer aus Spaltenrange
27.08.2021 08:46:37
SchubertFranzl
Hallo
könnt Ihr mir bitte helfen?
Gegeben: Array mit Texten und Leerstellen, im Beispielmakro erzeugt aus einem Spaltenrange.
Gesucht:
Eindimensionales Array mit allen Einträgen, aber ohne Leereinträge.
Wenn geht, ohne Schleife.
Eindimensionales Array geht (= Vektor), aber Leereinträge entfernen?
Hier das Makro, wo dieses eindimensionale Array namens Ergebnis erzeugt werden soll.

Sub Array1()
Dim Vektor As Variant
Range("C4") = "Auto"
Range("C5") = ""
Range("C6") = "Baum"
Range("C7") = "Blume"
Vektor = WorksheetFunction.Transpose(Range("C4:C7"))
Debug.Print Join(Vektor, vbCr)  'Kontrollausdruck
Dim Ergebnis As Variant
End Sub
Habe es mit Filter(array) probiert, bekomme es aber nicht hin.
LG, Franz

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eindim Array ohne Leer aus Spaltenrange
27.08.2021 09:10:47
Daniel
Hi
Wie hast du den Filter angewendet?
Alternativ so:

For each X in Range("C4:C7").Value
IF x  "" then txt = txt & "|" & X
Next
Vektor = Split(Mid(txt, 2); "|")
Gruß Daniel
AW: Eindim Array ohne Leer aus Spaltenrange
27.08.2021 09:13:30
Rudi
Hallo,
ohne Schleife wird das nichts.

Sub Array1()
Dim Vektor(), i As Long
Dim a As Range, c As Range
Range("C4") = "Auto"
Range("C5") = ""
Range("C6") = "Baum"
Range("C7") = "Blume"
ReDim Vektor(Application.CountA(Range("c4:c7")) - 1)
For Each a In Range("C4:C7").SpecialCells(xlCellTypeConstants).Areas
For Each c In a.Cells
Vektor(i) = c
i = i + 1
Next c
Next a
Debug.Print Join(Vektor, vbCr)  'Kontrollausdruck
End Sub
Gruß
Rudi
Anzeige
AW: Eindim Array ohne Leer aus Spaltenrange
27.08.2021 10:09:51
PawelPopolski
Hallo,
keine Ahnung, ob das performanter oder im Ergebnis aufwändiger ist, aber ich hatte folgende Idee:
Werte filtern (geht sicher auch mit Spezialfilter) und dann die gefilterten Werte ins Array.
Option Explicit

Sub Array1()
Dim Vektor As Variant
Range("C3") = "Text"
Range("C4") = "Auto"
Range("C5") = ""
Range("C6") = "Baum"
Range("C7") = "Blume"
Dim rng As Range
Set rng = Range("C3:C7")
rng.AutoFilter 1, Criteria1:=""
Range("C4:C7").SpecialCells(xlCellTypeVisible).Copy Range("F1")
ActiveSheet.ShowAllData
Dim lRow As Long
lRow = Range("F3").CurrentRegion.Rows.Count
Vektor = WorksheetFunction.Transpose(Range("F1:F" & lRow))
Debug.Print Join(Vektor, vbCr)  'Kontrollausdruck
Dim Ergebnis As Variant
End Sub

Anzeige
AW: Eindim Array ohne Leer aus Spaltenrange
27.08.2021 13:43:56
GerdL
Hallo Franz,
du könntest die Quelle manipulieren.

Sub Unit()
Dim Vektor As Variant
Range("C4") = "Auto"
Range("C5") = ""
Range("C6") = "Baum"
Range("C7") = "Blume"
Range("C4:C7").Replace "", "TEST", xlWhole
Vektor = Filter(WorksheetFunction.Transpose(Range("C4:C7")), "TEST", False, vbTextCompare)
Range("C4:C7").Replace "ACDC", "", xlWhole
Debug.Print Join(Vektor, vbCr)  'Kontrollausdruck
End Sub
Gruß Gerd
AW: Eindim Array ohne Leer aus Spaltenrange
28.08.2021 15:46:36
SchubertFranzl
Wieder was gelernt.
Danke für Eure interessanten Vorschläge.
LG, Franz

98 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige