VBAプログラミングについて教えてください
a→1、b→2、c→3、……というふうに読んで、例えば
a 1
f 6
h 8
g 7
e 5
b 2
f 6
c 3
d 4
a 1
エクセル上に左のアルファベットの列が与えられていて、それを
右のように対応した数字の列を横に書き表したいです。
初心者でして、わかりそうでわかりませんでした。
教えてください。お願いします。
回答(4件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
No.4ベストアンサー10pt
Sub test01()
d = Range("A65536").End(xlUp).Row
For i = 1 To d
Cells(i, "B") = Asc(Cells(i, "A")) - 96
Next
End Sub
既出回答にモご指摘の通り
ほんとにA列は
アルファベットで、小文字のa、b、c・・が入っていること
それ以外の文字は入ってないこと
1文字であること
などに限り上記コードは有効です。
ーー
普通のニーズではこういう例はほとんど無いと思いますので、質問の
説明の例がまずいのではと思います。
ーー
VLOOKUP関数を使う例では
例えばF1:G5に
東京 1
名古屋 2
大阪 3
神戸 4
福岡 5
と作って
Sub test02()
d = Range("A65536").End(xlUp).Row
For i = 1 To d
Cells(i, "B") = WorksheetFunction.VLookup(Cells(i, "A"), Range("F1:G5"), 2, False)
Next
End Sub
ーー
例データ
A列 B列(結果)
名古屋2
神戸4
東京1
ーー
検索表 F1:G5
東京1
名古屋2
大阪3
神戸4
福岡5
この回答へのお礼
ほんとうはabc…ではありません。説明が悪かったです。
しかし、内部コードの勉強もできてよかったです。
VLookupのプログラムまで書いてくださってありがとうございました。
参考にします
No.3ベストアンサー20pt
kokoichikoさんが学生さんで、
情報処理の基礎を学ばれて、内部コードが何たるかを理解されていて、
先生が内部コードの規則性を考えて貰うための問題であるのなら、
#1さん、#2さんの回答で大正解なんですが、
社会人で実務でエクセルを使おうとしている方でしたら、
はて、初心者と言われている方に内部codeの意味が分かるのかな?
-96 の意味が分かるのかな?
a→1、b→2、c→3、……は単なる例であって
本当は
りんご→100円、みかん→30円、バナナ→80円・・・
では無いのかな?と思うのは考え過ぎなのかな?
いやいや、初心者だから
りんご→100円、みかん→30円、バナナ→80円・・・を
a→1、b→2、c→3、……と例えることはできない。
の考えもあり得るな、、、うぅむ!
もっと応用的な実社会でも使えるような質問の意味合いがあるような気がします。
と勝手に問題をすり替えて、勝手に割り込んでしまいます。
問題をそのまま回答例にします。
a→1、b→2、c→3、……を少し離れた所にテーブルを作ります。
D1セルにa E1セルに1
D2セルにb E2セルに2
D3セルにc E3セルに3
D4セルにd E4セルに4
・
・
D26セルにz E26セルに26
とテーブルを作っておきます。
で、B1セルに、=VLOOKUP(A1,$D$1:$E$26,2,FALSE)
B列を下へコピー
これはエラー処理をしていませんので、エラー処理を入れるなら、
=IF(COUNTIF($D$1:$E$26,A1)=0,"",VLOOKUP(A1,$D$1:$E$26,2,FALSE))
B列を下へコピー
余計なお世話でした。
この回答へのお礼
tinu2000さんの余計なお世話のおがげで理解することができました。
VLOOKUPは便利ですね。どうもありがとうございました。
#1さんに補足すると
例えばアルファベットの列が100行ある場合は
最初に、B1に"=CODE(A1)-96"を書いておいてから
B1をctrl-Cして
B2からB100までを範囲指定してctrl-Vすると
100行分一気に記入できます。
簡単ですが、例です。
A列にアルファベット(小文字)を書き、B列に指定の数値に置き換えるとすると、B列に「=CODE(A1)-96」を書けばOKです。
勿論行数が増えるにしたがって、=CODE(A2)-96、=CODE(A3)-96・・と変わる事をお忘れなく。
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











