Jede 2.te Zeile löschen.

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

gbolk
Beiträge: 2
Registriert: Fr, 27.04.2007 11:11

Jede 2.te Zeile löschen.

Beitrag von gbolk »

Hallo,

ich habe gesucht aber leider nichts gefunden. Sollte das Thema also schon bestand haben, mich bitte mit der Nase draufstoßen...

Mein Problem:
Ich habe eine Liste aus Tobit mit allerlei Adressdaten exportiert und nun unter OO-Calc importiert. Leider hat er aber beim export jede Adresse zweimal exportiert und somit ist in OO auch alles doppelt vorhanden.

Nun würde ich gerne jede zweite Zeile löschen und eine Liste mit statt 1694 Einträgen eine mit 874 Zeilen vorfinden.

Wer kann mir sachdienliche Hinweise geben...??

Danke und Gruß
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Beitrag von Karolus »

Hallo
Nun würde ich gerne jede zweite Zeile löschen und eine Liste mit statt 1694 Einträgen eine mit 874 Zeilen vorfinden.
Die Hälfte von 1694 ist 847.
per Makro ? :

Code: Alles auswählen

sub jede2teZeileloeschen
odoc=thiscomponent
  mysheet=odoc.sheets(0) '1. Tabellenblatt
  myrows=mysheet.getrows
for i = 1693 to 1 step -2 'index beginnt bei 0 !
'löschen Index und Anzahl
  myrows.removebyindex(i,1)
next i
end sub
Gruß Karo
gbolk
Beiträge: 2
Registriert: Fr, 27.04.2007 11:11

Beitrag von gbolk »

Das mit dem Ergebniss ist der Streß hier Schuld.... :roll:

Der Rest funktioniert....Danke...;-)....

Gruß
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Beitrag von Eia »

Sowas kann man auch filtern. Mit einem Standardfilter, der die Daten in eine neue Tabelle ausgibt und dabei Duplikate unterdrückt.
mfG
Nestea
**
Beiträge: 24
Registriert: Mo, 05.02.2007 21:56

Re: Jede 2.te Zeile löschen.

Beitrag von Nestea »

Wäre es möglich zu sagen, dass ich jede nte Zeile löschen bis zu 255.
Acha hab den Beitrag von Eia nicht gesehen. Mal schauen.
edit2:Hm, keine Ahnung wie das gehen soll.

Noch eine Sache. Wenn ich zb etwas in jede nte Zeile einfuegen wollen würde zb aus der Zwischenablage oder aus einer Zelle.
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Jede 2.te Zeile löschen.

Beitrag von Karolus »

Hallo

Code: Alles auswählen

sub jede_n_te_Zeile_loeschen
odoc=thiscomponent
n = 5  'Schrittweite anpassen!
erstezeile = 4 'anpassen!
endzeile = 255 'anpassen
  mysheet=odoc.sheets(0) '1. Tabellenblatt
  myrows=mysheet.getrows
for i = erstezeile-1 to (endzeile-erstezeile-(int(endzeile/n))) step n-1 'index beginnt bei 0 !
'löschen Index und Anzahl
  myrows.removebyindex(i,1)
next i
end sub
Vorsicht ! bei falschen Einträgen gibts ne Endlosschleife

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Nestea
**
Beiträge: 24
Registriert: Mo, 05.02.2007 21:56

Re: Jede 2.te Zeile löschen.

Beitrag von Nestea »

Aha, funktioniert alles gut soweit. Vielen Dank fürs Bemühen.
Geht das mit dem Einfügen auch? Also ein separates Makro.
mfG
Nestea
**
Beiträge: 24
Registriert: Mo, 05.02.2007 21:56

Re: Jede 2.te Zeile löschen.

Beitrag von Nestea »

Hm, funktioniert doch nicht so ganz.
n=2
erstezeile=13
endz=58
löscht er nur bis zur 21ten Zeile.
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Jede 2.te Zeile löschen.

Beitrag von Karolus »

Hallo
Da die Zeilen bei jeder Löschung nach oben rutschen muss müssen die effektiven Schleifendurchgänge von der oberen Grenze abgezogen werden, passts so:

Code: Alles auswählen

sub jede_n_te_Zeile_loeschen
odoc=thiscomponent
n = 2  'Schrittweite anpassen!
erstezeile = 13 'anpassen!
endzeile = 58 'anpassen
mysheet=odoc.sheets(0) '1. Tabellenblatt
myrows=mysheet.getrows
for i = erstezeile-1 to endzeile -int((endzeile - erstezeile)/n) step n-1 'index beginnt bei 0 !
	'löschen Index und Anzahl
	myrows.removebyindex(i,1)
next i
end sub
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Nestea
**
Beiträge: 24
Registriert: Mo, 05.02.2007 21:56

Re: Jede 2.te Zeile löschen.

Beitrag von Nestea »

Perfekt.
Wärs noch zu viel verlangt ein kleines Dialogfenster einzubauen?
Ich habe in der Hilfe ein bisschen gestöbert, aber nicht wirklich etwas
gefunden.
Nestea
**
Beiträge: 24
Registriert: Mo, 05.02.2007 21:56

Re: Jede 2.te Zeile löschen.

Beitrag von Nestea »

Nicht machbar auf die Schnelle?
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Jede 2.te Zeile löschen.

Beitrag von Karolus »

Hallo
Immer mit der Ruhe!

Code: Alles auswählen

sub jede_n_te_Zeile_loeschen

with thiscomponent.currentselection().rangeaddress

	erstezeile = .startrow 'erste Zeile der Selektion
	endzeile = .endrow 'letzte Zeile der Selektion
	mysheet = thisComponent.sheets( .sheet ) 'das sel. Tabellenblatt
	
end with

myrows = mysheet.getrows
n = val ( inputbox ( "jede n.te Zeile von Zeile " &_
				erstezeile+1 &" bis Zeile " &_
				endzeile+1 &"soll gelöscht werden" &chr(13)&_
				" " & chr(13) &_
				"Gib eine Schrittweite n >1 ein",, 2 )   ) 'Vorgabewert 2
				
	if n < 2 then
		msgbox ("Schrittweite zu klein")
		exit sub
	end if
	
for i = erstezeile to endzeile -int((endzeile - erstezeile)/n) step n-1 
	myrows.removebyindex(i,1) 'löschen Index und Anzahl
next i

end sub
Den abzuarbeitenden Bereich bestimmst du über einen selektierten Bereich, die Schrittweite gibst du ein.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Nestea
**
Beiträge: 24
Registriert: Mo, 05.02.2007 21:56

Re: Jede 2.te Zeile löschen.

Beitrag von Nestea »

Immer mit der Ruhe!
Keine Sorge. Ich habe niemanden (dich nicht) gehezt. Nur ja, war ein klein wenig zittrig :].

vielen Dank noch einmal.
mfG

edit:Ziemlich gut. Gefällt mir sehr.
Abbuzze
*
Beiträge: 14
Registriert: Fr, 09.12.2005 10:24

Re: Jede 2.te Zeile löschen.

Beitrag von Abbuzze »

Also als absolute Simpellösung:

1. Eine neue Spalte Einfügen.
2. Dann in die 1. Zeile eine "A" und in die 2. ein "B". Dann beide markieren und nach unten bis zum Ende der Einträge ziehen. Die Zellen sollten dann immer abwechselnd mit A u. B beschriftet sein.
3. Über Daten>Sortieren> diese Spalte sortieren lassen. Alle "A" stehen dann hintereinander, ebenso wie alle "B". Die doppelten Einträge sind also getrennt und man kann einen dieser Bereiche einfach löschen.
Gruß

Abbuzze
Antworten