# EXCEL Makro, 4 Stellen von hinten einrücken und ein Komma setzen



## Chris (22. Juli 2010)

Hallo zusammen,

ich sehe mich einer Aufgabe konfrontiert die sich wohl nur durch ein makro lösen lässt. Leider bin ich hierfür kein Fachmann und bedarf externer Hilfe. Es geht um Folgendes:

In einer Excel Tabelle stehen in der ersten Spalte Zahlenwerte gefolgt von einem Buchstaben und einem Leerzeichen. Dies sieht z.B. so aus: (ohne ' ')

*'123456S '*

Buchstabe und Leerzeichen sind immer vorhanden. Die Aufgabe besteht nun darin vom Ende der Zeichenkette her 4 Stellen einzurücken und dann ein Komma zu setzen. Das Ergebnis sieht dann so aus:* '1234,56S '*. Ist so etwas per Makro lösbar, falls ja könnte mir einer bei der Erstellung selbigen behilflich sein?


----------



## Yaslaw (22. Juli 2010)

könnte etw so gehen

```
Public Function test123(value As String)
    test123 = Left(value, Len(value) - 4) & "," & Right(value, 4)
End Function
```


----------



## tombe (22. Juli 2010)

Mal angenommen die Zahl steht in Zelle "A1" dann gibst du in Zelle "B1" folgende Formel ein:


```
=LINKS($A1;4) & "," & RECHTS($A1;4)
```

Edit: Ups, mal wieder zu langsam.


----------



## Chris (22. Juli 2010)

Hi, vielen Dank für Eure Hilfe. Ich habe das Ganze noch etwas modifiziert da es vorkommen kann dass die Zahlen unterschiedlich lange sind. Kann also chon vorkomme, dass es mal 1000, 1000000 oder 100000000000 ist.

Hier die Benutze Formel:


```
=LINKS(A1;(LÄNGE(A1)-4)) & "," & RECHTS(A1;4)
```

Sieht jemand einen Denkfehler dabei?


----------



## Yaslaw (23. Juli 2010)

Nö, ist genau das was meine Funktion auch macht. Einfach dass das verfl. Excel in deutsch deutsche Befehle haben will und so das ganze mit einem englischen Excel wieder unlesbar wird....
Ich werde mich nie an deutsche Befehle gewöhnen *g*



> ```
> test123 = Left(value, Len(value) - 4) & "," & Right(value, 4)
> ```


----------



## Drogist (23. Juli 2010)

Moin Chris,


> ich sehe mich einer Aufgabe konfrontiert die sich wohl nur durch ein makro lösen lässt


Die Lösung per Makro hast du ja schon. Aber es geht durchaus auch mit Bordmitteln:

```
=LINKS(A1;LÄNGE(A1)-2)/100&RECHTS(A1;2)
```
Dier ist in der Ausgabe selbstverständlich auch ein Leerzeichen angehängt


----------



## Matt297 (23. Juli 2010)

Das Problem bei diesen Excel-Formeln, bzw. was mich am meisten nervt, ist, dass man es nicht auf die eigene Zelle anwenden kann. Man braucht immer eine zweite Zelle, und das Ergebnis wird *nie* absolut gespeichert, sprich man braucht immer die Referenzzelle.
Deswegen benutze ich die Excel-Funktionen selten, sondern mach direkt alles mit VBA, da kann man sich nen schönes makro basteln und es auf ein hotkey setzen...



			
				yaslaw hat gesagt.:
			
		

> Ich werde mich nie an deutsche Befehle gewöhnen *g*


Das stimmt, Programmierung geschieht einfach mit Englischen Begriffen, und es kommt mir wie ne Fremdsprache vor, wenn ich sowas in Deutsch lese...


----------



## Drogist (23. Juli 2010)

@  Matt297
Ich gebe zu, dass es auch mir recht oft leichter fällt, mal eben 'ne SUB oder FUNCTION zu basteln. Aber die Excel Hausmittel haben auch ihre Vorteile. Nicht nur in Sachen Geschwindigkeit der Ausführung.

Mir ging es hier nur darum, dass es nicht unbedingt VBA sein muss.

@ yaslaw
die ganz frühen Versionen der Excel Makros waren deutsche Befehle. GRAUENHAFT!


----------



## Matt297 (23. Juli 2010)

Hmm, ich kann mir nicht vorstellen, dass bei du den Geschwindigkeitsunterschied bei so einer kleinen Funktion bemerkst 
Ja natürlich wenn man nen riesigen Haufen an Daten hat, geht das so vielleicht schneller aber (meiner Meinung nach) unkomfortabler...

Gruß
Matt


----------



## Drogist (24. Juli 2010)

Moin Matt297,

wir schweifen enorm vom eigentlichen Thema ab. Ich bin gerne bereit, mit dir und anderen über den sinnvollen Einsatz von VBA zu diskutieren, aber bitte in einem eigenen Thread. 

Solange sich _Chris_ hier nicht als TS meldet, werde ich mich zurückhalten.


----------

