エクセルのCHAR&ROW関数でAからZのアルファベットを並べる

アルファベットの連続データ入力はCHAR&ROW関数

AからZまでの文字を関数を使って並べてみようという記事です。結論から書きますと「出来ます」。

CHAR関数にROW関数を組み合わせる事でAからZの並びを作ることが出来ます。

その後はAAからZZまでの文字列を用意するのですがここからはVBAで作業する事にします。

理由は「VBAの方が簡単だから」です。次回の記事で解説していきます。

EnjoyExcel
EnjoyExcel

今回の記事では関数でAからZの値を並べる事を考えていきましょう。

先に結論が知りたい方はこちら

シリーズの構成

今回課題を解決させる為に記事を3つ用意しました。

最初の記事はAからZまでを関数で用意しています。

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

問い合わせをいただきました

関数を使ってアルファベットのAからZまで書き出したいんだけど・・・」出来ますか?

という問い合わせがありました。

理由はある程度想像がついています。AからZの値を並べる時にオートフィルが使えないんですよ。

Aと書いたらB、C、D・・・と続くと思うのですがそうはいかないみたいです。

ではどうするのか。以下関数で対応可能です。

今回使う関数を紹介
  • CHAR関数
  • ROW関数

以降でどうやって値を用意するのか解説していきます。

質問内容を再現してみる

まずはAからZの英文字を用意してみましょう。

イメージですが数字みたいに簡単にアルファベットが並ぶのではないかと考えてる人は多いです。

私も昔はそうでした。たとえばセルA1に1を書きます。

セルの右下にカーソルを合わせてCtrlを押しながら下に引っ張ってみます。オートフィルの事です。

セルには連番が入力されます。下の写真はひとまず10まで入力しました。

という事でセルA1にAを入力して書いて同じことやってみましょう。

B、C、D・・・と値が入るような気がするのですが入りません。なぜでしょうか??

一般的にはAの次はBですが・・・

理由は文字のA~Zの並びは人が決めた決まりだからです。

1の次の整数は2のように規則性がないという事に尽きます。

しかしエービーシーディー・・・みたいな歌もあるのでどこかでは決まりがあるはずです。

文字コードは規格内で決まっています

どこかというのはASCIIという規格です。読みは「アスキー」です。

American Standard Code For Infomation Interchange という英語の様です。

私はASCⅡ(最後の2はローマ数字)かと思ってましたがASCII(最後はIを2つ)らしいですね。

今は American National Standards Institute(略してANSI)という名前です。

ANSIなら聞いたことある人も居るかもしれません。

読み方は分からないのですが「アンシー」と呼んでる人は何人か居ましたね。

ざっくり覚えるならば規格の名前です。日本のJISみたいなものです。

文字コードは結構奥が深いです。しかし今回はここを掘り下げても成果はないのでやめます。

話をASCIIコードに戻します。

ひとまずASCIIコードの中ではアルファベットは連番で定義されてるんだなと思ってください。

まず連番ですが我々は日常生活の中で10進数を使っています。

その10進数で表現するところの65番目がASCIIコードだとAにあたります。

文字コードのリスト

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

10進数ASCII10進数ASCII
65A78N
66B79O
67C80P
68D81Q
69E82R
70F83S
71G84T
72H85U
73I86V
74J87W
75K88X
76L89Y
77M90Z
ASCIIコード(アスキーコード)と呼びます。「アスキーコードの77はM」という使い方です。

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

CHAR関数

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

CHAR関数の式

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

具体的にはセルに =CHAR(65) と書けば A が出てきます。

その後数字のようにセルの右下をつかんで下方向に展開してもずっとAが表示されます。

かっこの中の数字は進まないのでずっと同じ関数が入り値はずっとAです。

これだと目的が達成されません。どうしましょうか。

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

こんな感じでアルファベットを表示させたいセルの横に数値を書いてみます。

参照するかたちで引数に使うという手もありますが数値を書いている列が1列余計ですよね。

よく見るとA列に並んでる数値のさらに左に数値が居ますね。

・・・これ行番号です。使えるの??と思う方居ると思いますが実は使えます。

ROW関数

ここで冒頭で紹介したROW関数が登場します。

ROW関数の式

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

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

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

CHAR関数単体ではかっこ内の数値を変えられないのでROW関数に手伝ってもらいましょう。

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

CHAR関数とROW関数を組み合わせた式

=CHAR(64+ROW())

A1セルに出来た緑の枠の右下をつかんで下方向に展開(オートフィル)します。

相変わらず同じ関数になりますが表示はA、B、C、D・・・のように英語が並びます。

ROW関数の戻り値によってこのような値を得ることが出来ます。

行番号も関数の引数にする事ができます。

ポイント

最大のポイントはココです。

CHAR関数で引数内に記入する数値+ROW関数で得られる値=65になる様に式を書く

理由はASCIIコードのAは10進数の65だからです。

どこの行から関数をスタートさせるにしてもまずは引数の値が65になる様に関数を用意します。

ポイント

CHAR関数のかっこ内の引数は書き込む数値とROW関数で得られる行の値を足して65を狙う

あとはオートフィルでB、C、D・・・と値が入る様になります。

理由はROW関数の戻り値でASCIIコードを66、67、68と進めてくれるからです。

まとめ

ちょっとテクニック的な要素も入ってますがゆっくり考えるとわかると思います。

これがエクセルの楽しいところです。

これで依頼者さんへの回答になりました。

・・・と思っていたのですが本当は「AAみたいに2桁にしたい」って言うんですよ。

「最終的にはZZまで欲しい」とのこと。欲張りなわけですよ。

もちろん関数でも出来るのですがせっかくなのでVBAでやってみます。

配列を使う良い機会です。配列でコードを書きます

タイトルとURLをコピーしました