Am 20.11.2013 09:40, schrieb G. Mohing, VT: >> Dies habe ich nicht verstanden. Was ist eine Gruppe, woran erkennt man >> die? Werden zwei Gruppen durch Leerzeile getrennt oder wie? Auch die >> Zahlen im Beispiel kann ich nicht sinnvoll vom Ursprungsformat zum >> Zielformat zuordnen. > Man erkennt einer Gruppe einzig und allein durch eine wiederkehrende > Labelabfolge. Keine Leerzeilen. Einzig und allein eine Stack-Struktur.
Sind die Gruppen alle vollständig, oder können da u. U. auch Labels fehlen? >> Vermutlich hast du noch keine hilfreiche Rückmeldung erhalten, weil >> das nicht klar genug formuliert war. Vielleicht beschreibst du einfach >> nochmal neu? > Eingabedatei (Ausschnitt, 2 Blöcke): > 5=1 > 4=2.1 > 6=61 > 37=100.0000 > 38=200.0000 > 39=20.00 > 5=121 > 4=3.2 > 6=51 > 37=112.2345 > 38=212.7654 > 39.19.99 Möglichkeit 1: Alles einlesen in ein separates Tabellenblatt (mit dem '=' als Trenner), und dann per Makro die Gruppe zusammenfassen und Zeilenweise in ein weiteres Tabellenblatt einfügen. Diese Variante ermöglicht ach das Zusammenfassen unvollständiger Gruppen. Ungefähr so (grob zusammen geschuster, ungeprüft): Dim oSourceSheet As Object Dim oTargetSheet As Object Dim oCellAddress As Object Dim oCell As Object DIM iSourcetline as interger DIM iTargetline as integer Dim v As Variant Dim sGruppe as string oSourceSheet = ThisComponent.Sheets(SourceSheet) oTargetSheet = ThisComponent.Sheets(TargetSheet) iSourcetline = 1 iTargetline = 0 sGruppe = "" oCell = oSourceSheet.getCellByPosition(1,iSourcetline) v = oCell.String DO UNTIL v = "" IF v = 5 IF iTargetline > 0 oCell = oTargetSheet.getCellByPosition(1,iTargetline) oCell.String = Trim(sGruppe) END IF iTargetline = iTargetline + 1 sGruppe = "" END IF oCell = oSourceSheet.getCellByPosition(2,iSourcetline) v = oCell.String sGruppe = sGruppe & " " & oCell.String iSourcetline = iSourcetline + 1 oCell = oSourceSheet.getCellByPosition(1,iSourcetline) v = oCell.String LOOP Variante zu Möglichkeit 1: Alternativ kann man die Datei auch direkt im Makro öffnen und Zeilenweise einlesen. Allerdings hat man dann keine (oder keine so gute) Möglichkeit, die eingelesenen Daten ggf. mit den ausgegebenen Daten zu vergleichen. Möglichkeit 2: Alles einlesen in ein separates Tabellenblatt (siehe Möglilchkeit 1) und per Formel zusammenfassen. Diese Variante setzt allerdings voraus, daß alle Gruppen vollständig sind. Ungefähr so (auch nur grob zusammen geschustert): =INDIREKT(ADRESSE(((ZEILE()-1)*6)+1;2;4;2;"Tabelle1")) & " " & _ INDIREKT(ADRESSE(((ZEILE()-1)*6)+2;2;4;2;"Tabelle1")) & " " & _ INDIREKT(ADRESSE(((ZEILE()-1)*6)+3;2;4;2;"Tabelle1")) & " " & _ INDIREKT(ADRESSE(((ZEILE()-1)*6)+4;2;4;2;"Tabelle1")) & ... Wenn die Gruppen auch teilweise unvollständig sein können sollten, dann müsstest Du das ganze aufwendiger gestalten. Ich würde dann mehrere Spalten erstellen und über SVERWEIS arbeiten: Spalte A =ADRESSE(((ZEILE()-1)*6)+1;1;4;2;"Tabelle1") & ":" & ADRESSE(((ZEILE()-1)*6)+6;2;4;2) Spalte B: =SVERWEIS(5;INDIREKT($A1);2;0) Spalte C: =SVERWEIS(4;INDIREKT($A1);2;0) Spalte D: =SVERWEIS(6;INDIREKT($A1);2;0) Spalte E: =SVERWEIS(37;INDIREKT($A1);2;0) usw. > Ausgabedatei: > a) Tabellarisch mit Leerzeichen als Trenner und/oder > b) in Formularstruktur mit Textbezeichnungen; zB als Nachweis Letzteres verstehe ich nicht; meinst Du, als zeilenweisen Datensatz mit den einzelnen Werten in je einer Zelle? Im Prinzip macht das (fast) die obige Formel (wenn Du die einzelnen 'INDIREKT(...)'-Teile anstatt miteinander zu verknüpfen eben in separate Spalten schreibst). > Vor 25 Jahren habe ich das mal in Pascal programmiert- aber das hilft > mir heute nicht weiter. Ich hätte ehrlich gesagt damals schon die Daten zu zeilenweisen Datensätzen zusammengefasst; aber auch das hilft Dir heute nicht weiter. :-/ > Wollte nur wissen ob sich dieses Problemchen mit LO erschlagen ließe. Erschlagen lässt sich fast alles. Die Frage ist höchstens, wie und mit welchem Aufwand; bzw. wie komfortabel, und welche Ausnahme- oder Fehlersituationen ggf. abgefangen werden sollen. Wolfgang -- -- Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de Listenarchiv: http://listarchives.libreoffice.org/de/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert