Zeile vergleichen und löschen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Zeile vergleichen und löschen

Re: Zeile vergleichen und löschen

von hooligan » Mo, 04.01.2010 17:56

Genau das hab ich gesucht. Vielen vielen Dank für die Lösung. Läuft perfekt ohne Schwierigkeiten.

Re: Zeile vergleichen und löschen

von Charly » Mo, 04.01.2010 15:07

Hallo!

Ich habe in meinem Makro noch einen Fehler entdeckt. Wenn ich auf der linken Seite einen Eintrag lösche muss ich den Zeilenschalter um 1 zurücksetzen, da sonst der nächste Spieler nicht überprüft wird, sondern erst der übernächste.
Auf der linken Seite ist dies nicht nötig, da das Makro immer alle Zeilen überprüft.
Hier der berichtigte Code:

Code: Alles auswählen

Sub Zeilenvergleichen()

Dok = ThisComponent
Controller = Dok.CurrentController
Blatt = Controller.ActiveSheet

'letzte Zeile suchen
Cursor = Blatt.createCursor()
Cursor.goToEndOfUsedArea(false)
Ende = Cursor.getRangeAddress().Endrow

For I = 2 To Ende

Spieler1 = Blatt.getCellByPosition(0,I).string

For I1 = 2 To Ende
Spieler2 = Blatt.getCellByPosition(5,I1).string

If Spieler1 = Spieler2 then
Wert1 = Blatt.getCellByPosition(1,I).string
Wert2 = Blatt.getCellByPosition(6,I1).string
If Wert2 < Wert1 then
Bereich = Blatt.getCellRangeByPosition(0,I,3,I).getRangeAddress()
Blatt.removeRange(Bereich,com.sun.star.sheet.CellDeleteMode.UP)
I = I-1
exit for
else
Bereich = Blatt.getCellRangeByPosition(5,I1,8,I1).getRangeAddress
Blatt.removeRange(Bereich,com.sun.star.sheet.CellDeleteMode.UP)
exit for
end if
end if
next
next
End Sub
Gruß
Charly

Re: Zeile vergleichen und löschen

von DPunch » Mo, 04.01.2010 15:06

In diesem Bereich

Code: Alles auswählen

If Wert2 < Wert1 then
Bereich = Blatt.getCellRangeByPosition(0,I,3,I).getRangeAddress()
else
muss allerdings noch die Laufvariable für die linke Seite der Spieler runtergesetzt werden, also

Code: Alles auswählen

If Wert2 < Wert1 then
Bereich = Blatt.getCellRangeByPosition(0,I,3,I).getRangeAddress()
I = I - 1
else

Re: Zeile vergleichen und löschen

von Charly » Mo, 04.01.2010 13:37

Hallo Hooligan!

Wenn ich deine ganzen Angaben lese, soll die Änderung in der Ausgangstabelle erfolgen und nicht wie in deinem Muster unterhalb der Ursprungsdaten. Ich habe mal dazu ein Makro geschrieben.

Gruß
Charly
Dateianhänge
zeilevergleichen.ods
(9.8 KiB) 53-mal heruntergeladen

Zeile vergleichen und löschen

von hooligan » So, 03.01.2010 20:26

Hallo,

ich hab schon im Calc Forum gefragt und dort wurde gemeint ich sollte mich hier mal melden, da es ist Makros einfacher gehen würde.
Ich probiere mal mich kurz und bündig zu halten.
zeilevergleichen.ods
(9.65 KiB) 59-mal heruntergeladen
Ich habe 2x4 Spalten mit fast den gleichen Informationen. Die einzige Information die anders ist, ist die Laufzeit die entweder niedriger oder höher ist.
Nun hätte ich gerne, das die 1. Zeile des linken Blockes "eingelesen" wird und der der selbe Spieler im rechten Block gesucht wird und das ermittelt wird, welche Laufzeit die geringere ist. Nun soll der Spieler mit der höheren Laufzeit aus der Spalte gelöscht werden in der er langsamer ist, sodass nur noch der schnellste Weg angezeigt wird.
Beispiel anhand der Datei : Spieler A wird im linken und rechten Block gesucht und verglichen. Spieler A wird aus dem linken Block gelöscht weil er 2 Minuten langsamer ist als aus dem rechten Block. Spieler A soll jetzt nur noch im rechten Block wiederzufinden sein.

EDIT : Meistens sind die einzelnen Spieler versetzt, sodass sie nicht immer in der gleichen Spalte stehen, falls das wissenswert ist.

Vielen Dank im vorraus
Gruß Patrick

Nach oben