Konvertieren Sie numerische Zeichen in alphabetische Zeichen

7

Ich versuche, I / O wie folgt zu erhalten:

  

Eingabe: 123490
  Ausgabe: BCDEJA

Logik ist einfach:

wenn
strarr(i)=0,1,2,3,4,5,6,7,8,9
  dann
strarr(i) should be = A,B,C,D,E,F,G,H,I,J

Code

%Vor%

Kann mir jemand helfen, wo ich falsch liege?

    
Mr Miyagi 19.09.2015, 10:36
quelle

5 Antworten

10

Verwenden Sie die ASCII-Zeichennummern (...?) und passen Sie sie an die zu konvertierenden Zahlen an. Ein Capitol A ist ASCII 0 × 41 oder 65 dez.

%Vor%

Verwenden Sie wie jede native Arbeitsblattfunktion. In D18 als,

%Vor%

    
Jeeped 19.09.2015, 11:11
quelle
4

Ich mochte Jeepeds Antwort.

Die unten stehende Version arbeitet mit einigen Verbesserungen, um mit der Geschwindigkeit zu spielen:

  • Mid als LHS-Operator (als Verkettung in VBA ist langsamer)
  • Verwendung von Mid$ und ChrW$

Bei meinen Tests verringerte sich die Laufzeit um ~ 40% (siehe Änderungen unten)

%Vor%

BEARBEITEN: Fügen Sie Tests hinzu

  1. 3,21 Sekunden für den ursprünglichen Code
  2. 1,98 Sekunden für den zweiten Code

Abgleich auf hoher Ebene

  • Die Verwendung von Mid$ im ersten Code anstelle von Mid führte zu einem Code von 3,21 bis 2,77 Sekunden.
  • Die Verwendung von ChrW$ anstelle von Chr hat es von 2,77 Sekunden auf 2,43 Sekunden gebracht.
  • Die Verwendung von Mid $ auf der LHS brachte es auf 1,98 Sekunden

vorheriger Code

%Vor%

neuer Code

%Vor%

Testzeit

%Vor%     
brettdj 20.09.2015 10:36
quelle
3

Wie Jeeped sagte, können Sie die Chr -Funktion verwenden, um eine Zahl in einen Buchstaben zu konvertieren, indem Sie ASCII verwenden.

Eine andere Anmerkung, wenn ich mit einer einzelnen Variablen arbeite, die mehrere Werte haben kann, anstatt so viel if 's zu verwenden, würde ich vorschlagen, ein case select Modell zu verwenden, strarr(i) als Controller zu verwenden Code und wäre viel besser lesbar.

Anstatt die verschiedenen Werte in Zellen zu schreiben, hätte ich auch eine temporäre Variable verwendet, um den aggregierten Wert zu speichern, weniger Aufwand für Sie und ein bisschen schneller, da Sie das Blatt nicht lesen / schreiben, sondern Sie arbeite einfach im Hintergrund

    
Avishay Cohen 19.09.2015 11:09
quelle
2
%Vor%     
Ashwith Ullal 19.09.2015 11:58
quelle
2

Damit sollten Sie beginnen:

%Vor%

Bitte beachten Sie, dass der Wert von '65' für Großbuchstaben A steht, Kleinbuchstaben beginnen bei '97

    
Robert J. 19.09.2015 11:10
quelle

Tags und Links