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

Tabelle kopieren und sortieren

Forumthread: Tabelle kopieren und sortieren

Tabelle kopieren und sortieren
19.02.2015 12:03:24
Claude
Hallo VBA-Freunde,
ich habe eine Frage. Mein Makro soll mir zwei Spalten (C und D) aus Tabelle tbl_Profil kopieren und in eine andere Tabelle tbl_Zieltabelle die Werte sortiert einfügen.
Bisher kopiert es wie es soll, sortiert in der Zieltabelle erst Spalte D absteigend (bis hierhin perfekt), doch dann nach dem Einfügen der Spalte C aus tbl_Profil in tbl_Zieltabelle wird die Sortierung der Spalte D aufgehoben und Spalte C sortiert.
Kann mir bitte jemand über das Makro schauen, und sagen was ich falsch mache?
Es sollen eigentlich beide Spalten sortiert angezeigt werden...
Dank im Voraus!
Private Sub Auswertung_anzeigen_Click()
With tbl_Profil
.Range("D:D").Copy
End With
With tbl_Zieltabelle
.Range("D1").PasteSpecial Paste:=xlPasteValues
.UsedRange.Sort Key1:=.Range("D1"), Order1:=xlDescending, Header:=xlYes
End With
With tbl_Profil
.Range("C:C").Copy
End With
With tbl_Zieltabelle
.Range("C1").PasteSpecial Paste:=xlPasteValues
.UsedRange.Sort Key1:=.Range("C1"), Order1:=xlDescending, Header:=xlYes
End With
End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle kopieren und sortieren
19.02.2015 12:24:10
Ralf
Hallo Claude,
UsedRange ist hier fehl am Platz.
ersetze:
With tbl_Zieltabelle
.Range("C1").PasteSpecial Paste:=xlPasteValues
.UsedRange.Sort Key1:=.Range("C1"), Order1:=xlDescending, Header:=xlYes
End With

durch:
With tbl_Zieltabelle
.Range("C1").PasteSpecial Paste:=xlPasteValues
.Range("C:C").Sort Key1:=.Range("C1"), Order1:=xlDescending, Header:=xlYes
End With
Hiermit werden jedoch beide Spalten unabhängig voneinander sortiert.
Gruß
Ralf

Anzeige
AW: Tabelle kopieren und sortieren
19.02.2015 13:26:59
Claude
Zack Ralf,
ein Träumchen, jetzt funkts einwandfrei!
Ich dank dir,
Claude

AW: Tabelle kopieren und sortieren
24.02.2015 16:38:50
Claude
Hallo Ralf,
nochmals eine Bitte; könntest du mir verraten,
wie das funktioniert, wenn meine spalten B und D abhängig voneinander sortiert werden sollen?
Die Baustelle hat sich unverhoffter Weise jetzt bei mir aufgetan..
Danke!! :)

Anzeige
AW: Tabelle kopieren und sortieren
24.02.2015 21:29:16
Ralf
Hallo Claude,
Statt range(“C:C“) musst du range(“B:D“) schreiben.
Gruß
Ralf

AW: Tabelle kopieren und sortieren
25.02.2015 12:49:59
Claude
Danke Ralf!
Ich habe jetzt folgendes geschrieben:
Sub Abgasprofil_kop()
tbl_Abgasprofil.Range("B:D").Copy
With tbl_Zieltabelle
.Range("B1").PasteSpecial Paste:=xlPasteValues
.Range("D:D").Sort Key1:=tbl_Zieltabelle.Range("D1"), Order1:=xlDescending, Header:=xlYes
End With
End Sub
Dabei verrutschen mir die Werte in Spalte D um eine Zeile nach oben...woran kann das liegen?
In Spalte B und C werden die Werte ab Zeile 4 aufgelistet. In C bereits ab 3..
Grüße
Claude

Anzeige
AW: Tabelle kopieren und sortieren
25.02.2015 15:17:12
Claude
Hallo Ralf,
ich glaube mein Makro ist so falsch.
In Spalte B,C und D sind zusammenhängende Werte, die in meine Zieltabelle kopiert und nach Spalte D sortiert werden sollen. Aktuell sortiert er nur D und nicht Spalten B und C.
Kannst du mir helfen?
Gruß
Claude

AW: Tabelle kopieren und sortieren
25.02.2015 15:23:04
Claude
Ah ich habe den Fehler gefunden!
Für alle die auch mal einen Hänger haben:
Sub Abgasprofil_kop()
tbl_Abgasprofil.Range("B:D").Copy
With tbl_Zieltabelle
.Range("B1").PasteSpecial Paste:=xlPasteValues
.Range("B:D").Sort Key1:=tbl_Zieltabelle.Range("D1"), Order1:=xlDescending, Header:= _
xlYes
End With
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Tabelle kopieren und sortieren in Excel


Schritt-für-Schritt-Anleitung

  1. Makro erstellen: Öffne den VBA-Editor mit ALT + F11 und füge ein neues Modul hinzu.

  2. Tabelle kopieren: Verwende den folgenden VBA-Code, um die Spalten zu kopieren und zu sortieren:

    Sub TabelleKopierenUndSortieren()
        ' Tabelle kopieren
        tbl_Profil.Range("C:D").Copy
        With tbl_Zieltabelle
            .Range("C1").PasteSpecial Paste:=xlPasteValues
            ' Sortieren der Spalten
            .Range("B:D").Sort Key1:=.Range("D1"), Order1:=xlDescending, Header:=xlYes
        End With
    End Sub
  3. Tabelle duplizieren: Falls notwendig, kannst Du die Tabelle auch duplizieren, bevor Du sie sortierst. Dazu kannst Du den Befehl tbl_Zieltabelle.Copy verwenden.

  4. Korrektur der Sortierung: Stelle sicher, dass Du .Range("B:D").Sort verwendest, um beide Spalten unabhängig voneinander zu sortieren.


Häufige Fehler und Lösungen

  • Problem: Die Sortierung wird nach dem Kopieren der zweiten Spalte aufgehoben.

    • Lösung: Ersetze .UsedRange.Sort durch .Range("C:C").Sort, um die spezifische Spalte zu sortieren.
  • Problem: Werte in Spalte D verrutschen nach dem Kopieren.

    • Lösung: Achte darauf, dass Du die richtigen Bereiche angibst. Nutze .Range("B:D") für das Kopieren und Sortieren.

Alternative Methoden

  1. Manuelles Kopieren: Du kannst die Spalten auch manuell kopieren und anschließend die Sortierung über die Excel-Oberfläche durchführen.
  2. Power Query: Verwende Power Query, um die Daten zu transformieren und zu sortieren, was eine noch flexiblere Handhabung ermöglicht.

Praktische Beispiele

  • Beispiel 1: Wenn Du die Spalten B und D abhängig voneinander sortieren möchtest, kannst Du folgenden Code verwenden:

    Sub AbhängigeSortierung()
        tbl_Abgasprofil.Range("B:D").Copy
        With tbl_Zieltabelle
            .Range("B1").PasteSpecial Paste:=xlPasteValues
            .Range("B:D").Sort Key1:=.Range("D1"), Order1:=xlDescending, Header:=xlYes
        End With
    End Sub
  • Beispiel 2: Um nur bestimmte Spalten zu kopieren, kannst Du den Bereich anpassen, z.B. .Range("A:C").Copy.


Tipps für Profis

  • Nutze die Option Explicit Anweisung zu Beginn Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.
  • Verwende Application.ScreenUpdating = False, um das Flackern beim Ausführen von Makros zu reduzieren.
  • Speichere immer eine Sicherungskopie Deiner Daten, bevor Du mit VBA arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Spalten gleichzeitig sortieren?
Du kannst .Range("B:D").Sort verwenden, um mehrere Spalten gleichzeitig zu sortieren.

2. Was ist der Unterschied zwischen UsedRange und einem spezifischen Bereich?
UsedRange bezieht sich auf den gesamten benutzten Bereich eines Tabellenblatts, während ein spezifischer Bereich nur die angegebenen Spalten oder Zeilen betrifft.

3. Wie kann ich eine Tabelle duplizieren?
Um eine Tabelle zu duplizieren, kannst Du den Befehl tbl_Zieltabelle.Copy verwenden, gefolgt von der Zielposition, an der die Kopie eingefügt werden soll.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige