列を表す英文字を列番号に変換
記事「列番号を 英文字に変換してRangeプロパティに使う 」
では、列番号を英文字に変換しました。
今回は、その逆で
英文字を列番号に変換します。
仕組みは、
10進数を2進数に変換する要領です。
Sub macro100309a() |
変換後の列番号をMsgBoxで表示する。
アルファベットは26文字なので26進数になります。
Aが1、Bが2、Cが3、…、Zが26になるのは簡単に分かります。
"CD"を番号にする場合を説明します。
Cは3、Dは4です。
Cは2桁目なので、3 * 26^1= 78
Dは1桁目なので、4 * 26 ^ 0 = 4
78 + 4 = 82
よって、英文字"CD"は、列番号82になります。
アルファベットを数字に変換するのに
Asc関数を使います。
Asc("A") = 65
Asc("B") = 66
…
Asc("Z") = 90
Asc関数は以上のようにAからZまでで、
65から90までの数字を返します。(大文字で)
Aを1に変換するには
Asc("A") - 64 = 1
のように64を引きます。
他のアルファベットも同様です。
このアルファベットを変換した数字を使って
26進数である英文字を上で説明したように
10進数に変換します。
コードの中に出てくる関数の説明はVBAヘルプにあります。
| 固定リンク
この記事へのコメントは終了しました。

コメント