Seite 1 von 1

Vanity-Nummern aus Namen ermitteln

Verfasst: Di, 23.10.2012 06:51
von Niels
Hallo zusammen,

ich möchte aus einem Namen eine Vanity-Nummer bauen. Dazu werden die Buchstaben des Namens (z.B. die ersten 3) in Zahlen entspr. der Buchstaben auf der Telefontastatur umgewandelt. Das ergibt dann:
2: ABC
3: DEF
4: GHI
5: JKL
6: MNO
7: PQRS
8: TUV
9: WXYZ
Ich habe da mal eine Formel für die 1. Stelle gebastelt:

Code: Alles auswählen

=WENN(UND(CODE(GROSS(A1))>64;CODE(GROSS(A1))<80);GANZZAHL((CODE(GROSS(A1))-59)/3);WENN(UND(CODE(GROSS(A1))>79;CODE(GROSS(A1))<84);7;WENN(UND(CODE(GROSS(A1))>83;CODE(GROSS(A1))<87);8;WENN(UND(CODE(GROSS(A1))>86;CODE(GROSS(A1))<91);9;"?"))))
Doch will ich nun z.B. 3 Stellen abbilden, dann ist die Formel mehr als 3x so lang :shock:
Ich könnte auch über eine Hilfstabelle mit SVERWEIS arbeiten, aber so richtig überzeugt mich das auch nicht. Hat da jemand eine elegantere Idee?

Code: Alles auswählen

=SVERWEIS(GROSS(TEIL(A1;1;1));'Vanity-Hilfstabelle'.A1:B26;2)&SVERWEIS(GROSS(TEIL(A1;2;1));'Vanity-Hilfstabelle'.A1:B26;2)&SVERWEIS(GROSS(TEIL(A1;3;1));'Vanity-Hilfstabelle'.A1:B26;2)
Niels

Re: Vanity-Nummern aus Namen ermitteln

Verfasst: Di, 23.10.2012 07:54
von Stephan
z.B. benutze eine benutzerdefinierte Funktion:

Code: Alles auswählen

Function Vanity(x)
  Vanity = ""
  For i = 1 To 3
    tmp = Left(x, i)
    tmp2 = Right(tmp, 1)
    Select Case UCASE(tmp2)
      Case "A", "B", "C"
        tmp3 = 2
      Case "D", "E", "F"
        tmp3 = 3
      Case "G", "H", "I"
        tmp3 = 4
      Case "J", "K", "L"
        tmp3 = 5
      Case "M", "N", "O"
        tmp3 = 6
      Case "P", "Q", "R", "S"
        tmp3 = 7
      Case "T", "U", "V"
        tmp3 = 8
      Case "W", "X", "Y", "Z"
        tmp3 = 9
    End Select
    Vanity = Vanity & tmp3
  Next i
  'Vanity = VAL(Vanity) 'Falls ZahlenWERT gewünscht
End Function

aufrufen in der Zelle mittels:

=Vanity(A1)



Gruß
Stephan

Re: Vanity-Nummern aus Namen ermitteln

Verfasst: Di, 23.10.2012 09:25
von Karolus

Re: Vanity-Nummern aus Namen ermitteln

Verfasst: Di, 23.10.2012 10:28
von Niels
Oho, Funktionen :!:
Da habe ich mich bislang ja noch nicht ran getraut, aber das sieht ja recht vertraut aus. Da werde ich doch mal einen Schritt weiter mit OOO gehen.

ich danke Euch
Niels

Re: Vanity-Nummern aus Namen ermitteln

Verfasst: Di, 23.10.2012 10:33
von bst
Auch Hallo,

oder auch so:

Code: Alles auswählen

Option Explicit

Function Vanity(ByVal sName As String) As String
   Dim aNums, i As Long, sChar As String, sResult As String
   
   aNums = Array(2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9)
   
   For i = 1 To Len(sName)
      sChar = LCase(Mid(sName, i, 1))
      If sChar Like "[a-z]" Then
         sResult = sResult & aNums(Asc(sChar) - Asc("a"))
      Else
         sResult = sResult & "-"
      End If
   Next
   Vanity = sResult
End Function

Sub TestIt()
   Print Vanity("0ABCdefghijklmnopqrstuvwXYZ1")
End Sub
cu, Bernd