Seite 1 von 1

Zeilenumbruch geht bei Formeln verloren

Verfasst: Do, 14.08.2008 12:36
von RealOrakel
Hallo zusammen,

ich habe folgendes Problem. In einer Zelle steht ein "Formatierungstext" mit manuellen Zeilenumbrüchen. In einer anderen Zelle wird der Text aus Zelle 1 mittels WECHSELN mit den korrekten Werten gefüllt. Nur geht dabei der manuelle Zeilenumbruch verloren. Kann man das beheben????

OO-Version 2.4

Hier ein Beispiel:

In Zelle A1 stehe
Mit %1 kann ich nichts anfangen
%2 Hilft mir auch nicht richtig weiter

In A2 steht "der Onlinehilfe"
In A3 steht "Google"

In A4 steht
=WECHSELN(WECHSELN(A1;"%1";A2);"%2";A3)

Der Text sieht dann so aus:
Mit der Onlinehilfe kann ich
nichts anfangen Google
Hilft mir auch nicht richtig
weiter

(Zeilenumbrüche varieren ja nach Zellenbreite)

Der Text wird also nicht wie in Zelle A1 umgebrochen, was aber gewünscht ist. Erstaunlicherweise wird ein Manueller Zeilenumbruch auch als Leerzeichen dargestellt.

Wäre Super, wenn da jemand ne Lösung kennen würde.

Gruß
Das reale Orakel :)

Re: Zeilenumbruch geht bei Formeln verloren

Verfasst: Do, 14.08.2008 13:14
von RealOrakel
Hi Sunny,

danke für die Antwort. Leider löst das mein Problem nicht.

Die Zeilenumbrüche sollen ja durch den Text in Zelle A1 vorgegeben werden. Der Zeilenumbruch in der Ergebniszelle muss nicht nicht neu "berechnet" werden.

Selbst wenn der Text aus A1 durch die einfache Formel "=A1" in eine andere Zelle übernommen werden soll geht der manuelle Zeilenumbruch verloren. (Zumindest die Übernahme der Formatierung hatte ich erwartet :()

Es währe ja nicht so schlimm, wenn wenigstens der ASCII-Code 10 am Ende einer Zeile zu finden währe. So finde ich nur ein Leerzeichen, das ja auch im restlichen Text vorkommen kann. Somit scheiden Lösungen mittels "WECHSELN" ebenfalls aus.

Gruß
Das reale Orakel

Re: Zeilenumbruch geht bei Formeln verloren

Verfasst: Do, 14.08.2008 15:12
von RealOrakel
paljass hat geschrieben:Hi RealOrakel,
früher sollen Orakel ja mal sehr hilfreich gewesen sein, heute dagegen... :)
Tja die guten alten Zeiten ;)

Diese Variante funktioniert. Nur stellt sie mich vor ein Problem. Die aktuellen mir vorliegenden Daten umfassen ca. 20.000 Datensätze, in denen Zellen mit manuellem Zeilenumbruch und obigem angesprochenen Muster enthalten sind.

Aus den Records müssen SQL-Anweisungen gebildet werden.

Um Deine Lösung anzuwenden würde ich also eine ganze Weile vor dem Sheet sitzen und das ganze von Hand machen. Wie gesagt. Da ich den Zeilenumbruch noch nicht mal erkennen kann (ASCII 32 anstelle ASCII 10) hab ich noch nicht mal einen Plan, wie ich das mittels Macro lösen könnte.

Tja. Wahrscheinlich muss ich mir doch irgenwie ein Excel besorgen. Aber ich kann mir nicht vorstellen, dass es da nix gibt *sigh*

Re: Zeilenumbruch geht bei Formeln verloren

Verfasst: Do, 14.08.2008 16:27
von RealOrakel
sunny hat geschrieben:Ist der Zeilenumbruch also nicht immer vor dem zweiten zu wechselnden Zeichen also vor %2?
mfG
Hi Sunny,

leider nein. Sorry wenn das im Beispiel so ausgesehen hat. Aber es gibt kein festes Schema, anhand ich den Zeilenumbruch in den Zellen erkennen könnte. Sonst währe es ja auch zu einfach :) ;) Ich hab auch keine Idee mehr. Hab mich jetzt mal an nem Script versucht, dass den Inhalt der Zelle auseinander nimmt, aber auch da kann ich nicht erkennen, wo der Zeilenumbruch ist.

Danke an alle für Ihre Mühe

Re: Zeilenumbruch geht bei Formeln verloren

Verfasst: Do, 14.08.2008 17:57
von RealOrakel
Hi

Inspiriert durch diese "ZEICHEN(10)" - Geschichte habe ich nun mal ein bischen Script gecodet. Was natürlich absolut fürchterlich aussieht, da ich absolut neu im Thema OOo-Basic bin. Erstaunlicherweise erkennt das Script den Zeilenumbruch als ASCII-Wert 10.

Nun habe ich nur noch ein kleines Problem mit dem Script (Ich poste das mal hier, um kein Crossposting zu erzeugen und weil es den einen oder anderen, der diesen Thread liest ja interessiert)

Code: Alles auswählen

Sub T1
	Dim nCounter					As Integer
	Dim nLfPosition					As Integer

	Dim lStartRow					As Long

	Dim oWorkSheet					As Object
	Dim oCell						As Object

	Dim szString					As String

	Rem =====================================================================
	Rem == Get Access to the actual Worksheet.                             ==
	Rem =====================================================================
	oWorkSheet = ThisComponent.Sheets(0)

	Rem =====================================================================
	Rem == Set starting row                                                ==
	Rem =====================================================================
	lStartRow = 1

	Rem =====================================================================
	Rem == Loop until we find no more content indicated by empty cell      ==
	Rem =====================================================================
	While Len( Trim$( oWorkSheet.getCellByPosition( 1, lStartRow ).String ) ) > 0
		szString = oWorkSheet.getCellByPosition( 1, lStartRow ).String

		Rem =================================================================
		Rem == Check if there is a line feed character in the string.      ==
		Rem =================================================================
		nLfPosition = Instr( szString, Chr$(10) )

		While nLfPosition > 0
			szString = Left$( szString, nLfPosition - 1 ) & Chr$(34) _
				& " & CHAR(10) & " & Chr$(34) _
				& Mid$( szString, nLfPosition + 1 )
			nLfPosition = Instr( szString, Chr$(10) )
		Wend

		Rem =================================================================
		Rem == Mark it as formula and write it to another cell             ==
		Rem =================================================================
		oWorkSheet.getCellByPosition( 4, lStartRow ).Formula = "= " & Chr$(34) & szString & Chr$(34)
		lStartRow = lStartRow + 1
	Wend
End Sub
Das letzte Problem ist, dass er mir nicht die Formel hinschreibt, sondern es erscheint #NAME. Ändere ich die Zelle mit F2 haut das alles wunderbar hin :) Aber das bekomme ich auch noch raus ;)

Allen vielen Dank für die Anregungen und Hilfe

Gruß
Das reale Orakel ;)

Re: Zeilenumbruch geht bei Formeln verloren

Verfasst: Do, 14.08.2008 18:56
von Karolus
Hallo
Verwende bei der Zuweisung: .formulalocal statt .formula
oder benutze in der Formelbildung CHAR(10) statt ZEICHEN(10)

Gruß Karo

Re: Zeilenumbruch geht bei Formeln verloren

Verfasst: Do, 14.08.2008 20:55
von RealOrakel
Karolus hat geschrieben:Hallo
Verwende bei der Zuweisung: .formulalocal statt .formula
oder benutze in der Formelbildung CHAR(10) statt ZEICHEN(10)

Gruß Karo
Hi Karolus,

CHAR(10) war das Zauberwörtchen.

Ich muss sagen, das hier ist wirklich ein tolles Forum. Noch mal Danke an alle. Für mich ist der Thread damit geschlossen (auch wenn's nur ein Workaround ist) Das Script habe ich noch entsprechend angepasst

Gruß
Das Orakel