Hallo Albert,
ich habe mich auch mal mit dem Thema beschäftigt und dann "DANK DES FORUMS" diese Funktion geschrieben.
Diese habe ich nun als Add-Inn immer in allen Exceltabellen integriert.
Function Check_Vorname(tarC As Range) As String
Dim errArr() As Variant
Dim WArr() As Variant
Dim MArr() As Variant
Dim UArr() As Variant
Dim i As Integer
Dim w As Integer
Dim m As Integer
Dim e As Integer
w = 0
'Falsche Zeichen im Vornamen
errArr = Array(" und", "&", ".", ",", ";", "!", "?", "+", "*", "#", "/", "1", "2", "3", "4", "5" _
_
, "6", "7", "8", "9", "0", "%", "§")
For i = 0 To UBound(errArr)
If InStr(1, tarC, errArr(i)) > 0 Then
Check_Vorname = "Unzulässiges Zeichen"
Exit Function
End If
Next i
' Unicode Vornamen können männlich oder weiblich sein
UArr = Array("Alexis", "Auguste", "Carol", "Cato", "Chris", "Conny", "Dominique", "Edi", "Eike", _
_
"Elisa", "Folke", "Gabriele", "Gerrit", "Gerti", "Heilwig", "Jamie", "Jean", "Jona", "Kay", " _
Kersten", "Kim", "Laurence", "Leslie", "Maris", "Maxime", "Nicky", "Nicola", "Nikola", "Patrice", "Sandy", "Sanja", "Sascha", "Toni", "Vivien", "Winnie", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z")
For i = 0 To UBound(UArr)
If tarC = UArr(i) Then
Check_Vorname = "Nicht zuzuordnen"
Exit Function
End If
Next i
' Vorname enthält weibliche Merkmale
WArr = Array("a", "e", "i", "n", "y")
For i = 0 To UBound(WArr)
If Right$(tarC, 1) = WArr(i) Then
w = w + 1
End If
Next i
WArr = Array("ah", "al", "bs", "dl", "el", "et", "id", "il", "it", "ll", "th", "ud", "uk")
For i = 0 To UBound(WArr)
If Right$(tarC, 2) = WArr(i) Then
w = w + 1
End If
Next i
WArr = Array("ary", "aut", "bel", "des", "dis", "een", "efa", "eig", "ett", "fer", "got", "ies", _
_
"ild", "ind", "itt", "jam", "joy", "Joy", "Kim", "lar", "len", "lis", "men", "mor", "oan", " _
ren", "res", "rix", "san", "tas", "udy", "urg", "vig")
For i = 0 To UBound(WArr)
If Right$(tarC, 3) = WArr(i) Then
w = w + 1
End If
Next i
WArr = Array("ardi", "atie", "borg", "cole", "endy", "gard", "gart", "gnes", "gund", "iede", " _
_
indy", "Ines", "Iris", "iris", "ison", "istl", "ldie", "lilo", "Lilo", "loni", "lott", "lynn", " _
mber", "Moni", "nken", "oldy", "quel", "riam", "rien", "sann", "smin", "ster", "uste", "vian", "vien")
For i = 0 To UBound(WArr)
If Right$(tarC, 4) = WArr(i) Then
w = w + 1
End If
Next i
WArr = Array("achel", "agmar", "Almut", "becca", "Candy", "Doris", "echen", "edwig", "Irene", " _
_
Mandy", "rauke", "sandy", "sther", "uriel", "velin", "ybill")
For i = 0 To UBound(WArr)
If Right$(tarC, 5) = WArr(i) Then
w = w + 1
End If
Next
WArr = Array("irsten", "Lilian", "Almuth")
For i = 0 To UBound(WArr)
If Right$(tarC, 6) = WArr(i) Then
w = w + 1
End If
Next
' Vorname enthält männliche Merkmale
MArr = Array("ai", "an", "ay", "dy", "en", "ey", "fa", "gi", "hn", "iy", "ki", "nn", "oy", "pe", _
_
"ri", "ry", "ua", "uy", "ve", "we", "zy")
For i = 0 To UBound(MArr)
If InStr(1, Right$(tarC, 2), MArr(i)) > 0 Then
m = m + 1
End If
Next
MArr = Array("ael", "ali", "aid", "ain", "are", "bal", "bby", "bin", "cal", "cca", "cel", "cil", _
_
"cin", "dal", "die", "don", "dre", "ede", "eil", "eit", "emy", "eon", "ffer", "gon", "gun", " _
hal", "hel", "hil", "hka", "iel", "ill", "ini", "kie", "lge", "lon", "lte", "lja", "mal", "met", "mil", "min", "mon", "mre", "mud", "muk", "nid", "nsi", "oah", "obi", "oel", "örn", "ole", "oni", "oly", "phe", "pit", "rcy", "rdi", "rel", "rge", "rka", "ron", "rne", "rre", "rti", "sil", "son", "sse", "ste", "tie", "ton", "uce", "udi", "uel", "uli", "uke", "vel", "vid", "vin", "wel", "win", "xei", "xel")
For i = 0 To UBound(MArr)
If InStr(1, Right$(tarC, 3), MArr(i)) > 0 Then
m = m + 1
End If
Next
MArr = Array("abel", "akim", "asan", "atti", "dres", "eith", "elin", "ence", "ffer", "frid", " _
_
gary", "gene", "hane", "hein", "idel", "iete", "irin", "jona", "kita", "kola", "lion", "levi", " _
luka", "mike", "muth", "naud", "neth", "nnie", "ntin", "nuth", "ommy", "önke", "ören", "pete", "rene", "ries", "rlin", "rome", "rtin", "stas", "tell", "tila", "tony", "tore", "uele")
For i = 0 To UBound(MArr)
If InStr(1, Right$(tarC, 4), MArr(i)) > 0 Then
m = m + 1
End If
Next
MArr = Array("astel", "benny", "billy", "billi", "elice", "ianni", "laude", "danny", "dolin", " _
_
ormen", "ronny", "seyin", "ustel", "ustin", "vanni", "willi", "willy")
For i = 0 To UBound(MArr)
If InStr(1, Right$(tarC, 5), MArr(i)) > 0 Then
m = m + 1
End If
Next
MArr = Array("jascha", "squale", "tienne", "vester")
For i = 0 To UBound(MArr)
If InStr(1, Right$(tarC, 6), MArr(i)) > 0 Then
m = m + 1
End If
Next
e = w - m
If e > 0 Then Check_Vorname = "weiblich"
If e = 0 Then Check_Vorname = "männlich"
End Function
Jetzt brauchst du nur noch =Check_Vorname(a1) in die Zelle b1 eingeben und das Ergebnis wird angezeigt.
Es es gibt natürlich eine kleine Fehlerquote wie bei allen Vornamensanalysen.
Aber es trifft bei einer Datenbank von ca. 10.000 Deutschen Vornamen 99,5 %.
Viel Erfolg
Gruß Alfred