Zahlen in Buchstaben konvertieren

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Zahlen in Buchstaben konvertieren

von dkn » Do, 16.03.2006 17:29

ok es funktioniert fast - wie kann ich denn jetzt noch die werte sortieren,
wenn da wert(WIZ(a1)) steht kann ich die nicht mit der sortierfunktion sortiren...

von Karolus » Do, 16.03.2006 16:39

Hallo dkn
Versuchs mal damit

Function BUTOZI(formel As String)

Const DIGIT = "1234567890"
ReDim stack(1 To Len(formel) + 1)
Dim A, B, C As Variant , f As Single
Dim i As Integer, n as Integer, e as Integer

A = Array("A", "Ä", "a", "ä", "B", "b", "f", "F")

C = Array(1, 1, 1, 1, 2, 2, 2, 2)
For i = 7 To 0 Step -1
If Instr(1,formel, A(i),0) > 0 then
formel = Replace(formel, A(i), C(i))
n = n + 1
stack(n) = i
End If
Next
BUTOZI = (formel)

End Function
Function Replace( t as String, p as String, s as String) as String
Dim oFunktion as Object
Dim aArgumente(2) As String
' com.sun.star.sheet.FunctionAccess holen
oFunktion = createUnoService("com.sun.star.sheet.FunctionAccess")
aArgumente(0) = t
aArgumente(1) = p
aArgumente(2) = s
Replace = oFunktion.callFunction( "SUBSTITUTE", aArgumente() )
End Function

Anwenden mit
=BUTOZI(quellzelle)

Gruß
Karo

von dkn » Do, 16.03.2006 15:58

ok ich scheine auch lernfähig zu sein, der fehler is weg und er hat nix angezeigt, da ich nur mit a getestet haben bei aa hat er 1 angezeigt...

die zeile wandlet jetzt also alle buchstaben um - bis auf den letzten das heißt bei aaa würde 11 angezeigt anstatt 111... liegt da ein fehler in der funktion oder geht es nich den letzten auch anzuzeigen?

mfg dkn

von dkn » Do, 16.03.2006 15:32

bzw. kommt gar nix in der zielzelle... bei den zahlen funktioniert das und bei den buchstaben komischer weise nicht

von dkn » Do, 16.03.2006 15:29

bekomme da leider immer einen basic syntax error expected sub????

hab in einer zelle a5 ein wort aä stehen und hab einfach mal den text in makros kopiert und dann in zelle b5 =ZIW(a5) eingegeben und dann kam dieser fehler...

weiß jemand was da falsch mache?

von Karolus » Do, 16.03.2006 15:17

Hallo dkn

Etwa so:
Function WIZ (a)
a = TRIM(STR(a))
k = ""
For i = 1 to LEN(a)
j = MID(a,i,1)
Select Case j
Case "A"
k = k & "1"
Case "Ä"
k = k & "1"
Case "a"
k = k & "1"
Case "ä"
k = k & "1"
Case "b"
k = k & "2"
Case "B"
k = k & "2"
Case "F"
k = k & "2"
Case "f"
k = k & "2"
' Case "9"
' k = k & "neun-"
' Case "0"
' k = k & "null-"
End Select
Next i
WIZ= LEFT(k, LEN(k)-1)
End Function

Aufrufen aus einer anderen Zelle mit
=WIZ(quellzelle)
oder falls es auch als Wert gebraucht wird:
=WERT(WIZ(quellzelle))

Gruß
Karo

von dkn » Do, 16.03.2006 14:40

ich bin leider noch nicht vertraut mit calc und wollte fragen, wie ich obige funktion so umändern kann, dass ich wörter einer liste in zahlen umwandle.
als beispiel: alle a,A,ä,Ä sollen zu 1 umgewandelt werden und alle b,B,f,F zu 2, so dass aus Ab 12 wird....

mfg dkn

von Stephan » Mo, 28.03.2005 21:59

Zunächst die komplette Funktion in eine Bibliothek kopieren, z.B. die StandardBibliothek von OOo:
Extras>Makros>Makro...
im Dialogfenster links den Ordner Standard suchen da sollte schon Modul1 drunterstehen
Modul1 markieren, dann werden im rechten Fensterteil die enthaltenen Makros sichtbar
eines davon markieren und Bearbeiten-Schaltfläche drücken
jetzt den kompletten Text der Fubction da rein kopieren, vorhandene Makros nicht löschen einfach dazu kopieren
das Basic-IDE Fenster schließen

auf dem Tabellenblatt eine Zelle markieren und das hineinschreiben:

=ZIW(<Zelladresse>)

z.b. wenn 7213 in A1 steht dann in Ergebniszelle schreiben:

=ZIW(A1)


Gruß
Stephan

von MarkusK » Mo, 28.03.2005 21:24

Bitte entschuldigt, aber ich muss nochmal ganz bekloppt fragen (bin Calc-Anfänger): Wie um alles in der Welt gebe ich diese Formel ein, die Stephan freundlicherweise gepostet hat? Wenn ich die im Formelfeld oben eingebe, erscheint die im Feld als Text, aber es wird nichts berechnet :roll:

von Stephan » Mo, 28.03.2005 20:24

Ich würde dafür eine benutzerdefinierte Funktion verwenden.
Kopiere folgende Funktion in ein Modul det OOo-Bibliotheken oder der Dokumentbibliothek:

Code: Alles auswählen

Function ZIW (a)
a = TRIM(STR(a))
k = ""
For i = 1 to LEN(a)
	j = MID(a,i,1)
	Select Case j
		Case "1"
			k = k & "eins-"
		Case "2"
			k = k & "zwei-"
		Case "3"
			k = k & "drei-"
		Case "4"
			k = k & "vier-"
		Case "5"
			k = k & "fünf-"
		Case "6"
			k = k & "sechs-"
		Case "7"
			k = k & "sieben-"
		Case "8"
			k = k & "acht-"
		Case "9"
			k = k & "neun-"
		Case "0"
			k = k & "null-"
	End Select
Next i
ZIW = LEFT(k, LEN(k)-1)
End Function
in der Tabelle dann normal aufrufen mit:

=ZIW(<Zelladresse>)


Gruß
Stephan

von Frank Lauer » Mo, 28.03.2005 20:20

Hallo,

also ohne ein Makro sehe ich da wenig Chancen. Wie fitt bist du in StarBasic?
Ich versuchs einfach mal:

Sub ZahlToText()
Dim oSheet as Object
Dim sZeile1 as String
Dim sZeile2 as String
Dim iZaehler1 as Long
Dim iZaehler2 as Long

oSheet = ThisComponent .Sheets(X) 'Für X die Nummer des Tabellenblattes
For iZaehler1 = 0 To Y 'Für Y die letzte Spalte die konvertiert werden muss
sZeile1 = CStr(oSheet.getCellByPosition(iZaehler1,Z).value) 'Für Z die Zeile die konvertiert werden soll
If Len(sZeile1) > 0 Then
sZeile2 = ""
For iZaehler2 = 1 To Len(sZeile1)
Select Case Mid(sZeile1,iZaehler2,1)
Case "0"
sZeile2 = sZeile2 + "null-"
Case "1"
sZeile2 = sZeile2 + "eins-"
Case "2"
sZeile2 = sZeile2 + "zwei-"
usw.

Case "9"
sZeile2 = sZeile2 + "zwei-"
Case else
sZeile2 = sZeile2 + Mid(sZeile1,iZaehler2,1)
End Select

next iZaehler2
oSheet.getCellByPosition(iZaehler1,Z).string = sZeile2 ' siehe oben
end If
next iZaehler1

end sub

hab das nicht getestet, sollte aber funktionieren. Also tu dir einen Gefallen und mach dir eine Sicherheitskopie des Dokumentes.

Zahlen in Buchstaben konvertieren

von MarkusK » Mo, 28.03.2005 19:39

Hallo Leute,

bitte - könntet ihr mir mal helfen? Ich habe hier eine recht umfangreiche Tabelle und muss eine Zeile mit Zahlen in Buchstaben konvertieren. Dabei soll er die Zahl ausschreiben.

Beispiel: Aus einer 7213 muss eine sieben-zwei-eins-drei werden.

Wie mache ich das?!

Nach oben