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

Forumthread: 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
Anzeige

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
Anzeige
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige