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

Daten importieren mit kompliziertem Aufbau

Daten importieren mit kompliziertem Aufbau
12.09.2016 16:58:58
Simon
Hallo Zusammen,
ich habe ein Problem mit dem Datenimport. Ich möchte innerhalb eines Workbooks von einem Sheet zum anderen Sheet bestimmte Daten mittels Makro exportieren bzw. importieren. Dabei ist (für mich) der Import selber das geringere Problem, sondern der Aufbau des Quell-Sheets bereitet mir Probleme.
Das Quell-Sheets ist wie folgt aufgebaut (siehe Link):
https://www.herber.de/bbs/user/108131.xlsx
Die farblich markierten Bereiche stellen die für den Ex-/Import relevanten Daten dar und sollen vom Quell-Sheet, wie folgt, ins Ziel-Sheet übertragen werden:
Spalte A | Spalte B | Spalte C |
ID1 | X1 | Log1
ID1 | X2 | Log1
ID1 | X3 | Log1
....
ID1 | X11 | Log1
ID2 | Y1 | Log2
ID2 | Y2 | Log2
....
ID2 | Y9 | Log2
ID3 | Z1 | Log3
....
ID3 | Z9 | Log3
usw.
Wobei X, Y, Z für Berechtigungen stehen und sich wiederholen können, im Sinne z.B. X9=Y2 und Y1=X8,Z6,... . Die unterschiedliche Bezeichnung dient hier nur zur besseren Abgrenzung der Bereiche, die es zu kopieren gilt. Hoffe, ich konnte das verständlich ausdrücken :D
Mein Problem ist, dass mir komplett die Idee fehlt, wie ich das per VBA geregelt bekomme, dass er weiß, welche Bereiche er kopieren soll bzw. wo ein neuer "Bereich" anfängt und aufhört, usw.
Kann mir da jemand weiterhelfen? Wäre über jede Hilfe sehr dankbar.
Viele Grüße Simon

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

Betreff
Datum
Anwender
Anzeige
AW: Daten importieren mit kompliziertem Aufbau
12.09.2016 17:17:14
Daniel
Hi
probier mal folgenden Code:
Sub Daten_kopieren()
Dim Bereich As Range
Dim shQuelle As Worksheet
Dim shZiel As Worksheet
Dim ÜB As String
Set shQuelle = Sheets("Tabelle1")
Set shZiel = Sheets.Add(after:=shQuelle)
With shQuelle.Cells(1, 1)
ÜB = .Value
.ClearContents
End With
shZiel.Activate
For Each Bereich In shQuelle.Columns(1).SpecialCells(xlCellTypeConstants, 3).Areas
Bereich.Offset(1, 0).Resize(Bereich.Rows.Count - 1, 1).Copy
ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Selection.Offset(0, -1).Value = Bereich.Cells(1, 1).Value
Selection.Offset(0, 1).Value = Bereich.Cells(1, 2).Value
Next
shQuelle.Cells(1, 1).Value = ÜB
End Sub
für das einfügen und kopieren muss das Zielblatt aktiv sein, sonst wird es etwas aufwendiger, die Zellbereiche für die IDx und LOGx zu ermitteln.
Gruß Daniel
Anzeige
AW: Daten importieren mit kompliziertem Aufbau
13.09.2016 09:53:36
Simon
Hallo Daniel,
danke für deine schnelle Antwort!
Funktioniert alles bestens! Ein riesen Dankeschön von mir!!!
Eine Frage hätte ich allerdings noch, rein für mein Verständnis. Was macht dieser Part?
With shQuelle.Cells(1, 1)
ÜB = .Value
.ClearContents
und was genau bewirkt dieser Ausdruck?
Selection.Offset
Danke vorab! :)
Viele Grüße Simon
AW: Daten importieren mit kompliziertem Aufbau
13.09.2016 10:17:44
Simon
Wenn du mir den Code sogar Schritt für Schritt erklären könntest, wäre das noch besser!
Versuche mich weiter in dem Thema zu verbessern und so etwas hilft ungemein. :)
Danke!
Grüße Simon
AW: Daten importieren mit kompliziertem Aufbau
13.09.2016 10:33:41
Daniel
Hi
ich beschränke mich in der Erklärung mal auf den komplizierten Teil:
shQuelle.Columns(1).SpecialCells(xlCellTypeConstants, 3)
selektiert alle Zellen in Spalte A, die einen Text enthalten
(entspricht START - BEARBEITEN - SUCHEN UND AUSWÄHLEN - INHALTE - KONSTANTEN)
dabei entstehen in der Selektion mehrere Blöcke, sogenannte Areas.
eine Area ist immer ein recheckiger lückenloser Zellbereich.
Die Selektion besteht aus mehreren Areas, wegen der leeren Zwischenzeilen.
nun läuft die FOR-Schleife über die Areas:
For Each Bereich in ... .Areas
dabei wird jeder Block kopiert ohne die ersten Zeile, das macht das .Offset(...).Resize(...)

und ins neue Blatt am Ende der Liste eingefügt. .End(xlup) ist der Sprung von der letzten Zeile auf dem Tabellenblatt nach oben bis zur nächten befüllten Zelle.
Nach dem einfügen mit .PasteSpecial ist der eingefügte Zellbereich selektiert.
Ausgehend von dieser Selektion werden dann die Daten aus der Überschriftenzeile des Blocks eingefügt.
Gruß Daniel
Anzeige
AW: Daten importieren mit kompliziertem Aufbau
13.09.2016 14:57:49
Simon
Super, das hat mir für mein Verständnis schon mal etwas weitergeholfen, bzw. meinen Verdacht bestätigt :)
Danke dir vielmals!
Gruß Simon

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige