Seite 2 von 2

Re: Zahlen in Zahlenfolge hinzufügen

Verfasst: Fr, 17.07.2020 20:42
von Muellermilch90
Super, jetzt verstehe ich. Dankeschön!

Re: Zahlen in Zahlenfolge hinzufügen

Verfasst: Sa, 18.07.2020 10:24
von Muellermilch90
Ich hatte gestern Abend noch selber versucht eine eigene Lösung zu finden.
Ich habe die Zahlen in eine Zelle gepackt und durch Suchen & Ersetzen die Zahlen 12 und 21 ausgetauscht.
Suche 12 ersetze durch 122, suche 21 ersetze durch 211.
Das hat wunderbar geklappt! Allerdings bekomme ich nun die Zahlen die in dieser Zelle sind nicht mehr in eine Spalte.
Dadurch das es sich hierbei um 60.000 Zahlen handelt, kann ich Transponieren nicht verwenden, da es zu wenig Spalten sind.
Im Anhang findet ihr diese Zahlen, nicht wundern. Das x habe ich als Trenner genutzt.
Auch wenn ich schon eine Lösung habe, würde mich das interessieren. Jemand eine Idee?

Re: Zahlen in Zahlenfolge hinzufügen

Verfasst: Sa, 18.07.2020 10:46
von F3K Total
Moin,
habe dir ein kurzes Makro geschrieben:

Code: Alles auswählen

Sub S_INSERT_NUMBERS
    oSheet = ThisComponent.Sheets.Getbyname("Tabelle1")
    oRange1 = oSheet.getcellrangebyName("K1:K10")
    oRange2 = oSheet.getcellrangebyName("L1:L10")
    oRangeTarget = oSheet.Columns.getbyName("M")
    nCounter = 0
    For i = 0 to uBound(oRange1.data)
        oRangeTarget.getCellByPosition(0,nCounter+i).Value = oRange1.getCellByPosition(0,i).Value
        if oRange2.getCellByPosition(0,i).Value > 0 then
            nCounter = nCounter+1
            oRangeTarget.getCellByPosition(0,nCounter+i).Value = oRange2.getCellByPosition(0,i).Value
        endif
    next i  
End Sub
Gruß R

Re: Zahlen in Zahlenfolge hinzufügen

Verfasst: Sa, 18.07.2020 10:54
von Muellermilch90
Hallo R,

ich nutze zum ersten Mal ein Makro. Ziemlich cool! Vielen Dank :)

Re: Zahlen in Zahlenfolge hinzufügen

Verfasst: Sa, 18.07.2020 12:42
von F3K Total
Moin,
was bedeutet "Ziemlich cool!" Hast du es schon mit deinen 60000 Zeilen ausprobiert?
Wohl nicht, denn es gibt eine Fehlermeldung.
Daher habe ich das Makro weiter verbessert:

Code: Alles auswählen

Sub S_INSERT_NUMBERS
    dim i as long
    t1 = Getsystemticks()
    oSheet = ThisComponent.Sheets.Getbyname("Tabelle1")
    oRange1 = oSheet.getcellrangebyName("K1:K60000")
    oRange2 = oSheet.getcellrangebyName("L1:L60000")
    oRangeTarget = oSheet.Columns.getbyName("M")
    nCounter = 0
    For i = 0 to oRange1.rows.Count -1
        oRangeTarget.getCellByPosition(0,nCounter+i).Value = oRange1.getCellByPosition(0,i).Value
        if oRange2.getCellByPosition(0,i).Value > 0 then
            nCounter = nCounter+1
            oRangeTarget.getCellByPosition(0,nCounter+i).Value = oRange2.getCellByPosition(0,i).Value
        endif
    next i  
    t2 = Getsystemticks()
    msgbox "Fertig, Dauer: " & (t2-t1)/1000 &" s"
End Sub
Nicht ungeduldig werden, bei mir läuft es über 60000 Zeilen etwa 66 Sekunden, kann je nach Rechner mehr oder weniger werden.
Gruß R

Re: Zahlen in Zahlenfolge hinzufügen

Verfasst: Sa, 18.07.2020 13:14
von F3K Total
Moin,
und nochmal verbessert, das folgende Makro läuft bei mir in 2,8 s durch 60000 Zeilen.

Code: Alles auswählen

Sub S_INSERT_NUMBERS
    dim i as long
    t1 = Getsystemticks()
    oSheet = ThisComponent.Sheets.Getbyname("Tabelle1")
    oRange1 = oSheet.getcellrangebyName("K1:K60000")'hier den zu untersuchenden Bereich eintragen
    oRange1data = oRange1.dataarray
    oRange2 = oSheet.getcellrangebyName("L1:L60000")'hier den zu untersuchenden Bereich eintragen
    oRange2data = oRange2.dataarray
    oRangeTarget = oSheet.getcellrangebyName("M1:M120000")'Doppelt so lang wie Spalte K
    oRangeTargetdata = oRangeTarget.dataarray
    nCounter = 0
    For i = 0 to oRange1.rows.Count -1
        oRangeTargetdata(nCounter+i)(0)= oRange1data(i)(0)
        if oRange2data(i)(0) <> "" then
            nCounter = nCounter+1
            oRangeTargetdata(nCounter+i)(0) = oRange2data(i)(0)
        endif
    next i 
    oRangeTarget.SetDataarray(oRangeTargetdata)
    t2 = Getsystemticks()
    msgbox "Fertig, Dauer: " & (t2-t1)/1000 &" s"
End Sub
Beispiel anbei.
Damit das Makro laufen darf, stellst du unter Extras/Einstellungen/OpenOffice/Sicherheit/Makrosicherheit oder Extras/Optionen/LibreOffice/Sicherheit/Makrosicherheit mindestens die Stufe "Mittel" ein, dann wirst du beim Öffnen von Dokumenten gefragt, ob du Makros ausführen möchtest.

Gruß R

Re: Zahlen in Zahlenfolge hinzufügen

Verfasst: Sa, 18.07.2020 13:51
von Muellermilch90
Mit den 60.000 Zahlen hatte ich es noch nicht probiert, nur mit 10 Zahlen zum Testen.
Das fande ich schon cool :D
Vielen vielen Dank R, das schaue ich mir in Ruhe später an.
Erstmal was essen :)

Re: Zahlen in Zahlenfolge hinzufügen

Verfasst: Sa, 18.07.2020 16:11
von Muellermilch90
Hallo R,
bei mir hat es auch 2,8 Sekunden gedauert. Echt Klasse wie das funktioniert!
Ich bin begeistert.
Nun habe ich leider ein weiteres Problem. Ich würde mich freuen, wenn du mir nochmal hilfst.
Für Spalte K gab es für jede Zelle ein passendes Datum. Dadurch das ja nun Zahlen aber hinzugekommen sind und sich alles verschiebt, fehlt mir dieses Datum in der neuen Zahlenfolge. Im Anhang findest du meine Tabelle.

Re: Zahlen in Zahlenfolge hinzufügen

Verfasst: So, 19.07.2020 08:56
von F3K Total
Moin,
so geht es, die Daten (Mehrzahl von Datum) werden in Spalte I eingesetzt:

Code: Alles auswählen

Sub S_INSERT_NUMBERS
    dim i as long
    t1 = Getsystemticks()
    oSheet = ThisComponent.Sheets.Getbyname("Sheet1")
    oDataSourceRange = oSheet.getcellrangebyName("H1:H60000")'hier den zu untersuchenden Bereich eintragen
    oDataTargetRange = oSheet.getcellrangebyName("I1:I120000")'Doppelt so lang
    oDataRangeSourcedata = oDataSourceRange.dataarray
    oDataRangeTargetdata = oDataTargetRange.dataarray
    oRange1 = oSheet.getcellrangebyName("K1:K60000")'hier den zu untersuchenden Bereich eintragen
    oRange1data = oRange1.dataarray
    oRange2 = oSheet.getcellrangebyName("L1:L60000")'hier den zu untersuchenden Bereich eintragen
    oRange2data = oRange2.dataarray
    oRangeTarget = oSheet.getcellrangebyName("M1:M120000")'Doppelt so lang wie Spalte K
    oRangeTargetdata = oRangeTarget.dataarray
    nCounter = 0
    For i = 0 to oRange1.rows.Count -1
        oRangeTargetdata(nCounter+i)(0)= oRange1data(i)(0)
        oDataRangeTargetdata(nCounter+i)(0) = oDataRangeSourcedata(i)(0)
        if oRange2data(i)(0) <> "" then
            nCounter = nCounter+1
            oRangeTargetdata(nCounter+i)(0) = oRange2data(i)(0)
            oDataRangeTargetdata(nCounter+i)(0) = oDataRangeSourcedata(i)(0)
        endif
    next i 
    oRangeTarget.SetDataarray(oRangeTargetdata)
    oDataTargetRange.SetDataarray(oDataRangeTargetdata)
    t2 = Getsystemticks()
    msgbox "Fertig, Dauer: " & (t2-t1)/1000 &" s"
End Sub
Gruß R

Re: Zahlen in Zahlenfolge hinzufügen

Verfasst: So, 19.07.2020 14:54
von Muellermilch90
Perfekt. Ich danke dir !