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

Forumthread: kopieren bereich ohne leerzeilen

kopieren bereich ohne leerzeilen
28.06.2006 18:23:02
Karel
Hallo,
Problem beim nachste makro
wenn in angegebene bereich spalte B keine Eintrag ist diese zeile nicht kopieren.
kopierte bereich muss im tabelle 2 ohne leerzeilen übertragen werden

Sub kopieren_Kom_Sendung()
Application.ScreenUpdating = False
Dim ws1 As Worksheet, ws2 As Worksheet
Dim i As Integer
Set ws1 = ThisWorkbook.Worksheets("tabelle1")
Set ws2 = ThisWorkbook.Worksheets("tabelle2")
ws1.Range("B2:d20").Copy
ws2.Range("B3").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
ws2.Activate
Range("b3").Select
End Sub
Grusse
Karel

		
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: kopieren bereich ohne leerzeilen
28.06.2006 20:05:48
Beate
Hallo Karel,
die Leerzellen werden hier mitkopiert aber im Zielblatt eleminiert:
Sub kopieren_Kom_Sendung2()
Sheets("Tabelle1").Range("B2:D20").Copy Sheets("Tabelle2").Range("B3")
Sheets("Tabelle2").Range("B3:D" & Cells(Rows.Count, 2).End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Delete xlUp
Sheets("Tabelle2").Select
Range("B3").Select
End Sub



Gruß,
Beate
Anzeige
AW: kopieren bereich ohne leerzeilen
28.06.2006 20:11:16
Beate
Hallo Karel,
wenn du nur die Werte kopieren möchtest, dann so:
Sub kopieren_Kom_Sendung2()
Sheets("Tabelle2").Range("B3:d21").Value = Sheets("Tabelle1").Range("B2:D20").Value
Sheets("Tabelle2").Range("B3:D" & Cells(Rows.Count, 2).End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Delete xlUp
Sheets("Tabelle2").Select
Range("B3").Select
End Sub


Gruß,
Beate
Anzeige
AW: kopieren bereich ohne leerzeilen
28.06.2006 20:38:43
Karel
Hallo Beate,
Delete kan ich leider nicht benutzen, bereich wird im vorlage kopiert da darf ich keine Zeile löschen.
Karel
AW: kopieren bereich ohne leerzeilen
28.06.2006 20:53:21
Beate
Hallo Karel,
vielleicht wäre der Spezialfilter (in ein anderes Blatt) eine gute Möglichkeit.
Fragen:
- Hat Spalte B eine Überschrift bei dir?
- In welcher Zeile liegt die?
- Nenne mir 2 unbenutzte Zellen der Tabelle1, die ich im Makro temporär benutzen kann
Gruß,
Beate
Anzeige
Oder das hier
28.06.2006 21:03:19
Beate
Hallo Karel,
oder das hier (dabei habe ich temporär Tabelle1!IT60002:IV60020 als Hilfsbereich genutzt):
Sub kopieren_Kom_Sendung3()
Sheets("Tabelle1").Range("B2:D20").Copy Sheets("Tabelle1").Range("IT60002")
Sheets("Tabelle1").Range("IT60002:IV" & Cells(Rows.Count, 254).End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Delete xlUp
Sheets("Tabelle1").Range("IT60002:IV60020").Copy Sheets("Tabelle2").Range("B3")
Sheets("Tabelle1").Range("IT60002:IV60020").Clear
Sheets("Tabelle2").Select
Range("B3").Select
End Sub



Gruß,
Beate
Anzeige
AW: kopieren bereich ohne leerzeilen
28.06.2006 21:47:32
karel
Hallo Beate
das hauptproblem ist das datenbereich geht von a2:aa2500 die Daten sind alle uber sverweis drin.
vorlage Tabelle deutsch, englisch etc hat überscriften und unterschriften
Habe selbst schon viel probiert aber sitze Total auf false spur
sehe code

Sub Bereich_übertragen()
Application.ScreenUpdating = False
Dim ws1 As Worksheet, ws2 As Worksheet
Dim i As Integer
Set ws1 = ThisWorkbook.Worksheets("start")
Set ws2 = ThisWorkbook.Worksheets("deutsch")
ws2.Activate
' Löschen Spalte A_S
Range("A29:AC2500").Select
ActiveWindow.ScrollRow = 4
Selection.ClearContents
Range("a24").Select
'zeilen einblenden
For i = 2525 To 28 Step -1
If Cells(i, 1).Value = "" Then Cells(i, 1).EntireRow.Hidden = False
Next
' Kopieren
Select Case Worksheets("eingabe").Range("C4").Value
Case 1: Set ws2 = ThisWorkbook.Worksheets("deutsch")
Case 2: Set ws2 = ThisWorkbook.Worksheets("englisch")
Case 3: Set ws2 = ThisWorkbook.Worksheets("französisch")
Case Else: Set ws2 = ThisWorkbook.Worksheets("deutsch")
End Select
ws1.Range("A3:AA2500").Copy
ws2.Cells(ws2.Cells(Rows.Count, 30).End(xlUp).Row + 28, 1). _
PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
'Länder ohne duplikaten Sortieren
ws2.Activate
Range("B29:AA2500").Select
Selection.Sort Key1:=Range("Z28"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
Dim Blatt As Worksheet
Dim Zelle As String
Set Blatt = ActiveSheet
On Error Resume Next
Zelle = Range("AA28:AA2500", Range("AA28:AA2500").End(xlDown)).Address
Range(Zelle).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Range("AB29"), Unique:=True
Zelle = Range("Z28:Z2500", Range("Z28:Z2500").End(xlDown)).Address
Range(Zelle).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Range("AC29"), Unique:=True
'zeilen ausblenden
Application.ScreenUpdating = False
For i = 2525 To 28 Step -1
If Cells(i, 1).Value = "" Then Cells(i, 1).EntireRow.Hidden = True
Next
Range("a24").Select
End Sub

Karel
Anzeige
AW: kopieren bereich ohne leerzeilen
28.06.2006 22:00:18
Beate
Hallo Karel,
deine Antwort überfordert mich da etwas - auch was den nötigen Aufwand des Nachvollziehens betrifft.
Ich möchte also gerne beim Kleinbeispiel bleiben mit Tabelle1 und Tabelle2.
Hier habe ich mal eine Lösung mit einem temporären Blatt mit den gehabten Bereichen. Wenn das bei dir läuft könntest du es ja auf deinen Fall übertragen:
Sub Makro3()
Sheets("Tabelle1").Copy After:=Sheets(1)
Range("B3:B20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Sheets("Tabelle2").Range("B3:D21").Value = Range("B2:D20").Value
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
Sheets("Tabelle2").Activate
Range("B3").Select
End Sub



Gruß,
Beate
Anzeige
AW: kopieren bereich ohne leerzeilen
28.06.2006 22:15:36
karel
Danke dir Beate
funktioniert perfekt elegant gelöst
Viele grüsse
Karel

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Kopieren eines Bereichs ohne Leerzeilen in Excel


Schritt-für-Schritt-Anleitung

Um Daten in Excel ohne Leerzeilen zu kopieren, kannst du folgendes Makro verwenden. Dieses Beispiel geht davon aus, dass du die Daten aus "Tabelle1" in "Tabelle2" übertragen möchtest.

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Füge ein neues Modul hinzu (Einfügen > Modul).
  3. Kopiere und füge den folgenden Code in das Modul ein:
Sub kopieren_Kom_Sendung()
    Application.ScreenUpdating = False
    Dim ws1 As Worksheet, ws2 As Worksheet
    Set ws1 = ThisWorkbook.Worksheets("Tabelle1")
    Set ws2 = ThisWorkbook.Worksheets("Tabelle2")

    ' Daten kopieren
    ws1.Range("B2:D20").Copy
    ws2.Range("B3").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False

    ' Leerzeilen entfernen
    ws2.Range("B3:D" & ws2.Cells(Rows.Count, 2).End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Delete xlUp

    Application.CutCopyMode = False
    ws2.Activate
    Range("B3").Select
    Application.ScreenUpdating = True
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus (Entwicklertools > Makros > kopieren_Kom_Sendung).

Dieses Skript kopiert die Werte und entfernt gleichzeitig alle Leerzeilen in dem Zielbereich.


Häufige Fehler und Lösungen

Fehler: Das Makro kopiert auch Leerzeilen.
Lösung: Stelle sicher, dass der Parameter SkipBlanks im PasteSpecial-Befehl auf False gesetzt ist. Dies verhindert das Einfügen von Leerzellen.

Fehler: Fehler beim Löschen von Leerzeilen.
Lösung: Wenn du Schwierigkeiten beim Löschen von Leerzeilen hast, versuche, die Methode SpecialCells(xlCellTypeBlanks) zu verwenden, um nur die leeren Zellen zu identifizieren und zu löschen.


Alternative Methoden

Anstatt ein Makro zu verwenden, kannst du auch den Spezialfilter in Excel nutzen:

  1. Wähle den Bereich in "Tabelle1" aus.
  2. Gehe zu Daten > Filter > Spezialfilter.
  3. Wähle "In einen anderen Ort kopieren" und gib den Zielbereich in "Tabelle2" an.
  4. Aktiviere "Keine Duplikate" und klicke auf "OK".

Diese Methode ist besonders nützlich, wenn du keine Programmierung verwenden möchtest.


Praktische Beispiele

Hier ist ein weiteres Beispiel, wie du Daten ohne Leerzeilen in Excel kopieren kannst:

Sub kopieren_Kom_Sendung2()
    Dim ws1 As Worksheet, ws2 As Worksheet
    Set ws1 = ThisWorkbook.Worksheets("Tabelle1")
    Set ws2 = ThisWorkbook.Worksheets("Tabelle2")

    ' Daten direkt ohne Kopieren
    ws2.Range("B3:D21").Value = ws1.Range("B2:D20").Value

    ' Leerzeilen entfernen
    ws2.Range("B3:D" & ws2.Cells(Rows.Count, 2).End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Delete xlUp
End Sub

Mit diesem Code kannst du die Werte direkt zuweisen und gleichzeitig die Leerzeilen entfernen.


Tipps für Profis

  • Excel unbenutzte Zellen ausblenden: Du kannst unbenutzte Zellen ausblenden, um die Übersichtlichkeit der Tabelle zu verbessern. Wähle die Zellen aus, die du ausblenden möchtest, klicke mit der rechten Maustaste und wähle "Ausblenden".
  • Fehlerbehebung: Wenn du auf Probleme stößt, prüfe den Bereich, den du kopieren möchtest, um sicherzustellen, dass keine unerwarteten Leerzeilen vorhanden sind.
  • Verwende die AdvancedFilter-Methode, um Daten zu filtern und zu kopieren, wenn du mit großen Datenmengen arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich in Excel einfügen ohne leere Zellen?
Du kannst die PasteSpecial-Funktion verwenden, um nur die Werte zu kopieren und dabei leere Zellen zu ignorieren.

2. Was ist die schnellste Methode, um Leerzeilen zu kopieren?
Die Verwendung des Spezialfilters ist eine schnelle Methode, um Daten zu kopieren und gleichzeitig Leerzeilen zu eliminieren.

3. Wie kann ich unbenutzte Zellen in einer Tabelle ausblenden?
Wähle die entsprechenden Zellen aus, klicke mit der rechten Maustaste und wähle "Ausblenden", um die Übersichtlichkeit deiner Tabelle zu verbessern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige