Anwendungsfall: Ich möchte Daten von Spalte A in Spalte B kopieren (wobei Spalte A, B beliebige Spalten sind). Sobald die Daten in Spalte B gespeichert sind, möchte ich doppelte Einträge in Spalte B entfernen.Excel definiert Bereich über 100 Blatt Tabs, entfernen Duplikate in Spalte für 100 + Blätter
Erstellen Sie eine Schleife, die Daten aus Spalte A in Spalte B verschiebt und dann Dubletten für jedes Blatt in einer Arbeitsmappe entfernt.
`Sub Copy()
For i = 1 To Sheets.Count
Worksheets(i).Range("A1:A100")
Destination:=Worksheets(i).Range("B1")
Next
End Sub
`
Zum Testen habe ich die Aufgaben in zwei verschiedene Sub() getrennt. Sub Copy()
funktioniert und kopiert meine Daten korrekt. Sheet1 ist auch
`Sub RemoveStuff()
Dim rng As Range
For j = 1 To Sheets.Count
Set rng = Worksheets("Sheet1").Range(Range("B1"),Range("B1").End(xlDown)).Select
rng.RemoveDuplicates Columns:=(1), Header:=xlGuess
Next
End Sub
`
Mein Fehler richtig bei der Definition des Bereichs liegt. Jedes Blatt hat eine andere Anzahl von Einträgen, um Duplikate zu entfernen. Sheet1 könnte 50 Zeilen haben und auf 6 reduziert werden. Sheet2 könnte 70 haben und auf 3 reduzieren. Sheet3 könnte 20 Zeilen haben und auf 12 Uniques reduziert werden. Excel lässt Sie keine Duplikate aus dem Bereich (B: B!) Entfernen
Wie kann ich meinen Bereich richtig definieren, sodass ich Duplikate in einer Schleife für einen dynamisch definierten Bereich für jedes Blatt entfernen kann (Blatt = Registerkarten in der Arbeitsmappe)?
EDIT 2-23-17 Neuer Code von Y0wE3K
Sub RemoveStuff() Dim ws As Worksheet For Each ws In Worksheets ws.Columns("P:P").RemoveDuplicates,Columns:=1, Header:=xlYes Next End Sub
noch nicht funktioniert. Wenn ich Spalte P manuell auswähle, bevor ich das Makro ausführe, funktioniert es. Aber es gilt nur für das eine Blatt, das ich ausgewählt habe, es scheint nicht die Schleife auszuführen. Bestimmt nicht automatisch jedes Blatt, oder mich für jeden einzeln auffordern. EDIT: 3/4
Stellen Sie sicher, dass Sie keine geschützten Daten haben, habe ich auch Probleme mit Pivot-Tabellen, aber ich denke, das können Berechtigungen sein, danke für Hilfe.
Sub RemoveStuff()
Dim ws As Worksheet
For Each ws In Worksheets ' Use Worksheets instead of Sheets,
' in case there are any Charts
'You can just select the whole column, rather than selecting
'specific rows
ws.Columns("B:B").RemoveDuplicates Columns:=1, Header:=xlGuess
Next
End Sub
Entfernen Sie die '.Select' aus' Set rng = .... .Select' – YowE3K
Ihre 'RemoveStuff'-Schleife wird tatsächlich nicht jede Schleife ändern. Willst du alle Blätter auswählen und einen Bereich festlegen? Sie sollten auch vorsichtig sein, und fügen Sie das Arbeitsblatt vor beiden 'Bereich (" B1 ")' dort hinzu. Andernfalls wird nur der Bereich des ActiveSheets abgefangen. – BruceWayne
Sind Sie sicher, dass 'Kopieren' funktioniert?!?!?! – YowE3K