ツイッター出題回答
アルファベットの26進(ツイッターお題)

ExcelマクロVBAとエクセル関数についての私的雑感
公開日:2020-05-19 最終更新日:2020-05-19

アルファベットの26進(ツイッターお題)


ツイッターで出されたお題をVBAで回答したものです。


AAAの値をAAB,AAC...AAZまでインクリメントし、
次のアルファベットを桁上げし、
ABA,ABC?ZZZまで計算するコードを書きたい。

お題のツイート

よくある方法

一番多い方法としては、
10進数値を26で割っていく方法で各桁を0~25の数値に変換し、
その後、0~25を"A"~"Z"に変換して作成する方法です。
文字コードは、"A"が65、そこから1ずつ増えていき、"Z"が90です。
つまり、0~25に65を加算した文字コードが"A"~"Z"になります。

文字コードを文字に変換するには、Chr関数を使います。
Chr関数は、指定した文字コードに対応する文字を示す文字列型(String)の値を返します。ChrB関数はバイトデータとして扱います。ChrW関数はUnicode文字セットとして扱います。Chr関数 Chr(charcode) charcode 文字を特定するための長整数型(Long)の値を指定します。

上記ツイートを辿ればいろいろな回答が出ています。

回答したVBAコード

他の回答者とは全く別のVBAにしてみました。

Sub main()
  Const alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  Dim i, str As String
  str = "AAA": Debug.Print str
  For i = 1 To 26 * 26 * 26 - 1
    If Mid(str, 3, 1) = "Z" Then
      If Mid(str, 2, 1) = "Z" Then
        Mid(str, 1, 1) = Mid(alpha, InStr(alpha, Mid(str, 1, 1)) + 1, 1)
        Mid(str, 2, 1) = "A"
      Else
        Mid(str, 2, 1) = Mid(alpha, InStr(alpha, Mid(str, 2, 1)) + 1, 1)
      End If
      Mid(str, 3, 1) = "A"
    Else
      Mid(str, 3, 1) = Mid(alpha, InStr(alpha, Mid(str, 3, 1)) + 1, 1)
    End If
    Debug.Print str
  Next
End Sub

あえて、解説は省略します。
使用している関数等は、

Mid関数
Mid関数は、文字列から指定した文字数分の文字列を返します、バリアント型(内部処理形式StringのVariant)の値を返します。Mid関数 Mid(string,start[,length]) string 必ず指定します。文字列を取り出す、元の文字列式を指定します。
Instr関数
Instr関数はVBAでは頻繁に使われる超重要の必須関数です。シート関数のFIND関数・SEARCH関数と同様機能のVBA関数になります。Instr関数は、文字列の中から指定した文字列を先頭から検索し、最初に見つかった文字位置を返す文字列処理関数です。
Midステートメント
Midステートメントは、文字列変数の一部を他の文字列に置き換えます。これは、マクロVBAのステートメントであり、Mid関数とは根本的に違うものです。Mid関数と誤解されがちですが、全く別物になります。

注意点はMid関数とMidステートメントの違いです。
上記解説ページを参考に、VBAコードを読み解いてみてください。

実行結果は、以下のようにイミディエイト ウィンドウに表示されます。
AAA
AAB
・・・
AAY
AAZ
ABA
ABB
・・・
AZZ
BAA
BAB
・・・
ZZY
ZZZ



同じテーマ「ツイッター出題回答 」の記事

ツイッターで出されたVBAのお題(悪魔のCSV)をやってみた
「VBAで導関数を求めよ」ツイッターのお題をやってみた
ツイッターのお題「君の名は?」
ツイッターのお題「CSV編集」
アルファベットの26進(ツイッターお題)
ナンバープレート数字遊び:ツイッターお題
サロゲートペアに対応した自作関数(Len,Left,Mid,Right)
迷路にネコが挑戦したら、どうなるかな…
迷路ネコが影分身の術を体得したら…
VBAで漢数字を算用数字に変換


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ