Excel。行が等間隔のデータを列方向に簡単にコピーするにはどうしたいいの
<INDEX+COLUMN関数>
帳票の都合で、どうしても行方向ではなくて列方向に等間隔のデータをコピーするには、どのようにしたら簡単に、しかも手早く処理をすることができるのでしょうか?
例えば、次のような表の場合です。
四半期のデータが、B5・B9・B13と3行空けた等間隔にある表があります。
この表内の四半期のデータを列方向に抽出というかコピーをしたいわけです。
コピー&ペーストするだけですが、データ量が増えると面倒ですし、貼り付けで、行列をいれかえた貼り付けるやり方だと、余計なデータも含めてしまい、データの削除が面倒になってしまいます。
Excel VBAでわざわざプログラムをつくるのも、ちょっと面倒です。
このような場合、INDEX関数をつかった数式で、簡単に処理することができるので、その方法をご紹介します。
D2にINDEX関数の数式をつくっていきます。
=INDEX($B$2:$B$13,COLUMN(A1)*4)
この数式だけで、行の等間隔のデータを列方向に抽出することができます。
では、INDEX関数の引数を確認しておきましょう。
最初の引数は、配列。
データがある範囲なので、B2:B13が対象になります。
オートフィルで列方向に数式をコピーしますので、絶対参照を設定して、$B$2:$B$13。
2つ目の引数は、行番号です。
ポイントは、この行番号です。
どのようにしたら、等間隔に指定することができるのかを考える必要があります。
C列に連番を設定してみると、4の倍数であることがわかります。
そこで登場するのが、COLUMN関数です。
COLUMN関数は、アクティブになっているセルの列番号を算出してくれる関数です。
数式を設定しているセルはD列なので、「4」と算出してしまうので、COLUMN(A1)とセル番地を設定することで、「1」と算出することができます。
オートフィルで列方向に数式をコピーすれば、COLUMN(B1)となり、「2」と算出してくれますので、4の倍数というパターンでつかうことができるわけです。
引数の列番号は、省略するので、あとは、オートフィルで数式をコピーすれば、完成というわけです。
VLOOKUP関数などでうまくできないケースをはじめ、INDEX関数が重宝するケースもありますので、色々試してみると数式の可読性も向上するかもしれませんね。