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

Bestimmte Bereiche aus mehreren Excel Datein

Bestimmte Bereiche aus mehreren Excel Datein
25.09.2018 13:22:40
Chris
Hallo Zusammen,
Ich habe Problem mit einer per VBA erstellten Excel Datei, nachdem ich die kompletten Daten eingelesen habe, ist die Datei nicht zu gebrauchen, da schon nur Filtern eine Wartezeit von mehreren Mintuen hervorruft. Die Datei hat dann im Druchschnitt 50000 Zeilen
Allersdings muss ich noch einige Abgleiche mit einer weiteren eingelesen Datei per Formel ermitteln.
Wobei die Automatische Berechnung bereits deaktiviert ist.
Nun habe ich alle mir eingefallen Varianten probiert und bin zu dem Entschluss gekommen ich muss selektieren, da ich eigentlich nur Teilbereiche (z.B.: A3:C169 und A194:C195 .... A1885:C1886) benötige, da andere Daten andere Serviceleistungen darstellen, welche ich nicht auswerte für meinen Vergleich. In Summe entstehen so pro eingelesene Datei nur c.a. 300 Zeilen, anstelle der momentanen 1960. Dies sollte die spätere Arbeitsmappe dann besser bedienbar machen, da ich die Daten dann übergebe.
Ich würde somit gern bei diesem Makro den Auswahlbereich der Quelle auf unterschiedliche Bereiche begrenzen wollen. (z.B.: A3:C169 und A194:C195 .... A1885:C1886)
Allerdings komme ich mit den z s Koordinaten, oder Bezügen nicht klar, da es sich hier nicht um Z1S1 Bezüge handelt.
Kann mir hier vielleicht jemand helfen? Danke
Hier mal das funktionierende Makro, was die kompletten ersten drei Spalten einliest und angepasst werden müsste:
Sub MWTabellenAusMehrerenDateienEinlesen()
Dim oTargetSheet As Object
Dim oSourceBook As Object
Dim sPfad As String
Dim sDatei As String
Dim lErgebnisZeile As Long
Dim s As Long
Dim z As Long
Application.ScreenUpdating = False 'Das "Flackern" ausstellen
'Schritt 1: Neues Arbeitsblatt für die Ergebnisse erstellen
Set oTargetSheet = ActiveWorkbook.Sheets.Add
lErgebnisZeile = 1 'Ergebnisse eintragen ab Zeile 1
'Schritt 2: Schleife über alle Excel Dateien in einem Verzeichnis
sPfad = "E:\SSTI Import\"
sDatei = Dir(CStr(sPfad & "*.xl*")) 'Alle Excel Dateien
Do While sDatei  ""
'Schritt 3: öffnen der Datei und Datenübertragung
Set oSourceBook = Workbooks.Open(sPfad & sDatei, False, True) 'nur lesend öffnen
'Datenübertragung alle genutzten Zeilen und Spalten
For z = 1 To oSourceBook.Sheets("Site Material").UsedRange.Rows.Count
'Keine Leerzeilen verarbeiten
If Trim(CStr(oSourceBook.Sheets("Site Material").Cells(z, 2).Value))  "" Then
For s = 1 To 3
'Spalte 1 - Dateinamen T
oTargetSheet.Cells(lErgebnisZeile, 1).Value = sDatei
'Spalte 2 bis 4 - Tabelleninhalte des Arbeitsblattes "Site Material"
oTargetSheet.Cells(lErgebnisZeile, s + 1).Value = _
oSourceBook.Sheets("Site Material").Cells(z, s).Value
Next s
lErgebnisZeile = lErgebnisZeile + 1
End If
Next z
'Schritt 4: Datei wieder zu machen und nächste Schleifenrunde
oSourceBook.Close False 'nicht speichern
'Nächste Datei
sDatei = Dir()
Loop
Application.ScreenUpdating = True 'Das Bildschirm-Aktualisieren wieder einschalten
'Variablen aufräumen
Set oTargetSheet = Nothing
Set oSourceBook = Nothing
End Sub

Vielen Dank!
Gruß, Chris

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Excel hat so viele Möglichkeiten bei Teilauswahlen
25.09.2018 13:41:50
lupo1
Pivot
Autofilter
Spezialfilter mit Zielbereich
Power Query
Lass Dich lieber in diese Richtung führen. Dann hast Du auch keine Wartezeiten mehr.
AW: Excel hat so viele Möglichkeiten bei Teilauswahlen
25.09.2018 14:06:26
Chris
Hallo,
danke für deine schnelle Antwort, allerdings verstehe ich nicht, wie mir dies weiterhilft, wenn die Datei einfach viel zu groß ist. Ich muss mehrere Excel in eine Datei zusammenführen, mehrmals in der Woche. Somit habe ich immer die große Ausgangsdatei, weiterführend habe ich dann Formeln in der Excel, welche einen Umgang mit der erzeugten Liste einfach nicht praktikabel machen.
Vor allem, weil nicht nur ich mit dieser erzeugten Liste dann arbeiten muss. Daher wäre mir wirklich mehr geholfen, wenn ich wüsste, wie ich den Part anpassen kann, damit nur bestimmte Zeilen ausgelesen werden. Sollte ja dieser Bereich sein:
If Trim(CStr(oSourceBook.Sheets("Site Material").Cells(z, 2).Value)) "" Then For s = 1 To 3
Danke, Chris
Anzeige
Wenn die Datei groß ist, habt Ihr auch Fachleute
25.09.2018 14:29:53
lupo1
... dann wird es nämlich wichtig, und Du solltest das nicht übers Internet machen!
Wir geben hier keine Komplettlösungen; dafür gibt es Dienstleister, wie z.B. Günther hier im Forum.
http://www.gmg-cc.de/
AW: Wenn die Datei groß ist, habt Ihr auch Fachleute
25.09.2018 17:42:18
Chris
Vielen Dank für deine Antwort, nicht jede Firma ist so groß, dass sie für alle Bereiche Fachleute hat.
Weiter habe ich nicht um eine Komplettlösung gebeten, sondern vielmehr um einen Hinweis, wie ich hier mit diesen Bezügen umgehen muss.
Meine Annahme war, dass genau dafür eine solches Forum geschaffen wurde, um bei Problemen Hilfestellungen zu erfragen, oder zu geben, aber war zumindest hier anscheinend eine Fehleinschätzung von mir.
Danke, Chris
Anzeige
Die Frage war doch einfach falsch ...
25.09.2018 18:33:31
lupo1
... es geht nicht um Bezüge, sondern ordentliche Datenverwaltung mit Filter oder Query.
Daher sind Deine Daten möglicherweise umzustellen.
Wenn man so viel antwortet, wie wir, kritisiert man durchaus auch mal den Istzustand. Denn keiner repariert gern an Dingen, die keinen Wert haben.
Und wenn die Daten von selbst nicht ordentlich werden, muss ein Externer ran, der bezahlt wird. Denn diese Arbeit ist langweilig, und Du wirst dafür hier kaum jmd. finden.
Diese meine Provokation wird vermutlich nun gerade irgendeinen wecken :-)
AW: Die Frage war doch einfach falsch ...
25.09.2018 20:48:27
Chris
Ok, jetzt verstehe ich, warum wir aneinander vorbei sprechen. Ich habe mich bei der Erstellung des Beitrages nicht gut ausgedrückt. Sorry, habe beim nochmal lesen gesehen, dass man es auch anders verstehen kann.
Ich will versuchen mich besser auszudrücken.
Ich lese aus mehreren gleichstrukturierten Excel aus jewiels dem Reiter die Daten fortlaufend untereinander in einer Gesamtliste ein, wobei in der ersten Spalte jeweils der Dateiname der eingelesenen Excel steht. Dafür funktioniert mein Makro ja sehr gut. Es ist wird auch eine weitere Liste importiert per VBA (ohne Porbleme mit Eingabedialog zum auswählen der einen Datei), dann werden per Verweis die Daten miteinander verglichen.
Aber da bis zu 40 Dateien mit diesem Bereich des Makros eingelesen werden mit jeweils 1960 Zeilen, wollte ich einfach den Bereich der einzulesenden Daten definieren und nicht einfach alles ab Zeile 3 alles komplett, um dann später sinnlos filtern zu müssen.
Wie angegeben, habe ich wenig Erfahrung und sehr viele Stunden mit dieser Datei zugebracht, bis sie funktioniert hat. Allerdings konnte ich dabei auch einiges lernen, was mich immer anspornt.
Ich komme aber mit der Definition der Bezüge (oder wie es auch immer richtig heißt) auf bestimmte Bereiche zum Auslesen nicht klar. Ich habe bisher für die nachträgliche Opitmierung mehr Zeit aufgebracht, als bei der Zusammenstellung der Einlesung, deren Formatierungen usw.
Aber mit dieser Bezugsweise auf die Zellen, Splaten komme ich nicht klar, daher hatte ich hier auf etwas Hilfestellung gehofft.
Gruß, Chris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige