Clever-Excel-Forum

Normale Version: [LAMBDA] RECODE.2.5
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
RECODE.2.5

Beschreibung:
Kodiert je ein Zeichenpaar eines Strings (aus 224 Zeichen von 32-255) in 5 Ziffern 1-9 plus Leerzeichen oder zurück

Syntax:
=RECODE.2.5(Text;kodieren)

Beispiel:
=RECODE.2.5("Das ist umzukodieren";1) ergibt: 23243 38558 35592 38837 39312 41795 36245 33996 34385 34381
=RECODE.2.5("23243 38558 35592 38837 39312 41795 36245 33996 34385 34381";0) ergibt: Das ist umzukodieren

Code:
=LAMBDA(Code;Recode;WENN(Recode;
LET(x;Code&" ";TEXTVERKETTEN(" ";;BASIS(
(CODE(TEIL(x;SEQUENZ(LÄNGE(x)/2)*2-1;1))-32)*224+
(CODE(TEIL(x;SEQUENZ(LÄNGE(x)/2)*2-0;1))-32);9)+11111));
LET(y;Code;z;DEZIMAL(TEIL(y;SEQUENZ(LÄNGE(y&" ")/6;;1;6);5)-11111;9);
TEXTVERKETTEN(;;ZEICHEN(z/224+32)&ZEICHEN(REST(z;224)+32)))))


Anmerkungen:
Ich habe die relativ "teure" Umkodierung von je 2 (aus 224) Zeichen in mit Leerzeichen getrennte 5stellige Zahlen ohne enthaltene Null (also 9 Zeichen) gewählt, damit sie in einem festen Rhythmus auch mündlich durchgegeben werden könnten. Eine günstigere Möglichkeit wäre die Umwandlung von je 3 Ursprungszeichen in 4 Zeichen aus 58, also 0-9, A-X und a-x.

Die spezielle Bezeichnung .2.5 lässt Raum für ein beliebiges RECODE, welches z.B. selbstoptimierend aus ZEICHEN(32-255)-Text einen aus den Zeichen "ABC2854XYZ1093" baut.

Auch in Verbindung mit CRYPT sinnvoll, da CRYPT von selbst aus 224 in 224 Zeichen hineinschlüsselt - mündlich schwierig, insb. die Mitteilung von CRYPT-ENTschlüsselten Bereichen wie ={1."";"Aha".567}.
Moin,

so als Feedback von mir: schöne Funktion.

Gruß
Danke schön. Ist jetzt nicht höchste Mathematik ... aber Recoding ist im Zusammenhang mit Crypting ganz sinnvoll.

Ein RECODE.2.1 könnte z.B. aus Nur-Zahlen (einzeln oder als Range) einen 225-Zeichensatz wiedergeben (31-255) - sparsames Versenden, weil aus 2 Zeichen genau 1 wird! 

15^2 = 225

Als 15 Zeichen wären absolut minimal notwendig folgende: 
  • 0-9
  • Dezimal-Komma
  • Minus
  • Anführungszeichen (für Leerzellen)
  • Zeilentrenner (Semikolon)
  • Spaltentrenner (Punkt) 

Also für wirklich nur Zahlen im Range.

Die 3 restlichen Zeichen für ein Array, nämlich = { }, kommen je nur einmal vor, und könnten daher durch das RECODE vervollständigt werden.