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.
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
Zeile vergleichen und löschen
Moderator: Moderatoren
Re: Zeile vergleichen und löschen
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
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) 52-mal heruntergeladen
Re: Zeile vergleichen und löschen
In diesem Bereich
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()
else
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
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:
Gruß
Charly
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
Charly
Re: Zeile vergleichen und löschen
Genau das hab ich gesucht. Vielen vielen Dank für die Lösung. Läuft perfekt ohne Schwierigkeiten.