Zahlen in Zahlenfolge hinzufügen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Muellermilch90
**
Beiträge: 34
Registriert: Sa, 24.03.2018 14:38

Re: Zahlen in Zahlenfolge hinzufügen

Beitrag von Muellermilch90 »

Super, jetzt verstehe ich. Dankeschön!
Muellermilch90
**
Beiträge: 34
Registriert: Sa, 24.03.2018 14:38

Re: Zahlen in Zahlenfolge hinzufügen

Beitrag 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?
Dateianhänge
Zelle.ods
(9.66 KiB) 61-mal heruntergeladen
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Zahlen in Zahlenfolge hinzufügen

Beitrag 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
Muellermilch90
**
Beiträge: 34
Registriert: Sa, 24.03.2018 14:38

Re: Zahlen in Zahlenfolge hinzufügen

Beitrag von Muellermilch90 »

Hallo R,

ich nutze zum ersten Mal ein Makro. Ziemlich cool! Vielen Dank :)
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Zahlen in Zahlenfolge hinzufügen

Beitrag 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
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Zahlen in Zahlenfolge hinzufügen

Beitrag 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
Dateianhänge
Nummern_einfügen.ods
(208.62 KiB) 67-mal heruntergeladen
Muellermilch90
**
Beiträge: 34
Registriert: Sa, 24.03.2018 14:38

Re: Zahlen in Zahlenfolge hinzufügen

Beitrag 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 :)
Muellermilch90
**
Beiträge: 34
Registriert: Sa, 24.03.2018 14:38

Re: Zahlen in Zahlenfolge hinzufügen

Beitrag 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.
Dateianhänge
Zahlenfolge Renko.ods
(300.93 KiB) 60-mal heruntergeladen
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Zahlen in Zahlenfolge hinzufügen

Beitrag 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
Dateianhänge
Zahlenfolge Renko F3K.ods
(201.63 KiB) 60-mal heruntergeladen
Muellermilch90
**
Beiträge: 34
Registriert: Sa, 24.03.2018 14:38

Re: Zahlen in Zahlenfolge hinzufügen

Beitrag von Muellermilch90 »

Perfekt. Ich danke dir !
Antworten