電子格子で値の座標を調べる

      No Comments on 電子格子で値の座標を調べる

ultimate_matrix例えば右の図にあるような表が有ります。仮にこれは座席表です。この中の「西川」さんの座席はC4です。これをEXCELやGoogle Sheetsで割り出したい場合は、どうしましょうか?

以下はステップ分けて解説します。

一気に行と列を割り出すのは大変難しいので、より簡単なタスクに分解します。西川さんは何列に居るかと西川さんは何行に居るかという二つの問題に分解します。まずは西川さんは何列に居るかを考えます。

boolean_matrixでもまだ難しいです。もっと分解します。まずは西川さんは指定の席に居るかどうかを割り出します。これなら簡単です。E1に「=A1=”西川”」を入れます。そして、G5まで引っ張ります。できるものは右の図に示されたようなものです。ほぼ全部FALSEで、一個だけがTRUEになります。このTRUEは西川さんの居る場所です。既にお分かりかもしれませんが、このTRUEは行と列に関係なく、TRUEです。このTRUEを以って行と列の番号をそれぞれ取得できます。

coordinate_matrixつまりこうしたいです。TRUEの場合のみ行と列の番号を出してもらいたいです。その他の場合は0にします。そうなれば、行か列の最大値として西川さんの位置が分かります。では、I1に「=IF(E1,ROW(),0)」を入れます。K5までセルの式を引きます。ROW()関数は所在セルの行番号を返します。結果としては、E1:K5は全部0で、一個だけが4になります。この4は西川さんの行番号になります。同様にM1に「=IF(E1,COLUMN()-COLUMN(J1),0)」を入れて、O5まで引きます。COLUMN()関数は所在セルの列番号を返します。ここで注目すべきのは式をM1に入れるので、COLUMN()関数はMの列番号を返します。C列の番号では有りません。C列の番号が欲しいので、「-COLUMN(J1)」を使用しています。COLUMN()関数にセルを記載した場合は、そのセルの列番号を返してきます。J列は相対的原点の位置なので、J1を使いました。(J列のセルであればどれでもいいです。)ここまでは、西川さんの行と列の座標を行列の形で表しました。7行目は各列の最大値を取っています。例えばI7に「=MAX(I1:I5)」を入れています。

最後に、I7:K7とM7:O7に対して、それぞれ最大値を取って、「C4」のようなセル名を作ります。これはADDRESSと言う関数を使用します。この関数は行の番号と列の番号をとって、説明を返します。もし三番目の引数を使用すれば、出力の形式を指定できます。例として、Q1に「=ADDRESS(MAX(I7:K7),MAX(M7:O7),4)」を入れます。そして、Q1の表示内容は「C4」になります。

Leave a Reply

Your email address will not be published. Required fields are marked *