Microsoft Excel

Herbers Excel/VBA-Archiv

Doppelte Lagerplätze per VBA löschen

Betrifft: Doppelte Lagerplätze per VBA löschen von: Jorgi
Geschrieben am: 28.10.2014 20:45:35

Guten Abend,

ich hab eine Spalte mit Lagerplätze.
SpalteA
5999999
5999999
1235255
9898989
6543214
7788959
7788959
6546544
Jetzt sollen alle doppelte Lagerplätze gelöscht werden:
Dann wäre das Ergebnis so:
1235255
9898989
6543214
6546544
Wie mach ich das am besten ?
Danke
Gruß Jorgi

  

Betrifft: AW: mit Hilfsspalte und "Duplikate Entfernen" von: Daniel
Geschrieben am: 28.10.2014 21:19:17

Hi

wenn du die doppelten vollständig entfernen willst, dann so:

1. mindesten eine Überschriftenzeile einfügen, die Daten müssen in A2 oder später beginnen.
2. Tabelle so sortieren, dass gleiche direkt untereinander stehen
3. in einer freien Zelle der Tabelle folgende Formel eintragen:
=Wenn(Oder(A2=A1;A2=A3);0;Zeile())
ziehe die Formel bis ans Tabellende
4. Schreibe in die Überschriftenzeile der Hilfsspalte eine 0
5. wende auf die ganze Tabelle jetzt (dh incl der Hilfsspalte und der Überschirftenzeile) die Funktion :
Daten - Datentools - Duplikate entfernen an.
Verwende die Hilfsspalte als Kriteriumsspalte und die Option "keine Überschrift"
6. lösche die Hilfsspalte


wenn du nicht sortieren willst, dann kannst du als Formel auch:
=Wenn(ZählenWenn(A:A;A2)=1;Zeile();0) verwenden, was bei grösseren Datenmengen aber zu etwas längern Berechnungszeiten führen kann.

die Formeln sind immer für Zeile 2 geschrieben.

Gruß Daniel


  

Betrifft: AW: mit Hilfsspalte und "Duplikate Entfernen" von: Jorgi
Geschrieben am: 28.10.2014 21:30:29

Hallo Daniel,

Danke für deine Hilfe und mühe :-)

kann man es auch über VBA machen? Denn momentan sind es 32590 Zeilen :-()

LG Jorgi


  

Betrifft: AW: mit Hilfsspalte und "Duplikate Entfernen" von: Daniel
Geschrieben am: 28.10.2014 21:39:13

Hi
es spielt doch keine Rolle, ob du die Schritte für 10 oder 100.000 Zeilen ausführst!
fürs Sortieren und Duplikate entfernen markierst du eh die ganzen Spalten und wenn du sortiert hast, dann haben deine Zeilen auch keine Leerzellen mehr zwischen drin, dh. du kannst die Formel nach eingabe mit einem Doppelklick auf die rechte untere Ecke des Markierungsrahmens bis ans Datenende runterziehen (ansonten halt die Zellen mit Hilfe der ENDE-, SHIFT- und Pfeiltasten markieren um die Formel zu kopieren und einzufügen.)

ansonsten gilt die Grundregel:
alles was man von Hand in Excel machen kann, kann man auch durch ein Makro ausführen lassen, der Recorder ist dein Freund.
Wenns nicht klappt, kannst du dich ja noch mal melden, trotzdem solltest du die Aktion erstmal von Hand ausführen, schließlich willst du ja wissen, was dein Makro macht.

Gruß Daniel


  

Betrifft: AW: Doppelte Lagerplätze per VBA löschen von: Frank
Geschrieben am: 28.10.2014 23:20:35

Hallo Jorgi,

wenns denn unbedingt per VBA sein soll, dann so:

Sub dr()
z1 = 1
Do While Not Cells(z1, 1).Value = ""
    z2 = z1 + 1
    lz1 = Range("A1").End(xlDown).Row
    Do While Not z2 > lz1
        W1 = Cells(z1, 1).Value
        W2 = Cells(z2, 1).Value
        If W1 = W2 Then
            Cells(z2, 1).EntireRow.Delete
            Cells(z1, 1).EntireRow.Delete
            lz1 = lz1 - 2
        Else
            z2 = z2 + 1
        End If
    Loop
    z1 = z1 + 1
Loop
End Sub
Annahme hierbei, dass die Werte in Zeile 1 beginnen. Sollte dies nicht der Fall sein, dann z1 entsprechend anpassen. Und aufgepasst, es wird die ganze Zeile gelöscht. Soll nur die Zelle gelöscht und der Rest nach oben verschoben werden, dann statt
Cells(z2, 1).EntireRow.Delete
Cells(z1, 1).EntireRow.Delete
            Cells(z2, 1).Delete Shift:=xlUp
            Cells(z1, 1).Delete Shift:=xlUp
Grüsse,
Frank


  

Betrifft: danke an alle, werde beide variantenl heute testen von: Jorgi
Geschrieben am: 29.10.2014 04:38:10

.


  

Betrifft: AW: Doppelte Lagerplätze per VBA löschen von: Mullit
Geschrieben am: 29.10.2014 00:22:05

Hallo,

ist eigentlich nur 'n Einzeiler:

Option Explicit

Public Sub test()
    ActiveSheet.Columns(1).RemoveDuplicates Columns:=1, Header:=xlNo
End Sub

Gruß,


  

Betrifft: AW: Doppelte Lagerplätze per VBA löschen von: Mullit
Geschrieben am: 29.10.2014 00:25:29

Hallo,

ahh war natürlich crap, Du wolltest sie ja komplett löschen...

Gruß,


  

Betrifft: AW: Doppelte Lagerplätze per VBA löschen ändern von: jorgi
Geschrieben am: 29.10.2014 05:42:47

Hallo
Damit es nach oben geschoben wird,ist eine klasse idee. Wie mache ich, daß die ganze Zelle gelöscht wird. Von A bis M.

BESTNDANK
Jorgi


  

Betrifft: AW: Doppelte Lagerplätze per VBA löschen ändern von: Mullit
Geschrieben am: 29.10.2014 07:07:25

Hallo,

ah ok, wenn Du die Einzelwerte doch behalten willst:

Option Explicit

Public Sub testneu()
With ActiveSheet
    .Range(.Columns(1), .Columns(13)).RemoveDuplicates Columns:=1, Header:=xlNo
End With
End Sub
sonst analog zu Franks Code:
Option Explicit

Public Sub test()
 Dim lngRow As Long
 Application.ScreenUpdating = False
 With ActiveSheet
     For lngRow = .Cells(.Rows.Count, 1).End(xlUp).Row To 2 Step -1
        If .Cells(lngRow, 1) = .Cells(lngRow - 1, 1) Then
           .Cells(lngRow - 1, 1).Resize(2, 13).Delete Shift:=xlShiftUp
           lngRow = lngRow - 1
        End If
     Next
 End With
 Application.ScreenUpdating = True
End Sub

Gruß,


  

Betrifft: AW: Doppelte Lagerplätze per VBA löschen ändern von: jorgi
Geschrieben am: 29.10.2014 09:11:44

HallO
Alles klasse funktioniert.
Danke
LG jorgi


  

Betrifft: AW: Doppelte Lagerplätze per VBA löschen ändern von: Daniel
Geschrieben am: 29.10.2014 09:14:47

Hi
ist aber nicht das, was du in deiner Eingangfrage beschrieben hast!
Du wolltest Doppelte Komplett löschen, ohne dass ein Wert stehen bleibt.
Gruß Daniel


  

Betrifft: AW: Doppelte Lagerplätze per VBA löschen ändern von: jorgi
Geschrieben am: 29.10.2014 09:19:21

Hallo daniel,
Oh war Fehler von mir.
Sorry aber der code ist gut.
Auch vielen dank für deine hilfe
LG jorgi


  

Betrifft: AW: Doppelte Lagerplätze per VBA löschen ändern von: Daniel
Geschrieben am: 29.10.2014 09:28:12

der Code ist nichts anderes, als die Funktion DATEN - DATENTOOLS - TEXT IN SPALTEN mit dem Recorder aufgezeichnet.
Der Button dafür ist ziemlich auffällig in der Menüleiste verankert.
Gruß Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "Doppelte Lagerplätze per VBA löschen"