Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Spalten in anderes Blatt untereinander kopieren

Spalten in anderes Blatt untereinander kopieren
01.10.2024 12:33:56
Dorit
Hallo,

inzwischen versuche ich mich schon eine Weile an VBA, um meinen Vegetationsdatensatz umzustrukturieren. Der finale Erfolg hat sich noch nicht einstellen wollen und ich würde mich sehr über Hilfe freuen.

Mein Ziel ist folgendes:

Ich habe eine Ausgangstabelle ("Vegtab Original"), in der die verschiedenen Aufnahmen in Spalten angeordnet sind. Nun habe ich versucht, zu programmieren, daß die erste Spalte (C) nach nichtleeren Zellen gefiltert wird. Dann sollen die Arten aus Spalte A, die übrig bleiben, mitsamt den Werten, die in Spalte C übrig bleiben, in die neue Tabelle in Spalten D & E kopiert werden ("Vegtab neu"). Anschließend soll der Code der Aufnahme aus Feld C1 in "Vegtab Original" in alle Felder in Spalte A in "Vegtab neu" kopiert werden, in deren Zeilen ich vorher die Arten kopiert habe. Dann den Filter aus Spalte C in "Vegtab Original" wieder löschen.

Anschließend soll der Prozeß für die nächste Spalte aus "Vegtab Original" wiederholt werden, deren Daten in Spalte D & E unter die zuletzt eingefügten kopiert werden sollen. Und so weiter.

Ich scheitere daran, die jeweils korrekten Zellbereiche anzugeben und wäre für Hilfe sehr dankbar.

Unter folgendem Link ist meine Tabelle: https://www.herber.de/bbs/user/172510.xlsm

Liebe Grüße,
Dorit
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Spalten in anderes Blatt untereinander kopieren
01.10.2024 13:07:53
Eifeljoi 5
Hallo

Ohne jetzt die Datei geöffnet zu haben, warum VBA??
Denn du hast eine neue Version von Office dann nutze diese Funktionen auch die darin sind.
Vielleicht ist es ja auch mit Power Query zu lösen.
AW: Spalten in anderes Blatt untereinander kopieren
01.10.2024 13:44:22
Dorit
Hallo,

vielen Dank für den Tipp. Mit Power Query habe ich gar keine Erfahrung und auf den ersten Blick auch keine Ahnung, wie es zu machen wäre. Problem wurde dankenswerter Weise schon gelöst.

LG Dorit
Anzeige
AW: Spalten in anderes Blatt untereinander kopieren
01.10.2024 13:32:28
MCO
Hallo Dorit!

Ich hab mal einige Sachen angepasst, unter anderem die umständlichen Zellbereiche vereinfacht.
Final2 brauchst du auch nicht, dafür aber die zahl der Datensätze.

Probier es mal aus.
Sub CopyOriginalToNeu()


Dim x As Long, lrow As Long, FinalRow1 As Long, FinalRow2 As Long
Dim wsTab1 As Worksheet
Dim wsTab2 As Worksheet
Dim rng As Range
Dim Anz_Dat_sätze As Long

Application.ScreenUpdating = False 'Zeitgewinn durch abschalten der Bildschirmaktualisierung
Application.Calculation = xlCalculationManual 'Zeitgewinn durch Abschalten der Zellberechnung

Set wsTab1 = Worksheets("Vegtab Original") 'objectvariable auf blatt1 gesetzt
Set wsTab2 = Worksheets("Vegtab neu")

x = 3 'Beginn Schleife ab Spalte "C"

Do While wsTab1.Cells(1, x).Value > vbNullString ' schleife bis kein wert in zeile 1 spalte x

With wsTab1
'Spalten x in "Vegtab neu" filtern
.AutoFilterMode = False 'evtl.Filter ausschalten
.Range("A8:KS1332").AutoFilter Field:=x, Criteria1:=">" 'filter auf Spalte setzen

'letze Zeilen ermitteln
lrow = .Cells(Rows.Count, x).End(xlUp).Row 'letzte zeile in "Vegtab Original" nach Filter ermitteln
FinalRow1 = wsTab2.Cells(Rows.Count, 1).End(xlUp).Row + 1 'erste leere zelle in "Vegtab neu" Spalte 1 ermitteln

'Spalten 1 in "Vegtab neu" kopieren
Set rng = .Range(.Cells(9, 1), .Cells(lrow, 1)).SpecialCells(xlCellTypeVisible)
Anz_Dat_sätze = rng.Count
rng.Copy
wsTab2.Cells(FinalRow1, 4).PasteSpecial Paste:=xlPasteValues

'Spalten x in "Vegtab neu" kopieren
.Range(.Cells(9, x), .Cells(lrow, x)).SpecialCells(xlCellTypeVisible).Copy
wsTab2.Cells(FinalRow1, 5).PasteSpecial Paste:=xlPasteValues

'"Code Aufnahme" kopieren in erste leere Zeile bis letzte Zeile von Spalte 4
wsTab2.Range(wsTab2.Cells(FinalRow1, 1), wsTab2.Cells(FinalRow1 + Anz_Dat_sätze - 1, 1)) = .Cells(1, x)

'Filter ausschalten
.AutoFilterMode = False
End With

x = x + 1 'spaltenzähler hochsetzen
Loop

Application.CutCopyMode = False

'Zurücksetzten der Zeitgewinnoptionen
Application.Calculation = xlCalculationAutomatic
'Application.ScreenUpdating = True 'unnötig, wird automatisch zurückgesetzt
End Sub

Gruß, MCO
Anzeige
AW: Spalten in anderes Blatt untereinander kopieren
01.10.2024 14:51:33
snb
Einfach so:

Sub M_snb()

sn = Tabelle6.UsedRange
ReDim sp(UBound(sn) * UBound(sn, 2), 0)
ReDim sq(UBound(sn) * UBound(sn, 2), 1)

For jj = 3 To UBound(sn, 2)
For j = 9 To UBound(sn)
If sn(j, jj) > "" Then
sp(n, 0) = sn(1, jj)
sq(n, 0) = sn(j, 1)
sq(n, 1) = sn(j, jj)
n = n + 1
End If
Next
Next

With Tabelle5.Cells(Rows.Count, 1).End(xlUp).Offset(1)
.Resize(n) = sp
.Offset(, 3).Resize(n, 2) = sq
End With
End Sub

Anzeige
AW: Spalten in anderes Blatt untereinander kopieren
01.10.2024 13:42:02
Dorit
Hallo, MCO,

vielen herzlichen Dank für die schnelle Nachricht! Das funktioniert hervorragend und ich habe wieder was gelernt.

Liebe Grüße,
Dorit
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige