Seite 1 von 1
Re: Zeile löschen wenn Stichwort vorhanden
Verfasst: Do, 10.06.2010 13:35
von bst
Hi,
mal ein Versuch. Es wird in Spalte B mit "Insgesamt" verglichen.
cu, Bernd
Code: Alles auswählen
--
REM ***** BASIC *****
Option Explicit
Sub DelSome()
dim oSheet as object
dim oCellCursor as object
dim nRow as long
dim i as Long
oSheet = ThisComponent.CurrentController.ActiveSheet
oCellCursor = oSheet.createCursor
oCellCursor.GotoEndOfUsedArea(False)
nRow = oCellCursor.getRangeAddress().endRow
for i = nRow to 0 Step -1
if oSheet.getCellByPosition(1,i).String <> "Insgesamt" then oSheet.getRows.removeByIndex(i,1)
next
End Sub
Re: Zeile löschen wenn Stichwort vorhanden
Verfasst: Do, 10.06.2010 13:38
von Karolus
Hallo
Sind diese Einträge auf 3 Spalten aufgeteilt ? - falls ja, weiter mit 2. falls nein :
1. →Daten→Text in Spalten: Trennzeichen ':'
2. →Daten→Filter→Standardfilter:
filtere Spalte B auf 'Insgesamt' , mit der Ausgabe in ein anderes Tabellenblatt.
Gruß Karo
Re: Zeile löschen wenn Stichwort vorhanden
Verfasst: Do, 10.06.2010 17:20
von bst
Hi Christopher,
falls der Aufbau der Daten immer so ist versuche das mal so.
cu, Bernd
--
Code: Alles auswählen
REM ***** BASIC *****
Option Explicit
Sub DelSome2()
dim oSheet as object
dim nRow as long
dim i as Long
oSheet = ThisComponent.CurrentController.ActiveSheet
nRow = getLastCell(oSheet).endRow
for i = nRow to 0 Step -1
select case lcase(oSheet.getCellByPosition(2,i).String)
case "männlich"
oSheet.getCellByPosition(0,i+1).Value = oSheet.getCellByPosition(0,i).Value
oSheet.getCellByPosition(1,i+1).String = oSheet.getCellByPosition(1,i).String
oSheet.getRows.removeByIndex(i,1)
case "insgesamt"
' nix zu tun
case else
oSheet.getRows.removeByIndex(i,1)
end select
next
End Sub
Function getLastCell(Optional oStartSheet as object) as object
dim oSheet as object
dim oCellCursor as object
if isMissing(oStartSheet) Then
oSheet = ThisComponent.CurrentController.ActiveSheet
else
oSheet = oStartSheet
endif
oCellCursor = oSheet.createCursor
oCellCursor.GotoEndOfUsedArea(False)
getLastCell = oCellCursor.getRangeAddress()
End Function
Re: Zeile löschen wenn Stichwort vorhanden
Verfasst: Do, 10.06.2010 20:13
von bst
Abend Christopher,
ersetze "männlich" mit "unter 3 jahre". Beachte die Kleinbuchstaben, ich benutze beim Vergleich LCASE.
Ungetestet.
HTH, Bernd
Re: Zeile löschen wenn Stichwort vorhanden
Verfasst: Fr, 11.06.2010 11:46
von bst
Hi,
wird nie erkannt da oben der Inhalt der Zelle in Kleinbuchstaben gewandelt wird. Nimm da mal:
Die Spaltennummer passt schon? Getestet wird denn via: getCellByPosition(2,i) d.h. das ist die Spalte C (da ab 0 gezählt wird).
cu, Bernd
Re: Zeile löschen wenn Stichwort vorhanden
Verfasst: Mo, 14.06.2010 08:47
von bst
Morgen,
Du brauchst überall im Select Kleinbuchstaben, dann geht das.
Da in Spalte A keine Zahlen sondern Text steht, nimm auch dort .String.
HTH, Bernd
--
Code: Alles auswählen
REM ***** BASIC *****
Option Explicit
Sub DelSome3()
dim oSheet as object
dim nRow as long
dim i as Long
oSheet = ThisComponent.CurrentController.ActiveSheet
nRow = getLastCell(oSheet).endRow
for i = nRow to 0 Step -1
select case lcase(oSheet.getCellByPosition(2,i).String)
case "unter 3 jahre"
oSheet.getCellByPosition(0,i+1).String = oSheet.getCellByPosition(0,i).String
oSheet.getCellByPosition(1,i+1).String = oSheet.getCellByPosition(1,i).String
oSheet.getRows.removeByIndex(i,1)
case "insgesamt"
' nix zu tun
case else
oSheet.getRows.removeByIndex(i,1)
end select
next
End Sub
Function getLastCell(Optional oStartSheet as object) as object
dim oSheet as object
dim oCellCursor as object
if isMissing(oStartSheet) Then
oSheet = ThisComponent.CurrentController.ActiveSheet
else
oSheet = oStartSheet
endif
oCellCursor = oSheet.createCursor
oCellCursor.GotoEndOfUsedArea(False)
getLastCell = oCellCursor.getRangeAddress()
End Function