Microsoft Excel

Herbers Excel/VBA-Archiv

VBA Spaltenvergleich und Kopie bestimmter Bereiche

Betrifft: VBA Spaltenvergleich und Kopie bestimmter Bereiche von: Natalia
Geschrieben am: 07.09.2020 18:37:08

Hallo liebe Forumsmitglieder,


ich habe erst vor ein paar Wochen mit VBA Programmierungen angefangen, da es auf der Arbeit plötzlich gewünscht war. Der Excel-Export einer Datenbank soll durch Makros in eine Übersichtstabelle umgewandelt werden. Allerdings werden nur gewissen Spalten und Angaben benötigt.


Sheet "Export": Excel.Export wird in Tabelle umgewandelt (Strg+T) + kopiert

Sheet "Zahlen": Kopie des Exports wird gefiltert, einzelne Spalten werden nach Sheet Überblick kopiert

Sheet "Überblick": Output am Ende, der nachher alle gewünschten Daten enthält


Soweit bin ich in meiner Programmierung schon (yayyy).


Jetzt gibt es noch ein Sheet "Beschreibung", hier werden alle Projekte aufgelistet, die es je gab. Und hier ist der Knackpunkt. Die erste Spalte der Tabelle aus dem Sheet "Beschreibung" soll mit der ersten Spalte aus dem Sheet "Überblick" verglichen werden (IDs der Projekte) um herauszufinden welche Projekte jetzt "aktiv" sind.


Link zur Excel Mappe zum besseren Verständnis (https://www.herber.de/bbs/user/140098.xlsx)



Sheet "Beschreibung" Spalte 1 enthält gleiche ID wie Sheet "Überblick" Spalte 1

Aus Sheet "Beschreibung" müssen dann Zellen aus Spalte C&D in der Zeile der ID kopiert werden.

- Kopie (ID,C) + (ID,D) + (ID,E)

- Kopie (ID,F)+ (ID,G)


Nach Sheet "Überblick" in Spalte F&G in die Zeile der gefundenen ID

- Einfügen bei (ID,F) + (ID,G)+ (ID,H)

- Einfügen bei (ID,K) + (ID,M)




Das ist mein bisheriger Code, ich wollte aus der Tabelle im Sheet "Beschreibung" ein variables, mehrdimensionales Array machen, um dann eigentlich die For Each Funktion zu nutzen, das hat aber leider gar nicht funktioniert:


'Def Variablen

Dim Beschreibung() As Long

Dim size_rows As Long, size_columns As Long

Dim i As Long, j As Long, n As Long

Dim LastRowÜberblick As Long



'Dynamisches Array, deshalb wird Anzahl der Zeilen und Spalten gezählt

With Sheets("Proj.Description")


size_rows = WorksheetFunction.CountA(Worksheets("Beschreibung").Columns(1))

size_columns = WorksheetFunction.CountA(Worksheets("Beschreibung").Rows(2)) 'im echten Sheet beginnt die Tabelle in Reihe 2



End With


'Neudefinierung des Arrays, das in Zelle A3 beginnt [Cells(3,1)]

'Alle Positionen des Arrays werden jetzt mit Werten gefüllt... hoffentlich

ReDim Beschreibung(1 To size_rows, 1 To size_columns)


For i = 3 To size_rows

For j = 1 To size_columns



ProjD(i, j) = Cells(i, j).Value



Next j

Next i



'Festlegen der letzten Zeilen in Sheet Überblick

LastRowÜberblick = Worksheets("Überblick").Cells(Rows.Count, 2).End(xlUp).Row


'Beginn Durchlauf bei Zeile 4

For i = 3 To size_rows

For n = 4 To LastRowÜberblick

If Beschreibung(i, 1) = Worksheets("Überblick").Cells(n, 2).Value Then

Set Worksheets("Überblick").Cells(n, 6) = ProjD(i, 3)

Set Worksheets("Überblick").Cells(n, 7) = ProjD(i, 4)

Set Worksheets("Überblick").Cells(n, 8) = ProjD(i, 5)

Set Worksheets("Überblick").Cells(n, 12) = ProjD(i, 8)

Set Worksheets("Überblick").Cells(n, 14) = ProjD(i, 6)

Set Worksheets("Überblick").Cells(n, 15) = ProjD(i, 7)

Set Worksheets("Überblick").Cells(n, 16) = ProjD(i, 9)

Set Worksheets("Überblick").Cells(n, 17) = ProjD(i, 10)

Set Worksheets("Überblick").Cells(n, 18) = ProjD(i, 11)

End If



Next n

Next i


Der Code läuft ohne Fehlermeldung durch, macht aber gar nichts. Und meine Kenntnisstand reicht nicht so weit um mir Sachen gekonnt zusammenzustückeln... Es wäre super lieb wenn mir jemand helfen könnte meinen Code das machen zu lassen was er eigentlich soll. Vielen Dank im Voraus.

Liebe Grüße, Natalia

Betrifft: AW: VBA Spaltenvergleich und Kopie bestimmter Bereiche
von: ralf_b
Geschrieben am: 07.09.2020 20:40:40

der code macht nichts, weil er nicht in deiner Datei ist. #malanmerk#

Betrifft: AW: VBA Spaltenvergleich und Kopie bestimmter Bereiche
von: AlterDresdner
Geschrieben am: 07.09.2020 20:54:11

Hallo Natalja,
dass Du das Ganze auch ohne VBA erledigen kannst, ist schon klar?
Z.B. der Titel lässt sich mit =SVERWEIS(B4;Tabelle1;2;FALSCH) locker erfassen.
wenn es aber unbedingt VBA sein soll:
wie Dein Code 'ohne Fehlermeldung durchläuft', möcht ich gern wissen
(Deklaration Beschreibung(), ProjD<>ProjID, ...).
Der Befehl Set ... setzt ein Objekt und füllt nicht eine Zelle...
Eine Möglichkeit findest Du unter
https://c.web.de/@337536775209621017/UWOWVfZWQXG5f_Ept24XVw
Gruß der AlteDresdner

Betrifft: AW: VBA Spaltenvergleich und Kopie bestimmter Bereiche
von: Natalia
Geschrieben am: 08.09.2020 21:25:33

Vielen, vielen Dank!!! Es funktioniert. Wirklich klasse :D

Betrifft: AW: VBA Spaltenvergleich und Kopie bestimmter Bereiche
von: AlterDresdner
Geschrieben am: 09.09.2020 16:58:17

Hallo Natalja,
wie schön und Danke für die Rückmeldung!

Beiträge aus dem Excel-Forum zum Thema "VBA Spaltenvergleich und Kopie bestimmter Bereiche"