Vanity-Nummern aus Namen ermitteln

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Niels
*****
Beiträge: 212
Registriert: Mi, 16.06.2004 06:46
Wohnort: Heikendorf

Vanity-Nummern aus Namen ermitteln

Beitrag 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
Wer lesen kann ist klar im Vorteil.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Vanity-Nummern aus Namen ermitteln

Beitrag 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
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Vanity-Nummern aus Namen ermitteln

Beitrag von Karolus »

LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Niels
*****
Beiträge: 212
Registriert: Mi, 16.06.2004 06:46
Wohnort: Heikendorf

Re: Vanity-Nummern aus Namen ermitteln

Beitrag 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
Wer lesen kann ist klar im Vorteil.
bst
*****
Beiträge: 222
Registriert: Mo, 18.01.2010 16:14
Wohnort: Ilsfeld

Re: Vanity-Nummern aus Namen ermitteln

Beitrag 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
Antworten