Seite 2 von 2

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

Verfasst: So 1. Okt 2017, 21:22
von Fritz_70
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

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

Verfasst: Mo 2. Okt 2017, 14:09
von mikele
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.

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

Verfasst: Di 3. Okt 2017, 11:01
von Fritz_70
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

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

Verfasst: Di 3. Okt 2017, 11:09
von mikele
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

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

Verfasst: Di 3. Okt 2017, 11:38
von Fritz_70
Das ist auch noch eine Idee.

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

Danke.