SSブログ

エクセルのADDRESS(1,カラム,2)関数(長さん)

既に、エクセル表の中に文字型セル形式で、
左上の任意の大きさの正方形領域の180°
反転型を作って、将棋盤の回転を表現する
事を目的とする、セル座標を180°反転
して自動出力するエクセルシートを紹介し
た。正常動作させる為に、座標を間接参照
する、INDIRECT()関数の参照セ
ル制御部が必要であり、その文字セル群を
作る事を目的として、エクセルソフトに読
み込ませる”,”区切りCSVファイルを
作る、BASICインタープリター上動作
の「ベーシック・プログラム」を本ブログ
で紹介した。
 その後管理人はエクセル自体の関数の中
に、目的の、INDIRECT()関数を
使用して、シート領域を180°回転する
この、制御文字列群を、入力支援する形で
作成する方法が無いのかどうか、web上
を捜索した。
 その結果、web上に、エクセル関数:
LEFT(ADDRESS(1,カラム,2),FIND("$",ADDRESS(1,カラム,2))-1)
で「INDIRECT()関数の参照セル
制御部のセル列座標文字」が作成出来ると
の旨の情報を発見し、課題を解決したので、
以下報告する。

これと、エクセルの入力支援・システムで
あるオートフィル機能を活用すると目的と
する制御文字列が、比較的容易に出来る

ようである。上記の関数でweb上を検索
してみて頂けると判るが、ADDRESS
関数には、

ADDRESS(1,参照カラム,列表現
の”$”だけを取り除くオプションの2)
という決まった引数(1,参照カラム,2)
という形式が有り

それを利用して、参照座標に書かれた求め
たい列数値に対応する、エクセルアルファ
ベット列表現文字を、セル出力させるので
ある。つまり、
=LEFT(ADDRESS(1,カラム,2),FIND("$",
ADDRESS(1,カラム,2))-1)&"行番"と入力
すると、必要な、制御セルを一つ出力する
のだが、更に同じ行の直ぐ下の列に、
=LEFT(ADDRESS(1,カラム,2),FIND("$",
ADDRESS(1,カラム,2))-1)&"行番-1"を
作っておいて、関数の横コピーと、
値貼り付けを駆使、更に
列に対して下向きに、前記の「行番数」が、
1ずつ単調減少するように、表計算ソフト
エクセルに備わるオートフィル機能を、
文字セルの行数数値キャラを最終行の行数
が1になるまで作用させれば、目的とする
制御部が出来るという事である。
 さて、この関数を使うには今述べた作業
より前に特定1行のセル群に、求めたい
列数値を、予め「下ごしらえ入力」してお
く必要がある。
 行はどこでも良いが仮に第40行を使用
して一辺256升目の巨大将棋の180°
反転を作りたいとすれば、A40に
”256”、B40に”255”と入力し、
それにもエクセルのオートフィル機能を、
横向きに働かせて、C40、D40・・・
に、数値で254、253を、自動で入れ
て行く。すると、セル「IV40」には1
が入って終わる。
 冒頭で述べた「本格作業」は、ここから
になる。そこで次に、列が同じの方が便利
だが、行は適当でよく一例、A44セルに、
さきほど紹介の
LEFT(ADDRESS(1,A40,2),FIND("$",
ADDRESS(1,A40,2))-1)&"256"を、
A45セルに、
LEFT(ADDRESS(1,A40,2),FIND("$",
ADDRESS(1,A40,2))-1)&"255"を、
入れる。
 すると、A44に”IV256”が、
A45に”IV255”が回答として出力される。
 これらを、第44行についてと、
第45行についてと、それぞれに、第IV
列まで、「数式の自動コピー」をしてゆく。
IV44には、A256が、IV45には、
A255が、回答されて完成する。
 というのも、webの情報によれば、
=ADDRESS(1,参照座標,2)は、
ADDRESS(ダミー行の1,列数を参照する座標,
最初の列記号の前に付く$記号は表示しな
いの意味の2)であるとの事だからである。
つまりこの場合は、この段階で例えば左端
の「列数を参照する座標」が「A40」の
256であるA44セルのADDRESS(1,A40,2)
は「IV$1」と回答している。そこで更に、
決め手となるテクニックに、結果的になる
のだか、
LEFT(・・・,FIND("$",ADDRESS(1,列数参照
座標,2))-1)を、エクセル関数で入れ子施し
すると、

$の右側の「IV」だけ取り出す

という意味に、なるそうだ。
 そして更に「&”256”」で、行番号
を更につなげて、「IV256」という
目的とするINDIRECT()関数で
使用する、制御文字を作ったのである。
 この状態で、一例A44行とA45行を、
エクセルのコピー&値貼り付け機能で、た
とえばA54行とA55行に全部値貼り付
けし、更に、
横にぎっしり並ぶ「数字文字を含む文字列」
を、全ての列について、下方向に、残りの
あと

254行オートフィルすると、目的の制御
文字セルが完成

する。
 そうしておいて、第40行から第45行
は、一時的なもので、不要だから、横に全
部削除すれば、256升目将棋の180°
回転制御部が出来る。以上で、エクセル
シート内だけで、「INDIRECT()
関数の参照セル制御部のセル列座標文字」
が、作成出来た事になる。
 以上の方法だとベーシックのプログラム
や、QBasicのインタープリター又は、
N88Basic互換インタープリター・
アプリケーションソフトは、不要となるの
である。

エクセルのADDRESS関数の引数が、
裏技のように、回答で列の前の$だけ外し
て、行例えば「1」の前の$は残す、奇妙
なオプションパラメータを持つという事実
を知らないと、到底やり方に気づけ無い

が。webを検索して知れば、本ブログの
前記説明で、まさに必要な制御文字セル群
が作成出来る事が、以上のように明らかと
なって来たのである。(2023/07/26)

nice!(9)  コメント(0) 
共通テーマ:趣味・カルチャー

nice! 9

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。