SSブログ

先後手共ソフトを正立させエクセルシートで将棋(長さん)

以前エクセルシート上で、ある長方形領域に、
固まって文字列データがあるとき、その縦横を
入れ替えて左上と右下を軸にして、領域をひっ
くり返すような操作は出来るのだが、将棋盤を
先手と後手とで見たときのように長方形領域を、
180°回転させるような変形をさせるのは
難しいとの旨述べた。というのも領域を180°
回転させた結果を表示する計算式の入った、
180°回転結果表示部を作ったとしても、元
の領域のデータの1個に関してセル引きずり移
動をさせてしまうと、計算結果表示部の計算式
が、その移動駒の居た元セル位置に関し、移動
先を参照するように、式が替わってしまうので、
180回転結果表示部が意図するように作成で
きないからである。その為、それとPCの画面
全体を180°回転させるグラフィック・オプ
ション機能を組み合わせ、エクセル画面自体は
360°回転、シートの将棋盤部分は540°
回転させて、先手・後手共通にエクセルソフト
を正立させた状態で、特に後手が操作出来るよ
うにするのは困難であるとの事であった。
 しかしながらその後、確認結果、

将棋駒の先手/後手区別を、駒の向きで表す
日本の将棋では困難であるが、外国のチェス・
象棋類の駒の如く色での区別で我慢すれば可能

と判明した。以上を今回は報告する。

 即ちマイクロソフトのエクセルでは、
Indirect関数を使用し、「条件付書式
の、含文字列で強調表示」という機能を使えば
可能

と判った。なおアパッチ社オープンオフィス等
のカルクとエクセルビュワーには、

「条件付書式」で「含文字列で強調」機能が、
たまたま無く、このやり方は困難である

事も分かった。マイクロソフトのエクセルと、
中国キングソフトのスプレッドシートでしか
出来無いようだ。
 それでは以下に、以上の点に関して特に、
「Indirect関数」でなぜ、以前に述べ
た、冒頭の障害が出無いのか、理由を中心に紹
介する。

 先に手法を述べると、下図のようにマイクロ
ソフトのエクセルで、3つの入力が固まって有
る方形領域が有るようなシートを作成すると、
それが出来るようになる。

改善熊澤悪行入indirect.gif

 即ち上図で列番号が少ない最上段の方形領域
が、将棋盤として通常使用する部分である。ま
た最初から断るとこの方法では、駒が先手のも
のか、後手のものかを判断するときに、駒の文
字列が180°回転しているかどうかで見る、
日本の将棋の方式が使えない。上図には見えて
いない隠し添え字を第3文字目に加え(1か2
かを今回は使った)、上図の例では緑か紫かで、
先手後手の駒種類を判断するので、相手駒を
反転していない。これは、この方法では「条件
付書式」で「含文字列で強調」に「彩色をする」
という機能はあるが、

「セルの回転させて強調する」という情報が、
全く無い

からである。なお、回転させたときに更に反転
させるのも、困難である。
 1手毎に手作業で駒の向きを変えるなら別だ
が、チェスのように駒の色で、敵味方を区別す
るしか、敵味方の駒区別の方法はこのやり方で
は出来無い点を予め、断っておく。

駒の向きで駒の帰属を決めるという方法の日本
の将棋方式の習慣の継続は、諦める事の出来る
場合にのみ使用出来る

という意味である。
 さてエクセル表の中段の塊は、最下段の塊て、
Indirect関数を使うのに必要な、半角
文字列で座標を表現した部分である。180°
回転の場合には、13升将棋では1から13が
逆順でかつ、列座標のA・B・C・D・E・・
・・・・Mが逆順になる。
 そして、最下段の塊が、Indirect
関数を使って、180°回転をした場合の結果
が表示される部分である。図で左上のA34に、
=T(INDIRECT(A17))
が、右下のM46に
=T(INDIRECT(M29))
が、中段塊を順に参照するように入力してあり、
つまりその途中は引数に、中段塊部のセル座標
が規則正しく入っている。なお関数型が、
INDIRECT(座標)
ではなくて、
T(INDIRECT(座標))
なのはこう、し無いと、空白升目のときゼロを
返す為、それを防いでいるのである。
 Web上のどのサイトにも、実はおおもとの
マイクロソフトぺージの関数Indirect
の説明に関してすら私には発見出来無かったが、

最上段の盤部でセルを、マウスで引きずり移動
させても、この関数で相対参照すると、参照の
乱れが起こら無い

のに、本ブログの管理人は、試行錯誤の果てに
今回初めて気がついた。
 中段部のセルには、文字列が入力されていて、
計算途中で変動する引数では無いので、いつも
180°回転になるのである。
 ただし、このやり方では、書式が全く反映さ
れない。そこでやむなく本方式では、前述

「隠し添え字」を使っている

のである。セルの大きさを調整して隠してある
が、第3文字として、

先手の駒なら半角1、後手の駒なら半角2を、
このシートのケースでは、見えないようにして
実際には入力している。

 そうした上で、上図のA1からM46全体に、
マイクロソフトのエクセル等には機能の有る

「条件付書式」という名称で知られる、「セル
に特定の特徴が有る時だけ修飾」に関して先手
の駒名は緑で、後手の駒名は紫で採色するとい
う事で、合計2項目施し、

上図では添え字として1が有れば、一例として
セル文字を緑色、2が有れば、同じく一例とし
て紫色になるように設定すると、最下段塊のよ
うになるのである。
 更にこの図自体を、ノートPCがインテル社
のCPUを使っているものを必ず使用して、か
つそれにキーボードを2台マウスを2台接続し、
Ctrl+Alt+↓で、画面が反転して
後手側で正対、Ctrl+Alt+↑で先手で
再度正体させて、先手後手両方の側でエクセル
が普通に正立して使用出来るようにして使う。
なおこの条件ではあら氏の「さかさまうす」と、
BABA氏の「最前列でポーズ」ソフトは使用
し無い。
 また着手後、先手・後手共、エクセルシート
の最下段塊であるA34:M46領域を、最上
段塊のA1:M13へ、

最初に「値コピー」し、書式が乱れるときには、
追加で「書式のみコピー」をコピー元、コピー
先共に盤全体に対して、合計2回行い、

最上段盤部が、次の着手のときに絶対静止する
ようにするのである。
 つまり、ソフトの中で盤を180°回転し、
画面全体を、グラフィックオプションで180°
回転して計360°になるようにし、将棋盤を
静止させ、それで後手が先手と同じ条件で、こ
の日本の将棋が、指せるようにする。
 つまりは、

アプリケーションソフトのエクセル制御画面と、
個々の将棋駒の向きは、180回転なので、
後手にもいつも、正立して見えている、

という事である。
 なお上図では、2手目に後手がE5(9五)
歩兵と指し、Indirect関数部の全値
コピーと、必要なら次いで書式のみコピーを
2度塗りで行い、先手で正立させる向きにした
状況を示している。
 マイクロソフトの説明でも、web上の
エクセルの使い方サイトでもそうであるが。
「Indirect関数は、コピーする座標を、
出力する座標とは、別のところで調整出来る事
を特徴とする関数」として紹介されている。
しかしその「別の所の値が文字列を手打ち入力
して作ったものなので、セルのマウスによる引
きずり移動で、エクセルソフトが関数の中の引
数座標値を、勝手に変える事が特段無い」とい
う点を強調してい無い。今迄私が今述べた事が
出来なかった原因は、基本的に各サイトの説明
が、本質から離れているように、私には見える
点に有る。
 なお冒頭に述べたが、アパッチ社のオープン
オフィスのカルクにもT(Indirect())
関数は有るのだが、色付けの方の「セル内特定
文字列による、セルの条件付き書式修飾」機能
が、たまたまだが無い。その為、ここで説明
したやり方は、オープンオフィス・ライブル
オフィスのカルクでは困難で、マイクロソフト
のエクセルや、中国キングソフトのスプレッド
シートでは、恐らく可能という現状に、なって
いるという事情である。(2023/07/22)

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

nice! 7

コメント 0

コメントを書く

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