プロが教えるわが家の防犯対策術!

エクセルで文字→数字変換を行いたいのですが、
どのようにすればよいでしょうか?

(やりたい例)
あるセルの特定文字列位置の文字を数字に変換したい。
文字列先頭から4番目の文字を元に数値に変換する。
Aだと1と変換、Bだと2と変換、Cだと3と変換…
A1:xxxBxxxx
B1:2

うまく質問が表現できなくてすいません。
実現方法はVBAでも結構です(使ったことはありませんが)。

A 回答 (5件)

◆こんな方法はいかがでしょうか


=COLUMN(INDIRECT(MID(A1,4,1)&1))
    • good
    • 0

こんにちは。



任意の文字に対して数値に変換する場合は、表を用意してください。

$H$1:$I$10
--------------
 a  1
 b  2
 c  3
 d  4
 e  5
 f  6
 g  7
 h  8
 i  9
 j  10

B1 ~
=IF(AND(LEN(A1)>3,COUNTIF($H$1:$H$10,MID(A1,4,1))),VLOOKUP(MID(A1,4,1),$H$1:$I$10,2,FALSE),"")

なお、これには、大文字・小文字の区別はありません。
    • good
    • 0

#2です。

別回答
=FIND(ASC(MID(A1,4,1)),"ABCDEFGHIJKLMNOPQRSTUVWXYZ")
FIND関数で4文字目が後の文字の何番目かを表示です。
A~Z以外の場合はエラー(#VALUE!)になります。

追記
a~zも対象にするならUPPER関数で小文字→大文字変換してください。
    • good
    • 0

ここまでする必要があるか分かりませんが...


B1=MOD(MIN(MAX(CODE(ASC(MID(A1,4,1)))-64,0),27),27)

MID関数で4番目の文字を抽出
ASC関数で半角に統一
CODE関数でキャラクターコードに変換 A=65,B=66,Z=90
64を引いてA=1,B=2,Z=26
MAX関数でAより前の文字を0に統一
MIN関数でZより後の文字を27に統一
MOD関数で27を0に変更
これでA~Zが1~26、それ以外は0になります。
    • good
    • 0

無理やりですが次の方法は如何でしょうか。


"A"の内部コードを64としてその差分を数値として抽出しています。
=CODE(MID(A1,4,1))-64
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!