以前やっていたプロジェクトでJavaのペアプログラミングをすることがありました。
その際にPOJOのSetter、Getterなどを手入力している人がいたのですが「いやいや、そこは何かツール的なもの使おうよ」と思ってしまいました。
自分だったらExcelでやったかなあと思ったので、そのようなときによく使うテクニックを紹介したいと思います。
紹介するのは、関数を使って「1行を2行にする」ということです。

上記画像のように、A列に入力されている値を 2行にする方法となります。
日本語でどう説明したらよいかが難しくて、 「1行を2行にする」が適当なのかわかりませんでした。
もし、違うことを想像していた方がいたら申し訳ないです。 m(-_-)m
INDIRECT、QUOTIENT、ROWを組み合わせる
結論から書くと、A列に記載されている値を2行にするという関数は以下になります。
=INDIRECT("A""IENT(ROW()+1,2))
解説
ROW関数では現在の行の行番号が戻されるので、=ROW()は以下のような形になります。

次にQUOTIENTですが、これは割り算を切り捨てで行う関数です。
ROW() で取得した結果をQUOTIENTを使用して2で割ると以下のようになります。
=QUOTIENT(ROW()+1,2))

INDIRECTは引数で与えた文字列を参照先として使用することが出来ます。
例として、「= INDIRECT (“A1”)」は「=A1」と同じ意味になります。
このINDIRECTに渡す数値を、上記のQUOTIENTで取得した値に変更すると、1行を2行にすることが出来ます。

関数で行を増やすことで利便性が上がります
上記動作は別に関数を使わなくても簡単に実現することが出来ます。
例えば、Ctrlを押しながら行を選択すると、各行ごとに空白セルを挿入することができるのでこれを利用します。
↓Ctrlを使用して3行を選択し

↓挿入を選択

↓空白行が挿入される

1行ごとに空白行が挿入されたので、上のセルを参照するような関数を空白行に仕込めば同じ形になります。
今回の「=INDIRECT(“A”"IENT(ROW()+1,2))」を使用する方法が上記より優れていると思うのは、更に行を増やしたいときに一瞬で対応できるからです。
ROWに加算する値を+1して、 QUOTIENTの分母を3にします。
=INDIRECT("A""IENT(ROW()+2,3))

こんな感じで簡単に行を増やせるので、セル操作でやるよりも優れていると言えるかと思います。
InterFace系のプログラムソースを書くときに便利
これを何に使うのかというと、特定の変数に同じような処理をしていく時ですね。
例えば
- 変数をTrimする
- 変数を足し合わせていく
という処理を複数の変数に対して行っていくと仮定します。
B列を先程説明した方法で2行に増やし、C列に以下の関数を使用します。
=IF(MOD(ROW(),2)=1,"trim("&B1&")","joinStr += "&B1&"")
結果

A列に記載した値からソースを自動で生成することが出来ました。
仮に変数の数が膨大でも簡単に対応することが出来ます。(そもそも関数化しろよとか言われそうですが…)
コメントを残す