Excelでは、表の配置によって同じデータでも参照方法を工夫する必要があります。特に、縦方向に並んだデータを横方向の表へ表示したい場合、単純なセル参照ではコピーしたときに意図した結果にならないことがあります。
例えば、月別売上データが縦に管理されている一方で、集計表では横方向に表示したい場合があります。この記事では、コピーしても参照先が自動的に変化する数式を使って、効率よく値を取得する方法を解説します。
単純なセル参照では横コピーした時に問題が起きる理由
例えばB2セルに「=B6」と入力すると、B2にはB6の値が表示されます。しかし、この数式をC2へコピーすると、自動的に「=C6」へ変化します。
そのため、縦方向に並んだデータを順番に取得したい場合、単純なコピーでは参照方向が合わず、期待した結果になりません。
今回のように、B2ではB6、C2ではB7、D2ではB8というように、行番号だけを変化させたい場合は別の関数を使う必要があります。
INDEX関数を使って縦データを横方向へ表示する方法
縦に並んだデータを横方向へ展開する場合は、INDEX関数を使う方法が便利です。
B2セルには次の数式を入力します。
=INDEX($B$6:$B$8,COLUMN(A1))
この数式を右方向へコピーすると、C2ではB7、D2ではB8の値を順番に取得できます。
INDEX関数は、指定した範囲から指定した位置の値を取り出す関数です。COLUMN関数を組み合わせることで、コピーするたびに取得する位置を1つずつ変更できます。
OFFSET関数を使って参照位置をずらす方法
OFFSET関数を利用しても、コピーに合わせて参照位置を変更できます。
B2セルの場合は、次のような数式になります。
=OFFSET($B$6,COLUMN(A1)-1,0)
この数式では、基準となるセルをB6に固定し、COLUMN関数で右へコピーするごとに行方向へ1つずつ移動しています。
B2ではB6、C2ではB7、D2ではB8というように、縦方向のデータを横方向へ展開できます。
TRANSPOSE関数を使う方法も便利
Excelには、縦横の向きを入れ替えるためのTRANSPOSE関数もあります。
例えば、B6:B8の範囲を横方向へ表示したい場合、TRANSPOSE関数を利用すると一度に変換できます。
新しいExcelでは、次のような数式を入力できます。
=TRANSPOSE(B6:B8)
この方法は、データ全体の向きを変更したい場合に特に便利です。ただし、1セルずつ参照を変えたい場合はINDEX関数やOFFSET関数のほうが適しています。
月別売上表を作成する場合の具体例
例えば、B6:B8に以下のようなデータがあるとします。
1月 90
2月 120
3月 110
この売上データを横方向の集計表へ表示する場合、INDEX関数を使えば、B2に90、C2に120、D2に110を自動表示できます。
このような方法を使うと、元データが増えた場合でも数式をコピーするだけで対応でき、手入力によるミスも防げます。
まとめ
Excelで縦方向の値を横方向へ表示したい場合、単純なセル参照ではコピー時に参照先がずれてしまいます。
コピーしても正しく順番に取得したい場合は、INDEX関数とCOLUMN関数を組み合わせた「=INDEX($B$6:$B$8,COLUMN(A1))」のような数式が便利です。
また、データ全体の向きを変更する場合はTRANSPOSE関数、参照位置を細かく制御したい場合はOFFSET関数など、目的に合わせて関数を使い分けることでExcel作業を効率化できます。


コメント