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,

Code: Alles auswählen

case "Insgesamt"
wird nie erkannt da oben der Inhalt der Zelle in Kleinbuchstaben gewandelt wird. Nimm da mal:

Code: Alles auswählen

case "insgesamt"
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