Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
920to924
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeichen aus Zeichenkette auslesen

Zeichen aus Zeichenkette auslesen
05.11.2007 20:11:53
Martina
Hallo Excel-Spezialisten,
ich bin auf der Suche nach einem kleinen VBA-Modul für eine Aufgabe, die ich bisher mit Funktionen und Formatierungen gelöst habe. Ich erhoffe mir vom VBA-Code mehr Effektivität.
Folgendes Problem:
Ich bekomme Daten aus einer Datenbank, die wie folgt aussehen können und z.B. in Spalte A (beginnend in Zeile 2) stehen
600 12345
600-12345
00012345-600
12345
in allen 4 Varianten, hätte ich gerne statt dessen 60012345 in Spalte B oder wenns geht sogar in Spalte A stehen
Ich habe es bisher mit folgender Formel gelöst:
=WENN(LINKS(A2)="1";A2;WENN(LINKS(A2)="6";WERT(RECHTS(A2;5));WERT(TEIL(A2;4;5))))
und dann mit dem benutzerdef. Zahlenformat 60000000 formatiert, um mir jeweils die Verkettung zu ersparen.
Da meine Kenntnisse von VBA sich nur aufs Makroaufzeichnen beschränken, wollte ich hier um Hilfe bitten.
Ich hoffe, es hat heute Abend noch jemand Zeit und eine Idee, wie ich das mit einem Makro per Symbolklick schneller erledigen könnte.
Ich danke schon mal im Voraus und wünsche einen schönen Abend.
Gruß Martina

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeichen aus Zeichenkette auslesen
05.11.2007 20:28:00
Daniel
Hallo
probier mal das hier.
Wenn die Zelle F1 belegt ist kannst du im Makro an dieser Stelle irgend eine andere freie Zelle verwenden.

Sub Makro1()
With Range(Cells(2, 1), Cells(1, 1).End(xlDown))
.Replace What:="600 ", Replacement:="", LookAt:=xlPart
.Replace What:="600-", Replacement:="", LookAt:=xlPart
.Replace What:="-600", Replacement:="", LookAt:=xlPart
Range("F1") = 1
Range("F1").Select
Selection.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, skipBlanks:=True
Range("F1") = "60000000"
Range("F1").Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, skipBlanks:=True
Range("F1").ClearContents
End With
End Sub


Gruß, Daniel

Anzeige
AW: Zeichen aus Zeichenkette auslesen
05.11.2007 20:42:31
Martina
Hallo Daniel,
erst einmal vielen Dank. In Zelle A2 funktioniert das super, wobei ich ehrlich gesagt, nicht ganz verstehe, was da gemacht wird. Vielleicht kannst Du es in kurzen Anstrichen skizzieren, wenn Du so viel Zeit hast.
Was muß ich in Deinem Code ändern, damit er für die gesamte Spalte A die Daten ändert?
Gruß Martina

AW: Zeichen aus Zeichenkette auslesen
05.11.2007 20:57:00
Daniel
Hi
der Code bearbeitet normalerweise alle Daten zwischen A2 und der ersten leeren Zelle in Spalte A
allerdings muss in A1 auch ein Wert stehen, geht das .End(xldown) bis zur ersten belegten Zelle (eben A2)
möglich wäre aber auch dieser Code, dann sollten unterhab deiner umzuwandelnden Zahlen aber keine Werte mehr stehen, dafür sind dann aber Leerzellen zwischen den Werten kein Problem mehr.

With Range(Cells(2, 1), Cells(65536, 1).End(xlup))


Was der Code macht, eigentlich ganz einfach:
- erstmal alle 600, Leerzeichen und Bindestriche entfernen. ich mache immer in Kombination, damit nicht 16002 in 12 gekürzt wird.
- dann multipliziere ich alle Zellen mit 1 , das kann man auch weglassen, aber es stellt sicher, daß die Werte auch wirklich Zahlen und keine Texte mehr sind.
- dann addieren ich die 6000000, um die Zahlen auf das von dir gewünschte Format zu bringen.
das geht im bedarfsfall auch ohne Makro recht zügig über die Funktionen BEARBEITEN - ERSETZEN
und BEAREITEN - KOPIEREN (die 60000000) und anschließend BEARBEITEN - INHALTE EINFÜGEN - WERTE + ADDIEREN
Gruß, Daniel

Anzeige
AW: Zeichen aus Zeichenkette auslesen
05.11.2007 22:35:09
Martina
Hallo Daniel,
so funktioniert es jetzt genauso, wie ich es haben wollte.
Vielen Dank.
Die vorherige Version änderte bei mir leider nur den Inhalt in Zelle A2. Woran das liegen mag, weiß ich nicht.
Daß man eine Ziffernfolge, die Text ist, mit 1 multipliziert, um eine Zahl daraus zu machen, darauf wäre ich nie gekommen. Ich hätte vermutet, daß Excel da meckert. Ich nahm auch an, daß es im VBA eine äquivalente Funktion zur Wert-Funktion, die Text in Zahlen wandelt gibt.
Naja und die 600 wieder davor einfügen, hatte ich bisher mit dem Zahlenformat 60000000 gelöst, aber diese Zahl drauf addieren, geht natürlich auch.
Auf jeden Fall vielen Dank für Deine Mühe, jetzt kann ich mir das Formel kopieren, ausfüllen und formatieren erleichtern.
Gute Nacht!
Martina
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige