アルファベットの連続データ入力はCHAR&ROW関数
AからZまでの文字を関数を使って並べてみようという記事です。結論から書きますと「出来ます」。
CHAR関数にROW関数を組み合わせる事でAからZの並びを作ることが出来ます。
その後はAA、AB、ACと続きZZまでの文字列を用意するのですがここからはVBAで作業する事にします。
理由は「VBAの方が簡単だから」です。次回の記事で解説していきます。
今回の記事では関数でAからZの値を並べる事を考えていきましょう。
先に結論が知りたい方はこちら
シリーズの構成
ユーザー様の課題を解決させる為に記事を3つ用意しました。
最初の記事はAからZまでを関数で用意しています。
残りの2つの記事ではAからZZまでをVBAを使って用意してみました。
関連記事
エクセルユーザーの皆様は関数を検索する際どうやって検索していますか?私はChatGPTを使っています。
こちらの記事ではChatGPTとGPTExcel、Google検索を使って関数を探しながら作業を比較しています。
それぞれのツールのメリット、デメリットや使い時が分かる様になっています。
こちらはGPTExcel単体の記事です。使い方が分かります。
問い合わせをいただきました
「関数を使ってアルファベットのAからZまで書き出したいんだけど・・・」出来ますか?
という問い合わせがありました。
理由はある程度想像がついています。AからZの値を並べる時にオートフィルが使えないんですよ。
Aと書いたら次の文字はB、その次はC、D・・・と続くと思うのですがそうはいかないみたいです。
ではどうするのか。以下関数で対応可能です。
以降でどうやって値を用意するのか解説していきます。
質問内容を再現してみる
まずは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進数 | ASCII |
---|---|
65 | A |
66 | B |
67 | C |
68 | D |
69 | E |
70 | F |
71 | G |
72 | H |
73 | I |
74 | J |
75 | K |
76 | L |
77 | M |
10進数 | ASCII |
---|---|
78 | N |
79 | O |
80 | P |
81 | Q |
82 | R |
83 | S |
84 | T |
85 | U |
86 | V |
87 | W |
88 | X |
89 | Y |
90 | Z |
これらをASCIIコード(アスキーコード)と呼びます。「アスキーコードの77はM」という使い方です。
これを表現できる数式や関数があれば数値みたいに連続でアルファベットを並べることが出来ます。
CHAR関数
今回は CHAR という関数を使います。
具体的にはセルに =CHAR(65) と書けば A が出てきます。
この関数をオートフィルしたらB、C、Dという様に文字列が並びそうな気がします。
ではセルの右下をつかんで下方向に展開(オートフィル)してみましょう。
・・・期待と違う事が起きましたね。ずっとAが表示されます。
かっこの中の数値を定数で用意しているのでオートフィルしても数値は進まないです。
よってずっと同じ関数が入ってしまいます。値はずっとAです。
これだと目的が達成されません。他の方法を考えましょう。
仕方ないのでA列に数値を用意してみる事にします。
こんな感じでアルファベットを表示させたいセルの横に数値を書いてみます。
参照するかたちで引数に使うという手もありますが数値を書いている列が1列余計ですよね。
余計な情報は使いたくないので他に何かできないか考えましょう。
よく見るとA列に並んでる数値のさらに左に数値が居ますね。
・・・これ行番号です。使えるの??と思う方居ると思いますが実は「行番号は使えます」。
ROW関数
ここで冒頭で紹介したROW関数が登場します。
() のようにかっこ内に何も書かないと関数を書いたセルの行数を返します。これを使いましょう。
CHAR関数にROW関数を組み合わせる
CHAR関数単体ではかっこ内の数値を変えられないのでROW関数に手伝ってもらいましょう。
セルA1に関数を書くとこのようになります。
A1セルに出来た緑の枠の右下をつかんで下方向に展開(オートフィル)します。
相変わらず同じ関数になりますが表示はA、B、C、D・・・のように英語が並びます。
ROW関数の戻り値によってこのような値を得ることが出来ます。
ポイント
最大のポイントはココです。
理由はASCIIコードのAは10進数の65だからです。
どこの行から関数をスタートさせるにしてもまずは引数の値が65になる様に関数を用意します。
あとはオートフィルでB、C、D・・・と値が入る様になります。
理由はROW関数の戻り値でASCIIコードを66、67、68と進めてくれるからです。
まとめ
ちょっとテクニック的な要素も入ってますがゆっくり考えるとわかると思います。
これがエクセルの楽しいところです。
これで依頼者さんへの回答になりました。
・・・と思っていたのですが本当は「AAみたいに2桁にしたい」って言うんですよ。
「最終的にはZZまで欲しい」とのこと。欲張りなわけですよ。
もちろん関数でも出来るのですがせっかくなのでVBAでやってみます。
配列を使う良い機会です。配列でコードを書きます。