Mówisz, że masz pewność, że Twoje słowa nie mają duplikatów. Aby dalej ją popychać, czy masz pewność, że pierwsze 8 znaków w dowolnym słowie będzie unikatowe?
Jeśli tak, możesz użyć poniższej formuły. Działa poprzez pojedyncze kodowanie ASCII każdego znaku - 40 [przy założeniu normalnych znaków, to umieszcza liczby pomiędzy 8 & 57, a literami pomiędzy 57 & 122] i mnożenie tego kodu znaków przez 10^[umieszczenie cyfry znaku w słowie ]. Zasadniczo trwa to kod znaku [-40] i łączy każdy kod z następnym.
EDIT Należy pamiętać, że kod ten nie wymaga, aby co najmniej 8 znaków istnieć w swoim słowie, aby zapobiec błąd, jak rzeczywiste słowo do zakodowania ma 8 „0” jest dołączana do niego.
=TEXT(SUM((CODE(MID(LOWER(RIGHT(REPT("0",8)&A3,8)),{1,2,3,4,5,6,7,8},1))-40)*10^{0,2,4,6,8,10,12,14}),"#")
Zauważ, że ponieważ używa wartości ASCII znaków, identyfikator # mogłyby zostać wykorzystane w celu identyfikacji bezpośrednio - to naprawdę nie tworzyć anonimowość, to po prostu zamienia 8 unikalnych znaków w unikalnym numerem. Jest obfuskany za pomocą -40, ale w rzeczywistości nie jest tak naprawdę "bezpieczny". -40 służy do uzyskania normalnych liter i cyfr w 2-cyfrowym zakresie, aby pomnożenie przez 10^0,2,4 itd. Stworzyło dwucyfrowy unikatowy dodatek do stworzonego kodu.
edycji do alternatywnej metody
miałem wcześniej próbował to zrobić tak, że będzie patrzeć na każdą literę alfabetu, policzyć ile razy pojawia się w słowie, a następnie pomnożyć przez 10, * [pozycja tej litery w alfabecie]. Problem z wykonaniem tego (patrz komentarz poniżej dla formuły) polega na tym, że wymagało to liczby 10^26-1, co wykracza poza dokładność zmiennoprzecinkową Excela. Mam jednak zmodyfikowaną wersję tej metody:
Ograniczając liczbę dozwolonych znaków w alfabecie, możemy uzyskać maksymalną całkowitą wielkość do 10^15-1, którą program Excel może poprawnie obliczyć.Wzór wygląda następująco:
=RIGHT(REPT("0",15)&TEXT(SUM(LEN(A3)*10^{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}-LEN(SUBSTITUTE(A3,MID(Alphabet,{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},1),""))*10^{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}),"#"),15)
[w prawo („00000000000000” ... część wzoru jest przeznaczona do utrzymania wszystkich kodów taką samą liczbę znaków]
Zauważ, że tu jest alfabet nazwany ciąg, który zawiera znaki: "abcdehilmnorstu" .Na przykład, używając powyższej formuły, słowo "asdf" zlicza wystąpienia a, s i d, ale nie "f", którego nie ma w moim zakontraktowanym alfabecie. Kod "asdf" będzie:
Działa to wyłącznie z następującymi założeniami:
Litery niewymienione (ani cyfry/znaki specjalne) nie są wymagane, aby każde imię było niepowtarzalne. Na przykład asdf & asd będzie miał taki sam kod w powyższej metodzie.
I
Kolejność liter nie jest wymagane, aby każda nazwa unikalna. Na przykład asd & dsa miałby ten sam kod w powyższej metodzie.
Jakieś wymagania dotyczące długości lub znaków używanych w identyfikatorze? – Excellll