Zeilen mit teilweise definiertem Inhalt einer Spalte löschen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

DocByte
Beiträge: 5
Registriert: Di, 20.06.2006 14:26

Zeilen mit teilweise definiertem Inhalt einer Spalte löschen

Beitrag von DocByte »

schönen guten Tag,

ich möchte wie eingangs schon erwähnt in meiner Tabelle mit mehreren hundert Zeilen gewisse Zeilen mit teilweise definiertem Inhalt einer bestimmten Spalte löschen.
Also im Klartext sieht das Problem wie folgt aus.

Ich hab eine Spalte und in dieser Spalte stehen Zahlen und zwar teilweise in Klammern. Ich möchte jetzt mit Hilfe eines Makros alle Zeilen löschen die in der Spalte XY eine Zahl in Klammern stehen haben.
Ich bin immerhin soweit gekommen das ich mit folgendem Makro alle Zeilen mit einem festen Inhalt löschen kann.
Das Makro welches ich verwende sieht so aus:

Sub Main
oSheet = ThisComponent.CurrentController.getActiveSheet()
oCellCursor = oSheet.createCursor()
oCellCursor.GotoEndOfUsedArea(True)
letzte_Zeile = oCellCursor.getRangeAddress.EndRow
For i = 0 To letzte_Zeile
If oSheet.GetCellByPosition(6, i).String = "(#Wert)" Then
oSheet.Rows.removeByIndex(i,1)
i = i - 1
letzte_Zeile = letzte_Zeile - 1
End If
Next i
End Sub

Meiner Meinung nach müßte ich in dem Makro an Zeile 7 an der Stelle (#Wert) etwas eintragen was wie folgt aus sehen müßte: ('was-jetzt-kommt-kann-dir-egal-sein-lösch-es-trotzdem
Habt ihr da einen Tip für mich.

Vielen dank schonmal fürs lesen und nachdenken wünscht

DocByte
Wer Rechtschreibfehler findet darf sie behalten.

verwende:
OpenOffice 2.0
Suse 10.2
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Beitrag von Karolus »

Hallo DocByte

Falls die Klammerzeichen als Kriterium ausreichen ? - dann so:

Code: Alles auswählen

Sub Main
oSheet = ThisComponent.CurrentController.getActiveSheet()
oCellCursor = oSheet.createCursor()
oCellCursor.GotoEndOfUsedArea(True)
letzte_Zeile = oCellCursor.getRangeAddress.EndRow
For i = 0 To letzte_Zeile
If left(oSheet.GetCellByPosition(6, i).String,1) = "(" and right(oSheet.GetCellByPosition(6, i).String,1) = ")" Then
oSheet.Rows.removeByIndex(i,1)
i = i - 1
letzte_Zeile = letzte_Zeile - 1
End If
Next i
End Sub 
Gruß Karo
DocByte
Beiträge: 5
Registriert: Di, 20.06.2006 14:26

Beitrag von DocByte »

Hallo Karolus,

ich danke dir für deine Antwort. Leider hat dieses Makro nicht funktioniert. Ich vermute das es etwas mit der Formatierung der Spalte zu tun hat. Wie ich gerade feststellen mußte befinden sich hinter jeder Zahl in Klammern ein bis zwei Leerzeichen. Die Eingaben stammen per Copy&Paste aus einem MSWord Doc.
Ich habe in der Zeile

Code: Alles auswählen

If left(oSheet.GetCellByPosition(6, i).String,1) = "(" and right(oSheet.GetCellByPosition(6, i).String,1) = ")"
hinter die letzte Klammer ein Leerzeichen eingefügt und den String auf 2 erhöht aber leider hat er auch dann die entsprechenden Zeilen der Tabelle gelöscht, während er von mir per Hand eingegebene Werte entfernte.
Ich habe mittlerweile eine funktionierende aber nicht sehr schicke Lösung gefunden.
Ich 'Suche und Ersetze': .*\(.*\) durch x mit der Einstellung 'Regulärer Ausdruck' und
'Suche und Ersetze' T durch T mit der Einstellung 'Ähnlichkeitssuche'
dann benutze ich das Makro

Code: Alles auswählen

Sub Main
oSheet = ThisComponent.CurrentController.getActiveSheet()
oCellCursor = oSheet.createCursor()
oCellCursor.GotoEndOfUsedArea(True)
letzte_Zeile = oCellCursor.getRangeAddress.EndRow
For i = 0 To letzte_Zeile
If oSheet.GetCellByPosition(6, i).String = "T" Then
oSheet.Rows.removeByIndex(i,1)
i = i - 1
letzte_Zeile = letzte_Zeile - 1
End If
Next i
End Sub 
und bin zumindest ein bischen glücklich das ich die Tabelle nicht per Hand bearbeiten muss.

Gruß

DocByte
Wer Rechtschreibfehler findet darf sie behalten.

verwende:
OpenOffice 2.0
Suse 10.2
Antworten