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

Filtern und werte in ein Array lesen

Filtern und werte in ein Array lesen
27.03.2019 16:04:30
Christian
Moin alle zusammen,
in meiner Liste befinden sich etwa 14000 lines, diese lasse ich filtern und bekomme dann etwa 1500 lines als Ergebniss. Dannach möchte ich nur den gefilterten Bereich in mehrere Arrays lesen lassen. Leider merken meine Arrays nicht, dass ich denn Bereich gefiltert habe. Wo liegt mein Fehler?
Beste Grüße
Christian
lngLZeile = 14000
Beste Grüße
Option Explicit
Sub Monitor()
Dim WsMSPT As Worksheet
Dim WsQuelle As Worksheet
Dim lngLZeile As Long
Dim VariableA As Variant
Dim VariableC As Variant
Dim VariableD As Variant
Dim VariableE As Variant
Set WsQuelle = tabComp
Set WsMSPT = TabMSPT_Monitor
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With WsQuelle
.Range("A1").AutoFilter Field:=14, Criteria1:="MSPT"
lngLZeile = WsQuelle.Cells.Find("*", WsQuelle.Range("A1"), xlFormulas, xlWhole, xlByRows,  _
xlPrevious).Row
WsMSPT.Range("A3:P" & lngLZeile).Clear
VariableA = .Range("A2:C" & lngLZeile).Value
VariableC = .Range("D2:F" & lngLZeile).Value
VariableD = .Range("I2:L" & lngLZeile).Value
VariableE = .Range("P2:S" & lngLZeile).Value
End With
WsMSPT.Range("A3:C" & lngLZeile) = VariableA
WsMSPT.Range("F3:H" & lngLZeile) = VariableC
WsMSPT.Range("I3:L" & lngLZeile) = VariableD
WsMSPT.Range("M3:P" & lngLZeile) = VariableE
WsQuelle.Range("A" & lngLZeile).AutoFilter Field:=14
With WsMSPT
.Range("D3").Formula = "=IFERROR(VLOOKUP(B3,Shipset!L:S,8,FALSE),"""")" 'WO
.Range("D3:D" & lngLZeile).FillDown
.Range("E3").Formula = "=IFERROR(VLOOKUP(B3,Shipset!L:T,9,FALSE),"""")" 'WO
.Range("E3:E" & lngLZeile).FillDown
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
WsMSPT.Range("D3:E" & lngLZeile).Copy
WsMSPT.Range("D3:E" & lngLZeile).PasteSpecial Paste:=xlPasteValues
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Filtern und werte in ein Array lesen
27.03.2019 16:21:47
Daniel
Hi
Variable und Filterung passt nicht zusammen, bzw du kannst immer nur einen lückenlosen Zellbereich in ein Array einlesen.
eine mögliche Lösung wäre, dass du nicht über Arrays gehst, sondern die gefilterten Zellbereiche mit Copy-Paste überträgst. Dabei werden nur die sichtbaren Zeilen kopiert und beim Einfügen die Lücken geschlossen.
wenn du über Arrays gehen willst, darfst du nicht filtern, sondern musst den Quellbereich nach der Filterspalte sortieren, so dass alle Zellen mit gleichem Kriterium direkt untereinander stehen.
dann kannst du mit .FIND die jeweils erste und letzte Zeile mit dem Suchkriterium bestimmen und alle dazwischenliegenden Zellen in ein Array einlesen.
Gruß Daniel
Anzeige
AW: Filtern und werte in ein Array lesen
27.03.2019 16:28:06
Daniel
Ja was Daniel sagt, hatte vergessen dass du Arrays benutzt...
Meine Lösung
27.03.2019 16:53:55
Christian
Hey Daniel,
vielen Dank für deine Hinweise, der heutige Tag hat definitiv mein Verständnis von Arrays verbessert. Ich wusste noch nicht, dass ich nur lückenlosen Zellbereiche in ein Array einlesen lassen kann.
wenn du über Arrays gehen willst, darfst du nicht filtern, sondern musst den Quellbereich nach der Filterspalte sortieren, so dass alle Zellen mit gleichem Kriterium direkt untereinander stehen.
Das muss ich mir nochmal genauer anschaue wie ich das Umsetzen könnte. Du hast mir auf jeden Fall weiter geholfen. Als Zwischenlösung lasse ich jetzt erst mal alles über Arrays rüber kopieren, filtere dann alles außer MSPT heraus und lösche alles. Danach entferne ich denn Filter wieder und habe mein Ziel. Nicht die eleganteste Lösung aber Sie funktioniert jetzt.

Sub Monitor()
Dim WsMSPT As Worksheet
Dim WsQuelle As Worksheet
Dim lngLZeile As Long
Dim VariableA As Variant
Dim VariableC As Variant
Dim VariableD As Variant
Dim VariableE As Variant
Dim VariableF As Variant
Set WsQuelle = tabComp
Set WsMSPT = TabMSPT_Monitor
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With WsQuelle
.Range("A1").AutoFilter Field:=14, Criteria1:="MSPT"
lngLZeile = WsQuelle.Cells.Find("*", WsQuelle.Range("A1"), xlFormulas, xlWhole, xlByRows,  _
xlPrevious).Row
WsMSPT.Range("A3:Q" & lngLZeile).Clear
VariableA = .Range("A2:C" & lngLZeile).Value
VariableC = .Range("D2:F" & lngLZeile).Value
VariableD = .Range("I2:L" & lngLZeile).Value
VariableE = .Range("P2:S" & lngLZeile).Value
VariableF = .Range("O2:O" & lngLZeile).Value
End With
WsMSPT.Range("A3:C" & lngLZeile) = VariableA
WsMSPT.Range("F3:H" & lngLZeile) = VariableC
WsMSPT.Range("I3:L" & lngLZeile) = VariableD
WsMSPT.Range("M3:P" & lngLZeile) = VariableE
WsMSPT.Range("Q3:Q" & lngLZeile) = VariableF
WsQuelle.Range("A" & lngLZeile).AutoFilter Field:=14
With WsMSPT
.Range("D3").Formula = "=IFERROR(VLOOKUP(B3,Shipset!L:S,8,FALSE),"""")" 'WO
.Range("D3:D" & lngLZeile).FillDown
.Range("E3").Formula = "=IFERROR(VLOOKUP(B3,Shipset!L:T,9,FALSE),"""")" 'WO
.Range("E3:E" & lngLZeile).FillDown
.Range("A2").AutoFilter Field:=17, Criteria1:="MSPT"
.Range("A3:Q" & lngLZeile).Delete
.Range("A2").AutoFilter Field:=17
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
WsMSPT.Range("D3:E" & lngLZeile).Copy
WsMSPT.Range("D3:E" & lngLZeile).PasteSpecial Paste:=xlPasteValues
End Sub

Anzeige
AW: Filtern und werte in ein Array lesen
27.03.2019 16:25:49
Daniel
Anstatt
.Range("A2:C" & lngLZeile)
nimm
.Range("A2:C" & lngLZeile).SpecialCells(xlCellTypeVisible)
Gruß
Daniel
AW: Filtern und werte in ein Array lesen
27.03.2019 16:26:27
UweD
Hallo
so ?
VariableA = .Range("A2:C" & lngLZeile).SpecialCells(xlCellTypeVisible).Value
LG UweD

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige