Inhalt von mehreren Zellen in array einlesen und in eine Zelle schreiben

Alles zur Programmierung im OpenOffice.org
Fritz_70
Beiträge: 11
Registriert: Fr 15. Sep 2017, 22:49

Re: Inhalt von mehreren Zellen in array einlesen und in eine Zelle schreiben

Beitrag von Fritz_70 » So 1. Okt 2017, 21:22

Hallo,

ich habe mal ein bißchen was ausprobiert und bin zu diesem Ergebnis gekommen.
Zumindest funktioniert es soweit.
Vielleicht könnte man es auch etwas eleganter schreiben,aber ich wüßte nicht wie.

Code: Alles auswählen

Sub KategorieIndex
Dim inhalt,lesen as Integer

meinDok = ThisComponent 
a = 1
b = 1

for z = 0 to 528
 mZelle = meinDok.Sheets(0).getCellByPosition(a,b)
 inhalt = mZelle.value

  if inhalt <= 1 then
   e = 0
   nZelle = meinDok.Sheets(0).getCellByPosition(e,b)
   lesen = nZelle.value

  else
     c = 3
     d = b 
     mZelle = meinDok.Sheets(0).getCellByPosition(c,d)
     mZelle1 = mZelle.string
     c = 4
     d = b
     mZelle = meinDok.Sheets(0).getCellByPosition(c,d)
     mZelle2 = mZelle.value
     c = 5
     d = b
     mZelle = meinDok.Sheets(0).getCellByPosition(c,d)
     mZelle3 = mZelle.string
     c = 6
     d = b
     mZelle = meinDok.Sheets(0).getCellByPosition(c,d)
     mZelle4 = mZelle.value
     c = 7
     d = b
     mZelle = meinDok.Sheets(0).getCellByPosition(c,d)
     mZelle5 = mZelle.string
    
     f = 10
     d = b
     schreiben = meinDok.Sheets(0).getCellByPosition(f,d)
     schreiben.string = mZelle1 & mZelle2 & mZelle3 & mZelle4 & mZelle5   
  End if
  b = b+1
next  
 
End Sub
Ich muß noch dazu sagen,die for-Schleife ließt die Werte aus einer separaten Spalte aus.
Die if-Prüfung,ob ein Wert 1 hat,bezieht sich auf die Oberkategorie,diese enthält keine Werte
Bezieht sich das auf die Zellen A3:E1000?
Nein,es bezieht sich auf die Spalte B1:B528.


Gruß Fritz

mikele
Beiträge: 468
Registriert: Sa 23. Jul 2011, 22:09

Re: Inhalt von mehreren Zellen in array einlesen und in eine Zelle schreiben

Beitrag von mikele » Mo 2. Okt 2017, 14:09

Hallo,
ich habe deinen Code mal auf dein Anfangsbeispiel
A3 --
B3 0
C3 --
D3 11
E3 --
angewendet
Das Ergebnis ist wie gewünscht: --0--11--.
Dasselbe Ergebnis erhältst du allerdings auch mit getDataArray():

Code: Alles auswählen

	oDoc=Thiscomponent
	oTab=oDoc.Sheets(0)
	oBereich=oTab.getCellRangebyName("a3:e3")
	aDaten=oBereich.getdataarray
	ergebnistext1=join(aDaten(0),"")
Wenn ich den Code lese und richtig verstehe, dann wird in jeder Zeile:
geprüft, ob in Spalte B ein Wert <=0 steht
wenn ja: Wert aus Spalte A gelesen
wenn nein: Texte/Werte aus den Spalten D-H gelesen und zu einem String zusammengefasst, der dann in die Spalte K geschrieben wird.
Nun hast du mich komplett verwirrt: hier gibt es nämlich keinen Zeilenversatz! Damit sind wir wieder am Anfang: Das, was du mit den Makro machst, lässt sich ohne Probleme auch per Formel in Spalte K lösen.
Dateianhänge
makro_textkette.ods
(9.26 KiB) 24-mal heruntergeladen
Gruß,
mikele

Fritz_70
Beiträge: 11
Registriert: Fr 15. Sep 2017, 22:49

Re: Inhalt von mehreren Zellen in array einlesen und in eine Zelle schreiben

Beitrag von Fritz_70 » Di 3. Okt 2017, 11:01

Hallo mikele,

danke, genau so eine Funktion habe ich gesucht.
Es ist auch nicht so einfach für mich,alles so verständlich zu erklären,da ich ja kein Programmierer bin.

Das mit der Formel hat aber einen Nachteil.
Kopiere ich den Inhalt der Spalte K und füge ihn in eine neu Datei ein,ist die Spalte leer,weil die Formel kopiert wird und nicht die Werte.

Ich habe da noch eine andere Frage an dich,aber dazu mache ich ein neues Thema auf.

Gruß Fritz

mikele
Beiträge: 468
Registriert: Sa 23. Jul 2011, 22:09

Re: Inhalt von mehreren Zellen in array einlesen und in eine Zelle schreiben

Beitrag von mikele » Di 3. Okt 2017, 11:09

Hallo,
weil die Formel kopiert wird und nicht die Werte
dann nutze
1) Markieren
2) Kopieren
3) Inhalte einfügen ... (Shift+Strg+V) und dort nur "Text" und "Zahlen" und gg. "Datum&Zeit" auswählen
Gruß,
mikele

Fritz_70
Beiträge: 11
Registriert: Fr 15. Sep 2017, 22:49

Re: Inhalt von mehreren Zellen in array einlesen und in eine Zelle schreiben

Beitrag von Fritz_70 » Di 3. Okt 2017, 11:38

Das ist auch noch eine Idee.

Ja, die Macht der Gewohnheit.....
Ich kopiere fast nur über Strg+C und dann Strg+V.

Danke.

Antworten