Ist so ein Makro in Calc möglich?
Moderator: Moderatoren
Ist so ein Makro in Calc möglich?
Ich grüble schon eine Weile herum, ob ich die folgende Aufgabe in Calc mit einem Makro lösen kann:
Ich würde gerne automatisch von allen Zeilen, die mehrfach identisch vorkommen, alle Zeilen außer der ersten löschen. Mir fällt leider kein brauchbarer Ansatz ein.
Ich würde gerne automatisch von allen Zeilen, die mehrfach identisch vorkommen, alle Zeilen außer der ersten löschen. Mir fällt leider kein brauchbarer Ansatz ein.
Re: Ist so ein Makro in Calc möglich?
Hallo
Da ist kein Makrogewurstel nötig!
→Daten→Filter→StandardFilter→→[x]ohne Duplikate tuts auch.
Da ist kein Makrogewurstel nötig!
→Daten→Filter→StandardFilter→→[x]ohne Duplikate tuts auch.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Ist so ein Makro in Calc möglich?
Ah, danke für die Antwort - ich hätte die Aufgabe doch gleich richtig im Detail beschreiben sollen...
Es ist leider insofern komplizierter, als die erste Spalte der Tabelle beim Erkennen der Duplikate nicht berücksichtigt werden soll, d.h. Zeilen, die sich nur in der ersten Spalte unterscheiden, sollen als identisch betrachtet werden und nur die oberste von diesen Zeilen soll erhalten bleiben. Den Wert in Spalte 1 in der obersten Zeile brauche ich leider auch, sodass ich die Spalte nicht einfach herauslöschen kann.
Es ist leider insofern komplizierter, als die erste Spalte der Tabelle beim Erkennen der Duplikate nicht berücksichtigt werden soll, d.h. Zeilen, die sich nur in der ersten Spalte unterscheiden, sollen als identisch betrachtet werden und nur die oberste von diesen Zeilen soll erhalten bleiben. Den Wert in Spalte 1 in der obersten Zeile brauche ich leider auch, sodass ich die Spalte nicht einfach herauslöschen kann.
Re: Ist so ein Makro in Calc möglich?
Was denn nun?Es ist leider insofern komplizierter, als die erste Spalte der Tabelle beim Erkennen der Duplikate nicht berücksichtigt werden soll, d.h. Zeilen, die sich nur in der ersten Spalte unterscheiden, sollen als identisch betrachtet werden und nur die oberste von diesen Zeilen soll erhalten bleiben.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Ist so ein Makro in Calc möglich?
War das jetzt von mir unklar formuliert?
Die erste Spalte soll beim Erkennen von Duplikaten nicht berücksichtigt werden, d.h. wenn sich zwei Zeilen nur in der ersten Spalte und sonst nicht unterscheiden, sollen die Zeilen als identisch betrachtet und die weiter unten liegende Zeile gelöscht werden.
In der ersten Spalte steht das Datum, wenn an zwei verschiedenen Tagen die gleichen Werte erfasst wurden, und sich die Zeilen nur im Datum in Spalte 1 unterscheiden, sollen von diesen Zeilen alle außer der ältesten, die zuoberst steht, aus der Tabelle entfernt werden.
Re: Wie kann man Spalte A ausschliessen von »Filtern→ohne Duplikate«
Hallo
Selektiere explizit Spalte B bis Spalte ?, und filtere darauf.
Selektiere explizit Spalte B bis Spalte ?, und filtere darauf.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Ist so ein Makro in Calc möglich?
Du berechnest einfach einen Hash-Code über die Relevanten felder und wendest dann den Vorschlag von Karolus an: Filtern ohne Duplikate.
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
-
- ***
- Beiträge: 78
- Registriert: Fr, 12.05.2017 15:31
Re: Ist so ein Makro in Calc möglich?
Hallo
hilft dieses Makro?
Hier wird nur der doppelte Eintrag, z.B. in der Spalte F gelöscht aber nicht die Zeile.
Gruss Ingo
hilft dieses Makro?
Hier wird nur der doppelte Eintrag, z.B. in der Spalte F gelöscht aber nicht die Zeile.
Code: Alles auswählen
Sub doppelte_loeschen
ozeile=ThisComponent.CurrentController.ActiveSheet.Columns(5) 'Spalte F
oleer=ozeile.queryemptycells
oletzter=oleer(oleer.count-1)
erg = oletzter.rangeaddress.startrow-1
With ThisComponent.CurrentController.ActiveSheet
For i = 0 To erg
k = .getCellByPosition(5, i).String
For j = i+1 To erg
If .getCellByPosition(5, j).String = k Then
For jj = 0 To 5
.getCellByPosition(jj, j).String = ""
Next jj
End If
Next j
Next i
'msgbox ("doppelte Einträge wurden gelöscht")
End With
End Sub
Re: Wie kann man Spalte A ausschliessen von »Filtern→ohne Duplikate«
Ah, danke - mir war nicht klar, dass man beim Filtern Spalten ausschließen kann. Ganz klar ist mir noch immer nicht, wie das genau funktioniert und was das genau macht, aber ich denke, mit etwas herumprobieren werde ich draufkommenKarolus hat geschrieben: Do, 25.01.2024 08:40 Hallo
Selektiere explizit Spalte B bis Spalte ?, und filtere darauf.

Re: Ist so ein Makro in Calc möglich?
Danke! Nachdem das Filterwerkzeug anscheinend mächtiger ist, als ich dachte, werde ich das wahrscheinlich ohne Makro lösen können. Trotzdem ist das Makro, das du hier gepostet hast, sehr hilfreich und eine super Vorlage für andere Sachen, die ich brauche.little fingers hat geschrieben: Fr, 26.01.2024 17:28 Hallo
hilft dieses Makro?
Hier wird nur der doppelte Eintrag, z.B. in der Spalte F gelöscht aber nicht die Zeile.
Gruss IngoCode: Alles auswählen
Sub doppelte_loeschen ozeile=ThisComponent.CurrentController.ActiveSheet.Columns(5) 'Spalte F oleer=ozeile.queryemptycells oletzter=oleer(oleer.count-1) erg = oletzter.rangeaddress.startrow-1 With ThisComponent.CurrentController.ActiveSheet For i = 0 To erg k = .getCellByPosition(5, i).String For j = i+1 To erg If .getCellByPosition(5, j).String = k Then For jj = 0 To 5 .getCellByPosition(jj, j).String = "" Next jj End If Next j Next i 'msgbox ("doppelte Einträge wurden gelöscht") End With End Sub