Zeile löschen wenn Stichwort vorhanden

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

bst
*****
Beiträge: 222
Registriert: Mo, 18.01.2010 16:14
Wohnort: Ilsfeld

Re: Zeile löschen wenn Stichwort vorhanden

Beitrag 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
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Zeile löschen wenn Stichwort vorhanden

Beitrag 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
LO25.2… debian 13( trixie ) auf Raspberry5 8GB (ARM64)
LO25.8… flatpak debian 13( trixie ) auf Raspberry5 8GB (ARM64)
bst
*****
Beiträge: 222
Registriert: Mo, 18.01.2010 16:14
Wohnort: Ilsfeld

Re: Zeile löschen wenn Stichwort vorhanden

Beitrag 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
bst
*****
Beiträge: 222
Registriert: Mo, 18.01.2010 16:14
Wohnort: Ilsfeld

Re: Zeile löschen wenn Stichwort vorhanden

Beitrag von bst »

Abend Christopher,

ersetze "männlich" mit "unter 3 jahre". Beachte die Kleinbuchstaben, ich benutze beim Vergleich LCASE.

Ungetestet.

HTH, Bernd
bst
*****
Beiträge: 222
Registriert: Mo, 18.01.2010 16:14
Wohnort: Ilsfeld

Re: Zeile löschen wenn Stichwort vorhanden

Beitrag 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
bst
*****
Beiträge: 222
Registriert: Mo, 18.01.2010 16:14
Wohnort: Ilsfeld

Re: Zeile löschen wenn Stichwort vorhanden

Beitrag 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
Antworten