VBA - Zwischenspeicher einfügen und strukturieren
#1
Schönen Sonntag euch allen!

Ich versuche gerade mittels VBA folgende Logik zu automatisieren.
ich kopiere eine Tabelle aus einem externen Dokument . Diese ist nun im Zwischenspeicher.
Diese soll in Tabelle1 (aktuelles Dokument) A1 eingefügt werden.
Danach soll chronologisch nach Spalte A und D sortiert werden und in Spalte E etwas ausgeschlossen werde ("X").
Diese strukturierte Tabell soll dann anschließend in Tabelle2 A1 eingefügt werden.
Code:
Sub StrukturiereDaten()

   Sheets("Tabelle1").Select
   Range("A1").Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
   Application.CutCopyMode = False
   Selection.AutoFilter
   ActiveWorkbook.Worksheets("Tabelle1").AutoFilter.Sort.SortFields.Clear
   ActiveWorkbook.Worksheets("Tabelle1").AutoFilter.Sort.SortFields.Add Key:= _
       Range("A2:A2327"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
       :=xlSortNormal
   ActiveWorkbook.Worksheets("Tabelle1").AutoFilter.Sort.SortFields.Add Key:= _
       Range("D2:D2327"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
       :=xlSortNormal
   With ActiveWorkbook.Worksheets("Tabelle1").AutoFilter.Sort
       .Header = xlYes
       .MatchCase = False
       .Orientation = xlTopToBottom
       .SortMethod = xlPinYin
       .Apply
   End With
   ActiveSheet.Range("$A$1:$E$2327").AutoFilter Field:=10, Criteria1:="Y"
   Range("A1:E2327").Select
   Range("B4").Activate
   Selection.Copy
End Sub

Bislang habe ich folgenden Code entwickelt/ aufgezeichnet jedoch bin ich an vielen Stellen Ratlos bzw. es gibt zahlreiche Optimierungen.
Zum Beispiel wie ich die Range für die Filter dynamisieren kann, da die Tabellen unterschiedliche Längen haben können
Vielleicht habt ihr Ideen oder gar Ansätze.
Ich freue mich über jeden Beitrag!


Gruß
Josh
Top
#2
Moin Josh,
das was ich bisher sehe ist gewiss alles ohne eine Zeile VBA-Code machbar. Allerdings ist das, was du zeigst, scheinbar nur ein Teil dessen, was du weiter oben angesprochen hast. Insofern wäre gewiss eine Musterdatei mit klarer, deutlicher Zielsetzung (insbesondere was die Reihenfolge der Sortierung betrifft) hilfreich.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
[-] Folgende(r) 1 Nutzer sagt Danke an GMG-CC für diesen Beitrag:
  • joshua
Top
#3
Hallo GMG-CC!

Vielen Dank für deine Antwort.
Also das Ziel ist ein VBA-Code/ Prozedur
Anbei habe ich mal 2 Datein hochgeladen.
Die erste Datei stellt die Tabelle dar, welche ich händisch kopiere bzw. in den Zwischenspeicher lade.
Die zweite Tabelle stellt die Zieldatei/ Tabelle dar. Genau in dieser beginnt der VBA-Code.

D.h.:
1. Ich kopiere die originale Tabelle in den Zwischenspeicher.
2. Ich löse die Prozedur aus.
2.1 Kopiere den Zwischenspeicher in die Zieltabelle Tabelle1-Zelle A1.
2.2 Aktiviere Filter
2.3 Sortiere erstmal chronologisch in Spalte A und dann chronolgisch in Spalte D
2.4 Deaktiviere alle Einträge mit "X" in Spalte E
2.5 Kopiere diese neue strukturierte Tabelle in Tabelle2-Zelle A1

Dabei kann die Tabelle immer eine unterschiedliche Länge an Datensätzen enthalten.


Gruß
Josh


Angehängte Dateien
.xlsx   Zwischenspeicher.xlsx (Größe: 8,61 KB / Downloads: 0)
.xlsx   Zieltabelle.xlsx (Größe: 8,51 KB / Downloads: 0)
Top
#4
Entschuldigt den Doppelpost, aber kann mir einer verraten, wie ich einen belieben Cache/ Zwischenspeicher einfüge?
So das dieser nach dem Ablauf der Prozedur den Inhalt in eine bestimmte Tabelle einfügt.

Der Cache ist eine andere Excel-Tabelle, dies soll jedoch undefiniert bleiben.
Top
#5
(18.02.2018, 20:24)joshua schrieb: Also das Ziel ist ein VBA-Code/ Prozedur
OK, da halte ich mich vornehm zurück. Aber es wird gewiss genügend andere Helfer geben, die hier hilfreich beseite stehen werden.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Top
#6
Hallöchen,

das kann man doch eigentlich mit dem Makrorekorder "programmieren".

Kopiere den Tabellenbereich und starte dann den Makrorekorder. Erste Aktion wäre dann der Wechsel in die Datei mit der Tabelle1 usw. Auch wenn Du vielleicht noch eine leere Tabelle hast, solltest Du als nächstes den Zielbereich leeren. Später ist er ja vielleicht voll.

Der Code wird so allerdings in der Datei aufgezeichnet, die die Daten zum Kopieren enthält. Du kannst das aufgezeichnete Modul dann aber in die Zieltabelle kopieren.

Speichern musst Du die Zieldatei dann als xlsm.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste