いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Excel)アルファベットの連番を生成する

 ExcelでA,B,C……Z、さらにAA,AB,AC……ZZ、と続くアルファベットの連番を作成する方法です。
 ADDRESS関数を使って数値に対応する列番号(記号)を取得する方法が有名ですが、XFDまでしか取得できない欠点がありますので、ここでは別の方法を試してみます。

  • BASE関数やTOCOL関数などを組み合わせてアルファベットの連番を生成することができます。

手順

AからZZまでを生成する例

 B2セルに数式を生成してアルファベットを縦方向に並べています。
 式の内容は次のとおりです。

 B2セル

=LET(
x,BASE(SEQUENCE(26,,10),36),
VSTACK(x,TOCOL(x&TRANSPOSE(x)))
)

 2行目のBASE関数とSEQUENCE関数でAからZまでの配列を生成し、xと名付けています。
 3行目の「x&TRANSPOSE(x)」で2文字のアルファベットの全組み合わせを生成してTOCOL関数で縦1列に並べ、VSTACK関数を使いxとともに縦方向に積み重ねています。


 下にスクロールしていくとZの次にAA,AB,AC……と続き……


 最後はZZで終了します。


 n番目の連番を直接計算する方法ではないため、いったんZZまで全部してから必要な分を抽出するしかないのが欠点です(以下の例でも同様)。

AからZZZまでを生成する例

 ここでもB2セルに数式を生成してアルファベットを縦方向に並べています。
 式の内容は次のとおりです。

 B2セル

=LET(
x,BASE(SEQUENCE(26,,10),36),
y,TOCOL(x&TRANSPOSE(x)),
VSTACK(x,y,TOCOL(x&TRANSPOSE(y)))
)

 考え方は最初の例と同じですが段階が増えています。
 2行目でAからZを生成し、3行目でAAからZZを生成し、4行目でAAAからZZZを生成するとともにそれらすべてをVSTACKで縦に積み重ねています。


 下にスクロールしていくとZZの後にAAA,AAB……と続き……


 最後にZZZで終了します。

AからZZZZまでを生成する例

 ここでもB2セルに次のように入力しています。
 画像は配列の最下部で、B2セルから数えて第475254(=26+26^2+26^3+26^4)項のZZZZで終了しているのがわかります。

 B2セル

=LET(
x,BASE(SEQUENCE(26,,10),36),
y,TOCOL(x&TRANSPOSE(x)),
z,TOCOL(x&TRANSPOSE(y)),
VSTACK(x,y,z,TOCOL(x&TRANSPOSE(z)))
)

 これも考え方は上記の例と同じで、段数が増えただけです。
 ただしここまでくると相当重くなります。