Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1148to1152
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
Inhaltsverzeichnis

Funktion für Umwandlung von Strings

Funktion für Umwandlung von Strings
Strings
Guten Tag
Ich möchte Strings einer bestimmten Art in eine Zahl umwandeln, und zwar wie folgt:
Aus 141A --> 141.01
Aus 141a --> 141.01 (identisch, wie oben)
Aus 14B --> 14.02
Aus 1001C --> 1001.03
Aus 993 --> 993 (unverändert)
Aus 1A --> 1.01
Aus 22AA --> 22.27 (AA = 27. Spalte)
Aus 1/1 --> 1.0 (irgendwelche Sonderzeichen sowie die solchen folgenden ignorieren
Stelle mir vor, den String an eine Funktion zu übergeben und dann Zeichen für Zeichen abzuarbeiten und Buchstaben analog Spaltenbuchstaben umzuwandeln (und vom Buchstabenwer einen Hundertstel zu berücksichtigen)
Wer kann mir helfen, das in eine Funktion zu packen?
Danke und Gruss, Peter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Funktion für Umwandlung von Strings
13.04.2010 15:54:23
Strings
Hallo Peter,
versuche es mal so:
Public Function BuchstabenErsetzen(Wert As String) As String
BuchstabenErsetzen = Wert
For i = 1 To Len(Wert)
If Not IsNumeric(Mid(Wert, i, 1)) Then
Select Case Asc(Mid(Wert, i, 1))
Case Is  122
BuchstabenErsetzen = Mid(Wert, 1, i - 1)
Exit For
Case Else
BuchstabenErsetzen = Mid(Wert, 1, i - 1) & "." & Format(Columns(UCase(Mid(Wert, i))). _
Column, "00")
Exit For
End Select
End If
Next i
End Function
Gruß Uppe
AW: Funktion für Umwandlung von Strings
13.04.2010 16:23:16
Strings
Halle Uppe
Manchmal kann man nur staunen.
1) Der Code funktioniert einwandfrei - Danke!
2) beim über den Code fliegen dachte ich, mir, dass die Nachkommastellen fehlen - ich irrte!
3) ich blick einfach nicht durch, was die einzelnen Schritte im Code sind
Darf ich dich nochmals bemühen und bitten, mir den Code kurz zu erklären - lerne gerne dazu - und hier ist eine Menge, die ich lernen kann!
Vielen Dank!
Peter
Anzeige
AW: Funktion für Umwandlung von Strings
13.04.2010 16:40:04
Strings
Hallo Peter,
aber gern doch. Hier der Code mit Dokumentation (das ist leider meine Schwäche):
Public Function BuchstabenErsetzen(Wert As String) As String
'der Wert der Zelle wird 1:1 übergeben (wird gebraucht, wenn kein Buchstabe oder  _
Sonderzeichen im Wert ist)
BuchstabenErsetzen = Wert
For i = 1 To Len(Wert)
  'jede Stelle wird geprüft, ob es eine Zahl ist; wenn nicht->
If Not IsNumeric(Mid(Wert, i, 1)) Then
'der Zahlenwert des nichtnumerischen Zeichens wird gebildet
Select Case Asc(Mid(Wert, i, 1))
'wenn es kein Buchstabe, sondern ein Sonderzeichen ist
Case Is  122
      'der Wert wird eine Stelle vor dem Sonderzeichen abgeschnitten 
BuchstabenErsetzen = Mid(Wert, 1, i - 1)
Exit For
    ' wenn es ein Buchstabe ist
Case Else
      'der Wert wird eine Stelle vor dem Buchstaben abgeschnitten, ein Punkt und die  _
Spaltennummer (die zu den Großbuchstaben bis zum Ende des Wertes gehört) im zweistelligen Format eingefügt
BuchstabenErsetzen = Mid(Wert, 1, i - 1) & "." & Format(Columns(UCase(Mid(Wert, i))). _
Column, "00")
Exit For
End Select
End If
Next i
End Function

Gruß Uppe
Anzeige
AW: unktion für Umwandlung von Strings
13.04.2010 16:43:59
Strings
Hallo Uppe
Vielen Dank. Das ist beeindruckend - ich muss es erst noch verdauen.
Gruss, Peter
Umwandlungs-Variante
13.04.2010 19:21:18
Erich
Hi Peter,
hier noch eine Variante, die die Ergebnisse in Spalte B liefert.
Unterschiede zeigen sich erst in den Zeilen 9 bis 11:
 ABCD
1TextUmwStringBuchstErsSoll-Vorgabe
2141a141.01141.01141.01
314B14.0214.0214.02
41001C1001.031001.031001.03
5993993993993 (unverändert)
61A1.011.011.01
722AA22.2722.2722.27 (AA = 27. Spalte)
81IV1.2561.256 
91/11.0011.0
101ZZ1.261ZZZ ist 26
11123ABC123.55123ABCABC wäre 731 in XL2007

Formeln der Tabelle
ZelleFormel
B2=UmwString(A2)
C2=BuchstabenErsetzen(A2)

Und hier der Code der Funktion:

Function UmwString(tt As String) As String
Dim pp As Long, ss As Long, zz As String
pp = 1
zz = Mid(tt, 1, 1)
While IsNumeric(zz)                       ' sammle die ersten Ziffern
UmwString = UmwString & zz
pp = pp + 1
zz = Mid(tt, pp, 1)
Wend
If pp > Len(tt) Then Exit Function        ' alle Zeichen erfasst -> Ende
For pp = 3 To 1 Step -1                   ' teste, ob Spaltenbezeichnung
On Error Resume Next                   '  (3 bis 1 Zeichen, 3 wg. XL2007)
ss = Columns(Right(tt, pp)).Column
On Error GoTo 0
If ss > 0 Then Exit For                      ' wenn ok, dann fertig
Next pp
UmwString = UmwString & "." & Format(ss, "00")  ' Spalte mind. 2stellig
End Function
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Umwandlungs-Variante
13.04.2010 19:39:33
Peter
Hallo Erich
Vielen Dank auch für deine Variante
Ich werde das in Ruhe studieren - und auch im 2007 austesten (arbeite sowohl mit xp als 2007)
Gruss, Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige