3列目って何列ですか?C列ですよね。誰でも分かります。じゃ、13列目は?正解はM列です。私はこれ覚えています。VBAのベーシックセミナーで、ワークシートを横方向に操作するという練習問題を出します。そのとき、右端の列がM列なんです。いつもみんな指を折って数えますので「M列は13ですよ」と教えてあげます。じゃ、52列目は?98列目は?5,762列目は?今のワークシートは、XFD列まであります。これ16,384列目です。これだけの大きさになると、n列の列文字(AとかBとか)なんか、一発で分からないですよね。これ、VBAでやる方法を書きましたので、ついでにワークシート関数で調べる方法も書いておきます。ちなみにVBAでやるのは「数値から列文字を調べる」をご覧ください。
さあ、同じことをワークシート関数で調べてみましょう。VBA版と同じように、キリのいい数値ということで1,024列目が何列か調べてみます。
こんなときは、ADDRESS関数を使います。ADDRESS関数は「N行、M列のセルのアドレス」を取得できます。
今回は1,024列目ですから ADDRESS(1, 1024) です。行はどこでもいいです。さて、ADDRESS関数は、行と列に対して、相対参照にする($をつけない)か、絶対参照にする($をつける)かを指定できます。
今回は「2 - 行(絶対参照) / 列(相対参照)」を指定します。
このアドレスの、$から左側を抜き出します。何文字あるか分かりません。VBAのSplit関数みたいな便利なのはありませんから[*1(下記参照)]、まずは$の位置を調べます。
$の1文字手前まで抜き出すのですから、LEFT関数で、この数値マイナス1まで抜き出します。
さあ、お待ちかね。1,024列目は…
だそうです。
補足
(*1)本稿を執筆したときにはありませんでしたが、今のExcelにはあります。TEXTBEFORE関数とかTEXTAFTER関数とかTEXTSPLIT関数です。
まぁ、FIND関数で調べてLEFT関数で抜き出すってのが、いわゆる古典的な鉄板ですね。こうした"ちからわざ"も知ってた方がいいです。FIND関数を覚える良い例だと思います。ちなみにスピル全盛の今でも、FIND関数はけっこう使います。
ちなみに、TEXTSPLIT関数でやるなら、他の関数と組み合わせます。
TAKE関数でもいけるか。
もちろんCHOOSECOLS関数も。