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
Zeilen mit teilweise definiertem Inhalt einer Spalte löschen
Moderator: Moderatoren
Zeilen mit teilweise definiertem Inhalt einer Spalte löschen
Wer Rechtschreibfehler findet darf sie behalten.
verwende:
OpenOffice 2.0
Suse 10.2
verwende:
OpenOffice 2.0
Suse 10.2
Hallo DocByte
Falls die Klammerzeichen als Kriterium ausreichen ? - dann so:
Gruß Karo
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
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
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
und bin zumindest ein bischen glücklich das ich die Tabelle nicht per Hand bearbeiten muss.
Gruß
DocByte
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) = ")"
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
Gruß
DocByte
Wer Rechtschreibfehler findet darf sie behalten.
verwende:
OpenOffice 2.0
Suse 10.2
verwende:
OpenOffice 2.0
Suse 10.2