Excel Buchstabenkombination z.B. "ABC" durch Zahlenkombination z.B."1,2,3" ersetzen

Dieses Thema Excel Buchstabenkombination z.B. "ABC" durch Zahlenkombination z.B."1,2,3" ersetzen im Forum "Microsoft Office Suite" wurde erstellt von Quattroaner, 29. Juli 2013.

Thema: Excel Buchstabenkombination z.B. "ABC" durch Zahlenkombination z.B."1,2,3" ersetzen Hallo, ich habe folgendes Problem: Ich muss eine Tabelle machen in der man eine Buchstabenkombination eingibt, die...

  1. Hallo, ich habe folgendes Problem:
    Ich muss eine Tabelle machen in der man eine Buchstabenkombination eingibt, die mir dann eine Zahlenkombination ausgibt.
    Zum Beispiel:
    Ich gebe im Feld A1 "ABCD" ein, dann wird im Feld A2 "12,34" ausgegeben!

    Der Code soll dann so ähnlich sein:
    A=1
    B=2
    C=3
    D=4
    E=5
    F=6
    G=7
    H=8
    I=9
    J=0

    Vielen Dank schonmal im vorraus!
     
  2. Aloha,

    ich weiß nicht, ob da jemand von den Überflieger-Excel-Cracks eine fuchsige (und vor allem kurze) Formel für hat... ich würde es auf die Schnelle mit einem Makro etwa so lösen:



    Code:
    Function doDaDecode(Eingabe As String) As String
    
       Dim Buchstabe As String
       Dim i As Integer
       Dim Ausgabe As String
       Dim AusgabeMitKomma As String
       Dim daCode As Integer
       Dim daPos As Integer
       
       Dim TransTableIN As String
       Dim TransTableOUT As String
       
       If Not (Len(Eingabe) > 10) Then                    [COLOR=#008000] 'Eingabe darf nicht länger als max. 10 Zeichen sein...[/COLOR]
      [COLOR=#008000] '----------------------------------------------------------------------------------------------------------[/COLOR]
          If (Eingabe <> "") Then                          [COLOR=#008000]'wenn überhaupt eine Eingabe existiert[/COLOR]
          
            [COLOR=#008000] ' "Übersetzungstabelle"[/COLOR]
             TransTableIN = "ABCDEFGHIJ"
             TransTableOUT = "1234567890"
          
             Eingabe = UCase(Eingabe)                   [COLOR=#008000]  'wandelt ggf. Kleinbuchstaben in Großbuchstaben um[/COLOR]
             Ausgabe = ""
        
             For i = 1 To Len(Eingabe)
                Buchstabe = Mid$(Eingabe, i, 1)         [COLOR=#008000]  'nächster Buchstabe des Eingabe-Strings[/COLOR]
                daPos = InStr(1, TransTableIN, Buchstabe)[COLOR=#008000] 'Position des Buchstabens in TransTableIN[/COLOR]
                daCode = Mid$(TransTableOUT, daPos, 1)   [COLOR=#008000] 'entsprechende Position in TransTableOUT[/COLOR]
                Ausgabe = Ausgabe & daCode               [COLOR=#008000] 'schrittweiser Aufbau der Ausgabe[/COLOR]
             Next i
          
           [COLOR=#008000]  'baue Komma an drittletzter Stelle ein[/COLOR]
             AusgabeMitKomma = Mid(Ausgabe, 1, Len(Ausgabe) - 2) & _
                               "," & _
                               Mid(Ausgabe, Len(Ausgabe) - 1, 2)
             
             'Rückgabewert der Funktion
             doDaDecode = AusgabeMitKomma
          
          
          Else                                          [COLOR=#008000]  'wenn gar keine Eingabe existiert...[/COLOR]
             
             'Rückgabewert der Funktion
             doDaDecode = ""                              [COLOR=#008000] '...gebe leeren String zurück[/COLOR]
          
          End If
       '----------------------------------------------------------------------------------------------------------
       Else                                                [COLOR=#008000]'Wenn die Eingabe länger als 10 Zeichen ist...[/COLOR]
          
           doDaDecode = "Eingabe ungültig!"             [COLOR=#008000]   '... Fehlermeldung ausgeben[/COLOR]
          
       End If
       
    
    End Function
    
    
    

    Dazu in einer Excel-Tabelle per ALT-F11 (von mir aus auch über die Menüs) den VB-Editor starten,
    ein neues "Modul" anlegen...


    20130729-1911_-_screenshot.001.png

    ... und obigen Code (Function doDaDecode usw.) reinkopieren.


    In B1, B2, B3 usw. schreibst du dann wie im Screenshot zu sehen ist, den Funktionsaufruf für das Makro à la

    =doDaDecode(A1)


    Das Makro ignoriert Groß-/Kleinschreibung der Buchstaben in der Spalte A und überprüft zudem, ob die Zeichenkette nicht länger als 10 Zeichen (A-J) ist.

    20130729-1901_-_screenshot.001.png
     
  3. Super, Danke für die schnelle Antwort! Das ist genau so wie ich das haben wollte:smug:
     
  4. :xyxthumbs:
     
  5. Nur ein paar ergänzende Hinweise: 1. was passiert, wenn ein Input-Zeichen kein A..J ist (entweder ignorieren oder Fehlermeldung) 2. Wenn weniger als drei Buchstaben eingegeben werden, funktioniert das Einfügen des Kommas nicht richtig. Man muss dann den Ausgabestring mit Vornullen erweitern, bevor man das Komma einfügt.
     
  6. Probier es doch einfach aus.
    In der Ziel-Zelle erscheint der Fehler "#WERT!".

    Ich bitte vielmals um Entschuldigung, daß ich nicht alle möglichen Eingabe-Eventualitäten durch Plausis abgefangen habe.
    Ich habe mich für diese spontane Lösung auf das Abfangen von...
    · Unterschieden in der Groß-/Kleinschreibung
    · Eingaben > 10 Zeichen
    · Eingaben leerer Werte
    ...beschränkt.
    Als Gedanken-Anstoß sollte das denke ich reichen.
    Wenn ich einen bezahlten Programmier-Auftrag für eine FiBu-Software erhalte, geb ich mir mehr Mühe.
    Versprochen.

    Aber anhand der vorliegenden Plausis für Eingaben > 10 Zeichen und leere Werte darfst du den Quellcode gerne erweitern.

    siehe oben
     
    Zuletzt bearbeitet: 1. Aug. 2013
  7. Es war ja nur ein Hinweis und nicht als Kritik gemeint.
     
  8. Na gut. :biggthumpup:

    Der Vollständigkeit halber habe ich die o.g. Plausibilitätsprüfungen noch eingebaut:


    Code:
    Function doDaDecode(Eingabe As String) As String
    
       Dim Buchstabe As String
       Dim CheckLen As Integer
       Dim validChar As Boolean
       Dim i As Integer
       Dim Ausgabe As String
       Dim AusgabeMitKomma As String
       Dim daCode As Integer
       Dim daPos As Integer
       
       Dim TransTableIN As String
       Dim TransTableOUT As String
       
       
       CheckLen = Len(Eingabe)                             [COLOR=#008000] 'Voraussetzung: 2 < Eingabelänge < 11[/COLOR]
       Select Case CheckLen
          Case 0                                           [COLOR=#008000] 'Es sei denn, die Eingabe ist leer,[/COLOR]
             Ausgabe = ""                                  [COLOR=#008000] ' ...dann gib auch leeren String zurück[/COLOR]
             doDaDecode = Ausgabe                    [COLOR=#008000]'Rückgabewert der Funktion[/COLOR]
             Exit Function                                 [COLOR=#ff0000] 'ABBRUCH[/COLOR]
          Case 1 To 2                                      [COLOR=#008000] 'Eingabe zu kurz[/COLOR]
             Ausgabe = "Eingabe zu kurz (3-10)!"
             doDaDecode = Ausgabe                    [COLOR=#008000]'Rückgabewert der Funktion[/COLOR]
             Exit Function                                  [COLOR=#ff0000]'ABBRUCH[/COLOR]
          Case 3 To 10                                     [COLOR=#008000] 'Eingabelänge OK[/COLOR]
             i = i                                         [COLOR=#008000] ' Dummy[/COLOR]
          Case Is > 10                                     [COLOR=#008000] 'Eingabe zu lang[/COLOR]
             Ausgabe = "Eingabe zu lang (3-10)!"
             doDaDecode = Ausgabe                    [COLOR=#008000]'Rückgabewert der Funktion[/COLOR]
             Exit Function                                 [COLOR=#ff0000] 'ABBRUCH[/COLOR]
          Case Else                                        [COLOR=#008000] 'alle anderen Fälle (sollte nicht vorkommen)[/COLOR]
             Ausgabe = "unbekannter Fehler!"
             doDaDecode = Ausgabe                    [COLOR=#008000]'Rückgabewert der Funktion[/COLOR]
             Exit Function                                 [COLOR=#ff0000] 'ABBRUCH[/COLOR]
       End Select
    
    
    
    [COLOR=#008000]   'Hier wird nur angekommen, wenn die Prüfungen oben erfolgreich waren
       '===================================================================[/COLOR]
       
       
       
    [COLOR=#008000]   ' "Übersetzungstabelle"[/COLOR]
       TransTableIN = "ABCDEFGHIJ"
       TransTableOUT = "1234567890"
          
       Eingabe = UCase(Eingabe)                 [COLOR=#008000]        'wandelt ggf. Kleinbuchstaben in Großbuchstaben um[/COLOR]
       Ausgabe = ""
          
                                                          
       For i = 1 To Len(Eingabe)                   [COLOR=#008000] 'Schleife über alle Zeichen der Eingabe[/COLOR]
          Buchstabe = Mid$(Eingabe, i, 1)        [COLOR=#008000]   'nächstes Zeichen des Eingabe-Strings[/COLOR]
          validChar = True                         [COLOR=#008000] 'initialisiere "Zeichen gültig" als "wahr"[/COLOR]
          daPos = InStr(1, TransTableIN, Buchstabe)[COLOR=#008000] 'Position des Zeichens in TransTableIN[/COLOR]
          If daPos = 0 Then                       [COLOR=#008000]  'wenn Zeichen nicht in TransTableIN vorkommt...[/COLOR]
             validChar = False                     [COLOR=#008000] ' ... Zeichen als ungültig kennzeichnen[/COLOR]
             Exit For                              [COLOR=#008000] ' ... und weitere String-Prüfung abbrechen[/COLOR]
          End If
          daCode = Mid$(TransTableOUT, daPos, 1)  [COLOR=#008000]  'entsprechende Position in TransTableOUT[/COLOR]
          Ausgabe = Ausgabe & daCode              [COLOR=#008000]  'schrittweiser Aufbau der Ausgabe[/COLOR]
       Next i
    
       
       If validChar = False Then                 [COLOR=#008000]   'Wenn zuvor ein ungültiges Zeichen erkannt wurde...[/COLOR]
          finalAusgabe = "ungültige(s) Zeichen!"  [COLOR=#008000]  ' ... Fehlermeldung für Ausgabe generieren[/COLOR]
       Else                                        [COLOR=#008000] 'Ansonsten...[/COLOR]
                                                    [COLOR=#008000]'... baue Komma an drittletzter Stelle ein[/COLOR]
          AusgabeMitKomma = Mid(Ausgabe, 1, Len(Ausgabe) - 2) & _
                            "," & _
                            Mid(Ausgabe, Len(Ausgabe) - 1, 2)
          finalAusgabe = AusgabeMitKomma
       End If
       
       
       
    [COLOR=#008000]   'Rückgabewert der Funktion[/COLOR]
       doDaDecode = finalAusgabe
          
       
    
    End Function
    
    
    


    So sieht's dann aus:

    20130802-1726_-_screenshot.001.png


    Wer will kann ja noch in Spalte B eine bedingte Formatierung einfügen à la "ist nicht numerisch" oder so, um getextete Fehlermeldungen farbig hervorzuheben.

    Wenn ich's jetzt mit dem Einfügen eines Anhangs richtig gemacht habe, hängt an diesem Posting die ganze Excel-Tabelle samt Makro als ZIP-Archiv dran.
     

    Anhänge:

    Zuletzt bearbeitet: 2. Aug. 2013
Die Seite wird geladen...

Excel Buchstabenkombination z.B. "ABC" durch Zahlenkombination z.B."1,2,3" ersetzen - Ähnliche Themen

Forum Datum
Excel-Feature gesucht Microsoft Office Suite 11. Okt. 2016
Excel Tabelle Werte zu ordnen Microsoft Office Suite 23. Sep. 2016
Excel: Bereiche auf 'leer' Überprüfen Microsoft Office Suite 15. Sep. 2016
Import Datensatz inkl = und - Zeichen in Excel/Libre CALC Software: Empfehlungen, Gesuche & Problemlösungen 20. Mai 2016
Bestimmter User kann seine Excel Dateien nicht mehr direkt öffnen Software: Empfehlungen, Gesuche & Problemlösungen 16. Apr. 2016