新しく質問する

VBAプログラミングについて教えてください

役に立った:0件
  • 質問者:kokoichiko
  • 投稿日時:2008/08/24 00:28
  • 困り度:困ってます
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

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
エクセル上に左のアルファベットの列が与えられていて、それを
右のように対応した数字の列を横に書き表したいです。
初心者でして、わかりそうでわかりませんでした。
教えてください。お願いします。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:0件)
  • 参考になった:0件

No.4ベストアンサー10pt

  • 回答者:imogasi
  • 回答日時:2008/08/24 11:20

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のプログラムまで書いてくださってありがとうございました。
参考にします

  • 参考になった:0件

No.3ベストアンサー20pt

  • 回答者:tinu2000
  • 回答日時:2008/08/24 10:21

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は便利ですね。どうもありがとうございました。

  • 参考になった:0件
  • 回答者:midly
  • 回答日時:2008/08/24 02:25

#1さんに補足すると
例えばアルファベットの列が100行ある場合は
最初に、B1に"=CODE(A1)-96"を書いておいてから
B1をctrl-Cして
B2からB100までを範囲指定してctrl-Vすると
100行分一気に記入できます。

通報する

  • 参考になった:0件
  • 回答者:t-sazen
  • 回答日時:2008/08/24 01:18

簡単ですが、例です。
A列にアルファベット(小文字)を書き、B列に指定の数値に置き換えるとすると、B列に「=CODE(A1)-96」を書けばOKです。
勿論行数が増えるにしたがって、=CODE(A2)-96、=CODE(A3)-96・・と変わる事をお忘れなく。

通報する

  
このQ&Aは役に立ちましたか?(役に立った:0件)

このページのトップへ

Facebook公式ページ

公式Twitter