[Gelöst] mit Makro ganze Zeilen löschen, wenn Bedingung erfüllt ist

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

[Gelöst] mit Makro ganze Zeilen löschen, wenn Bedingung erfüllt ist

Beitrag von little fingers »

Hallo Ihr Lieben,

Ich hänge mal wieder und würde gerne,

die Werte, die in der Spalte $Tabelle1.F2:F$150 eingetragen sind,mit den Werten in der Spalte Tabelle2.C$5:C$120, vergleichen und dann sollen die ganzen Zeilen, der Spalte $Tabelle1.F2:F$150, wo die Eintragungen mit der Spalte Tabelle2.C$5:C$120 identisch sind, gelöscht werden .

Ist das irgendwie möglich?

Gruß Ingo
Zuletzt geändert von little fingers am So, 31.05.2020 09:44, insgesamt 1-mal geändert.
mikeleb
*******
Beiträge: 1315
Registriert: Fr, 09.12.2011 16:50

Re: mit Makro ganze Zeilen löschen, wenn Bedingung erfüllt ist

Beitrag von mikeleb »

Hallo,
Ist das irgendwie möglich?
Ja.
Wie weit bist du mit deinem Makro?
Warum beginnt der erste Bereich in Zeile 2 und der zweite in Zeile 5?
Gruß,
mikeleb
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: mit Makro ganze Zeilen löschen, wenn Bedingung erfüllt ist

Beitrag von little fingers »

Hi mikeleb!

Ich habe mit einem Makro gar nicht angefangen,da ich nullplan habe. :(
Ich möchte einfach bestimmte Werte, wie z.B. Kundennummern einfach in Tabelle2 eintragen, die grundsätzlich, wenn sie in Tabelle1 in dieser Spalte auftauchen, gelöscht werden sollen, wenn ich das Makro laufen lasse unabhängig von der jeweiligen Position, innerhalb der betreffenden Spalten in Tabelle1, wie auch Tabelle2. Also, in Tabelle2 in der Spalte (Tabelle2.C$5:C$120) sollen einfach Werte nachgetragen werden können, die dann beim Lauf auch gelöscht werden können. (so zu sagen, als flexible Quelle)

Gruss Ingo
mikeleb
*******
Beiträge: 1315
Registriert: Fr, 09.12.2011 16:50

Re: mit Makro ganze Zeilen löschen, wenn Bedingung erfüllt ist

Beitrag von mikeleb »

Hallo,
nun verstehe ich gar nichts mehr.
Gruß,
mikeleb
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: mit Makro ganze Zeilen löschen, wenn Bedingung erfüllt ist

Beitrag von little fingers »

Beispiel.ods
(8.59 KiB) 125-mal heruntergeladen
Sorry, ich bin derbe schlecht in Erklärungen :(
Vielleicht veranschaulicht ja das einfache Beispiel mein Anliegen!

Gruss Ingo
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: mit Makro ganze Zeilen löschen, wenn Bedingung erfüllt ist

Beitrag von Stephan »

Ich verstehe es leider auch nicht, denn wenn ich in der Beispieldatei lese:

"Die Zeilen,mit übereinstimmenden KD-Nr. In Tabelle1 F2:F150 und Tabelle2 C5:C150 sollen dann in Tabelle1 gelöscht werden!!"

So sind doch die angegebenen Zellbereiche unterschiedlich groß und mir ist nicht klar was genau verglichen werden soll, denn es gibt zumindest zwei denkbare Wege:

Es werden immer Zellen gleichen Namens verglichen, also F5-C5, F6-C6, ...
Es werden Zellen quasi von oben beginnend verglichen, also F2-C5, F3-C6, ...

Ich gehe auch nicht von einem flüchtigen Schreibfehler aus, denn in der Beispieldatei sind die zu vergleichenden Zellbereiche, doch auch genauso markiert wie im Text benannt, dh. dr Bereich in Tabelle 2 beginnt wirklich erst in Zeile 5.


Gruß
Stephan
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: mit Makro ganze Zeilen löschen, wenn Bedingung erfüllt ist

Beitrag von little fingers »

Hallo Stephan!

vielen Dank erst mal,dass auch Du Dir Gedanken über mein Problem machst!

Ich habe mir die Arbeitsweise so vorgestellt:

Ich importiere in Tabelle1 einfach ungefilterte Daten aus einer CSV. Diese Zeilenanzahl würde die 150 nicht überschreiten!!!
Hier habe ich in der Spalte F, die relevanten Werte (Kundennummern) stehen. Dabei sind dabei auch Kundennummern drin, die ich für weitere Verwendung nicht brauche und die auch stören.
Nun möchte ich in Tabelle2 einen Bereich definieren, in dem die Kundennummern eingetragen werden, die in Tabelle1 gestrichen werden sollen.
Also einfach für den Anwender. Er kann in die Liste in Tabelle2 gehen, Kunden zusätzlich eintragen oder entfernen, lässt das Makro laufen und hat danach eine bereinigte Tabelle1.
Und da hänge ich jetzt :(

Es würde mir ja schon reichen, wenn die entsprechenden Zellen, in Tabelle1 geleert werden würden !

Gruss Ingo
mikeleb
*******
Beiträge: 1315
Registriert: Fr, 09.12.2011 16:50

Re: mit Makro ganze Zeilen löschen, wenn Bedingung erfüllt ist

Beitrag von mikeleb »

Hallo,
abhängig davon, wie oft man es benötigt, wäre eine Option, eine Hilfsspalte zu benutzen, um herauszubekommen, ob dieses Zeile gelöscht werden soll und dann nach dieser zu filtern und zu löschen.
Dateianhänge
Beispiel.ods
(11.4 KiB) 124-mal heruntergeladen
Gruß,
mikeleb
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: mit Makro ganze Zeilen löschen, wenn Bedingung erfüllt ist

Beitrag von little fingers »

Hallo mikeleb!

Dein Beispiel würde bedingen, dass ich immer noch die Tabelle1 über die Spalte F sortieren muss,
dann manuell Zeilen lösche und hinterher die Hilfsspalte wieder einrichten muss.

Geht es nicht, dass Tabelle1 Spalte F , mit Tabelle2, K sowieso verglichen wird und
dann automatisch in Tabelle1, Spalte F der doppelte Eintrag in der ZELLE geleert wird?

Und dass ich danach mit diesem Makro:

Code: Alles auswählen

Sub leereKDloeschen

	' Alle Zeilen löschen, do in Zeile C keine Stellplätze definiert sind!!
' nur einmal in der Woche Leerzeilen löschen!!! (Sonntag)

 oDoc = ThisComponent
 oSheets = oDoc.Sheets
 oSheet = oSheets.getbyName("Tabelle1")
 oRows = oSheet.getRows

 Goto Start

 Start:
 for i = 150 to 2 step -1 ' zählt rückwärts , wegen INDEX
 
    oCell = oSheet.getCellByPosition(5,i)
    if oCell.Value = 0 Then 
       oRows.removeByIndex(i,1)
    End if

 Next i

 
End Sub
dann diese Zeilen löschen kann??

Vielen Dank, Schon einmal für die tolle Arbeit, die Ihr hier leistet, um solchen NullFormelVersteher, wie ich einer bin, zu helfen!

Gruss Ingo
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: mit Makro ganze Zeilen löschen, wenn Bedingung erfüllt ist

Beitrag von F3K Total »

Moin,
probiere es mal hiermit:

Code: Alles auswählen

Sub remove_Numbers
   aSourceData = ThisComponent.sheets.Tabelle2.getCellRangebyName("C5:C150").queryContentCells(1).data
   oTargetSheet = ThisComponent.sheets.Tabelle1
   oCursor = oTargetSheet.CreateCursor
   oCursor.gotoEndofUsedArea(false)
   nEndrow = oCursor.RangeAddress.Endrow
   oTargetRange = ThisComponent.sheets.Tabelle1.getCellRangebyPosition(5,1,5,nEndrow)
   aTargetData = oTargetRange.Data
   for i = 0 to UBound(aSourceData)
       for k = uBound(aTargetData) to 0 step - 1
          if aSourceData(i)(0)= aTargetData(k)(0) then
              oTargetCell = oTargetRange.getcellbyposition(0,k)
              oTargetSheet.rows.removebyindex(oTargetCell.Celladdress.Row,1)
          endif
          oCursor = oTargetSheet.CreateCursor
          oCursor.gotoEndofUsedArea(false)
          nEndrow = oCursor.RangeAddress.Endrow
          oTargetRange = ThisComponent.sheets.Tabelle1.getCellRangebyPosition(5,1,5,nEndrow)
          aTargetData = oTargetRange.Data
       next k
   next i
End Sub
Gruß R
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: mit Makro ganze Zeilen löschen, wenn Bedingung erfüllt ist

Beitrag von little fingers »

Genial!

Es macht genau das, was ich wollte!!!
Ihr seid Super, vielen Dank F3K Total für die Lösung und auch an die Anderen: Super, was Ihr hier macht!

Ein glücklicher Ingo

Gruss Ingo
Antworten