2011-08-18 3 views
2

Je suis en train de convertir le texte suivant à un nombre décimal dans Excel 2003:Conversion des caractères de fraction unicode (fractions vulgaires) à décimales dans Excel 2003

« 93⅛ »

La sortie devrait être: 93,125

J'ai eu à travailler avec ce ¼, ½, ¾ en utilisant la fonction Remplacer dans VBA: par exemple, cela fonctionne:

cur_cell = Replace(cur_cell, "½", " 1/2") 

Howeve r, les caractères ⅛ et de la famille ne sont pas pris en charge dans l'éditeur VBA. Ils affichent comme ??. Au lieu de cela, j'ai essayé de remplacer directement la valeur unicode:

cur_cell = Replace(cur_cell, " & ChrW$(&H215B) & ", " 1/8") 

Mais cela ne fonctionne pas.

Existe-t-il un bon moyen de convertir ces chaînes en nombres que je peux utiliser?

Répondre

4

La syntaxe correcte est:

cur_cell = Replace(cur_cell, ChrW$(&H215B), " 1/8") 

Votre exemple a dit: remplacer la chaîne constituée d'un espace, une esperluette, un espace [etc.] avec 1/8. Clairement, ce n'est pas ce que vous voulez faire!

Je recommande vraiment:

cur_cell.Value = Replace(Replace(cur_cell.Value, ChrW$(&H215B), ".125")," ","") 

de contourner le remplacement automatique des fractions d'Excel. Je n'aime pas me fier à ce genre de choses automatiques. Pourquoi ne pas l'écrire comme un nombre décimal directement? De plus, j'aime me référer explicitement à la propriété .Value de la cellule plutôt que de la considérer comme la propriété par défaut.

+0

Cela a fonctionné. Citant le ChrW() dans mon exemple original était mon erreur. – spike

+1

Je suis totalement d'accord - Explicit est génial. Belle solution! +1 – aevanko

Questions connexes