x.com/excelspeedup/status/1859
これ最初意味が分からなかったけど、そうか、列名にはゼロが無いんだ。
列名→列番号は、
ABC=1 * 26 ^ 2 + 2 * 26 ^ 1 + 3
みたいに計算できるから26進数ぽく見えるけど、列番号→列名は26進数として計算しようとすると、おかしくなる。

これずっと考えたけど、どうしてもわからん。A~XFDを生成して、そこから行番号を計算したテーブルを事前に作って照合するしか思いつかない。
情けない…

分からんからカンニングした。
要は、10進→26進変換の計算をするとき、26で割った余りが0のときは、商から1引いて、余りを26に変換する。これだけで良かった。言われてみれば。

惜しいところまでは行ってたのだが、沼にはまってしまった。精進が足りませんね。

ちなみに、日本語でググったら、間違ったコードが出てきたw

フォロー

ChatGPTに聞いたら、もっとエレガントな解法を出してきた…。
前回の商を1引いてから割り算するだけ。
結果は0baseなので1baseにシフトすれば良い。
いや、確かにそれでいいよな。

今までChatGPTバカにしててごめんなさい。もう人間はおしまいです。

このスレッドだとChatGPTと同じ解答があった。安心した(?)
stackoverflow.com/questions/18

しかしExcelの列名は結構面白いネタだな。そもそもこれ、bijective numerationという記法で、n進法とは全く違うものらしい。
en.wikipedia.org/wiki/Bijectiv
qiita.com/hibit/items/608b3ffe

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。