Excelを勉強しましょう EnjoyExcel

アイコンの機能や関数の説明、VBA初心者向けの勉強方法について情報掲載しています。関数、VBAともに理解が進むように出来るだけ事例を交えて説明しています。

Excelで英語のAからZまで書き出したい CHAR関数を使う

f:id:EnjoyExcel:20220212014423p:plain

Excelで英語のAからZまで書き出した CHAR関数を使う

 

問い合わせ

「関数を使ってAからZまで書き出したいんだけど・・・」出来ますか?という問い合わせがありました。この案件を解説してみようと思います。全部で記事は3つになります。

 

 

最初の記事はAからZまでを関数で用意してみました。残りの2つの記事ではAからZZまでをVBAを使って用意してみました。

解説

イメージですが数字みたいに簡単にアルファベットが並ぶのではないかと考えてる人はけっこう多いと思います。私も昔はそうでした。たとえばセルA1に1を書きます。

f:id:EnjoyExcel:20220212003351p:plain

セルの右下にカーソルを合わせてCtrlを押しながら下に引っ張るとセルには連番が入力されます。下の写真はひとまず10まで入力しました。

f:id:EnjoyExcel:20220212003309p:plain

ってことでセルA1にAって書いて同じことやったらB、C、D・・・と値が入るような気がするのですが入りません。なぜでしょうか??

 

文字なので特に計算で決まるものでもなく人が決めた決まりだから数字のような規則性がないという事に尽きるのですがとはいえエービーシーディー・・・みたいな歌もあるのでどっかでは決まってます。

 

どっかというのはASCIIという規格です。

American Standard Code For Infomation Interchange という英語の略らしく私はASCⅡ(最後の2はローマ数字)かと思ってましたがASCII(最後はIを2つ)らしいですね。

 

今は American National Standards Institute(略してANSI)という名前です。ANSIなら聞いたことある人も居るかもしれません。ざっくり覚えるならば規格の名前です。日本のJISみたいなもんですね。

 

文字コードって結構奥が深くてCSVを変換する時にも結構厄介なことが起こるのでしっかり勉強しないといけないのですが今回はここを掘り下げてもそんな成果はないのでやめます。

 

ひとまずASCIIコードの中ではアルファベットは連番で定義されてるんだなと思ってください。まず連番ですが我々は日常生活の中で10進数を使っています。その10進数で表現するところの65番目がASCIIコードだとAにあたります。

f:id:EnjoyExcel:20220212010258p:plain

上記のような並びになっています。これは決まりなので理屈は無いです。覚えてください。

これを表現できる関数があれば数字みたいに連続でアルファベットを並べることが出来ます。

CHAR関数について

今回は CHAR という関数を使います。

 

CHAR(文字コード に対応する番号)

 

具体的にはセルに =CHAR(65) と書けば A が出てくるわけですが数字のようにセルの右下をつかんで下方向に展開してもずっとAが表示されます。

f:id:EnjoyExcel:20220212011254p:plain

かっこの中の数字は進まないのでずっと同じ関数が入り値はずっとAです。これだと目的が達成されません。どうしましょうか。

 

他に数字を使えるところを探しましょう。

f:id:EnjoyExcel:20220212011905p:plain

こんな感じでアルファベットを表示させたいセルの横に数値を書いておいて参照するかたちで引数に使うという手もありますが数値を書いている列が1列余計ですよね。

 

よく見るとA列に並んでる数値のさらに左に数値が居ますね。・・・これ行番号です。使えるの??と思う方居ると思いますが実は使えます。

CHAR関数にROW関数を組み合わせる

これを使うにはROWという関数を使います。

 

ROW(行番号が知りたいセル)です。

 

()のようにかっこ内に何も書かないと関数を書いたセルの行数を返します。これを使いましょう。

 

セルA1に関数を書くとこのようになります。

=CHAR(64+ROW())

A1セルに出来た緑の枠の右下をつかんで下方向に展開すると相変わらず同じ関数になりますが表示はA、B、C、D・・・のように英語が並びます。ROW関数によってかっこ内の数値を進めることが出来る結果このような値を得ることが出来ます。

f:id:EnjoyExcel:20220212013354p:plain

これはかっこ内の数値は他セルに展開しても変わらないというのを逆手に取った書き方になりますね。

 

もう1つのポイントとしてはスタートのセルに書くCHAR関数のかっこ内の引数には書き込む数値と行の値を足して65にする様にしてください。

 

理由は先ほど説明したようにASCIIコードのAは10進数の65だからです。

まとめ

ちょっとテクニック的な要素も入ってますがゆっくり考えるとわかると思います。これがエクセルの楽しいところだと思います。

 

これで依頼者さんへの回答になったかなと思っていたのですがほんとは「AAみたいに2桁にしたい」って言うんですよ。

 

「最終的にはZZまで欲しい」って。欲張りなわけですよ。さ~どうしましょうか。

 

もちろん関数でも出来るのですがせっかくなのでVBAでやってみようと思います。配列を使う良い機会だと思いますので配列を交えてコードを書いてみようと思います。