![]() |
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 SubAnnahme 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).Delete Shift:=xlUp Cells(z1, 1).Delete Shift:=xlUpGrüsse,
![]() ![]() |
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
![]() ![]() |
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 Subsonst 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
![]() ![]() |
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
![]() |