POINT

まずは、クイックリファレンス!

  • 元データのシートを作成中のブックに追加する
  • データセットに取込位置の行番号を指示する列を追加し、1巡目を手入力 【例 D列に =3 】
  • データセットに取込位置の列番号を指示する列を追加し、1巡目を手入力 【例 E2へ =2 】
  • データセットの行番号を指示する列の2巡目以降へ数式を追加 【例 D26へ =D2+1 】
  • データセットの列番号を指示する列の2巡目以降へ数式を追加 【例 E26へ =E2 】
  • データを取り込む列に関数式を設定 【例 F2へ =INDIRECT("sheet2!"&ADDRESS(D2,E2)) 】

以上で横並びを縦並びへ変換する関数式入力が完了

元データの確認とシートの追加

まずは取り込む元データを確認します。

Book2の画面

なるほど、横方向を時間軸に、縦方向を日付軸にして気温データを並べていますね。データが1種類であれば、この配置は画面に収まって見やすい形になっています。しかし、色々なデータを並べるときにはやっぱり縦並びですよね!

Sheet2の追加

まずは、セルの参照がしやすいように、取り込む元データのシートを作成中のブックへ追加します。今回はまとめるシートを "統合データ"、取り込む元データのシートを"気温データ"として追加しています。

指示列の追加

今回はADDRESS関数を使ってデータ取込セルを指定するので、予め行番号(日付)と列番号(時刻)を指定する指示列を作成します。

1: 元データの取り込むセル座標を確認

セル座標を確認

まず、セル座標を確認しましょう。元データを確認すると、データの開始セルは左上のA1セルから3行目、2列目のセルであることが分かります。そして1時間後の次のセルは3行目、3列目となっています。

2: 取込位置の行番号を指示する列を追加

D列へ行番号(日付)を指示する列を追加します。

24セルを選択

1行目は見出し行として "行指示" を入力します。2行目以降に日付指定の数値を入れます。2行~25行は日付が同じですので、指定する行番号は同じ 3 となります。Excelの複数セル同時入力機能で24セルに一括で 3 を入力します。

POINT

Excelの複数セルへの同じ値の同時入力方法

  • 1, [Ctrl]キーを押しながらクリックか、ドラッグで、同時入力したいセルを選択する。
  • 2, 入力したい値を入力する
  • 3, [Ctrl]キーを押しながら[Enter]キーを押す
24セルの一括入力の結果

選択した24セル全てに4/1を指定する行番号 3 が入力されました。

3: 取込位置の列番号を指示する列を追加

E列へ列番号(時刻)を指示する列を追加します。

最初の2つの値を入力

1行目は見出し行として "列指示" を入力します。2行目以降に時刻指定の数値を入れます。2行目に指定する列番号 2 を、3行目に指定する列番号 3 を入力し、2つのセルを選択して右下のフィルハンドルを25行目まで引っ張ります。

24セルのオートフィル入力の結果

これで0時から23時までを指定する列番号が入力されました。これで、データの開始セルは3行目・2列目の指示、そして1時間後の次のセルには3行目・3列目指示がうまく入っていることが分かります。

4: 同じ法則で繰り返す数列を自動入力する

同じ法則で繰り返す数列を自動入力したい場合、最初の繰り返しだけ手入力し、次に2巡目からは最初のセルの参照式を設定することで、以降は自動入力ができます。

今回は同じ法則で24行ごとに繰り返しが続きますので、2巡目頭の26行目に1巡目頭の2行目を参照する式を入れます。

26行目に参照式を

D列(日付)は24行ごとに1加算されますので、D26へ =D2+1 を入力、

E列(時刻)は単純に繰り返しですので、E26へ =E2 を入力、

そして、入力した2つのセルを選択してフィルハンドルをダブルクリックします。

オートフィル結果

これで 4/1 から 5/31 までの指示列がオートフィル機能で自動入力されました。

上級者になれば、ROW関数(行)とCOLUMN関数(列)を駆使してデータ取り込み式に行番号と列番号の指定を収め、1列にまとめることも出来ます。しかし、複雑な式は後から見返したときに内容が把握しづらいデメリットもあり、今回は別の列で指定しています。

データ取り込みのINDIRECT関数とADDRESS関数の式を設定

次にF列へ "気温データ" シートのデータを取り込む式を設定します。

INDIRECT関数とADDRESS関数の式

1行目は見出し行として "気温データ(℃)" を入力します。そして2行目の開始セルに指示列が指定する "気温データ" シートのセルを参照する式 =INDIRECT("気温データ!"&ADDRESS(D2,E2)) を入力します。

INDIRECT関数は与えられた文字列をセル座標として処理します。式の & は、シート名 "気温データ" を意味する文字列"気温データ!"と、ADDRESS関数が指定するセル座標を繋げています。

セル座標指定では、! の前がシート名、後ろがセル座標になります。【例: =Sheet2!B2 (シート名 Sheet2 のB2セルを参照) 】

参照式のオートフィル

後はこのセルのフィルハンドルをダブルクリックするだけで、"気温データ" シートの横並びの1464点のデータが"統合データ" シートのF列に縦並びで収納されました。

おまけ1:INDIRECT関数とは?

INDIRECT関数は与えられた文字列をセル座標として処理する。いまいち、ピンと来ない説明ですよね。そこでオマケ説明です。

Excelは、数式で参照セルを指定すれば

数式で参照

その値を表示できます。

一方、セル座標の文字列が入ったセルを指定しても

セル座標を指定

その文字列が表示されてしまいます。

そこで、INDIRECT関数です。

INDIRECTで参照

このようにINDIRECT関数で文字列の入ったセルを参照すると、文字列が示すセルの値が参照できます。セルを参照するだけであれば不要ですが、今回の様にINDIRECT関数は文字列を組み合わせて参照セルを変えていく場合に活躍します。

おまけ2:ADDRESS関数を使う理由

ここまでご覧になった賢明な覧者諸氏であれば、E列へアルファベットのB~Yを順にならべ、F2セルへSheet2のセルを参照する式 =INDIRECT("sheet2!"&E2&D2) を設定すれば、ADDRESS関数なしでも参照できることにお気づきでしょう。

ADDRESS関数なしの参照式

しかし、通常の設定ではアルファベットをオートフィルで順に自動入力できないので、ADDRESS関数を使用しています。

ADDRESS関数の機能

ADDRESS関数は、左上のA1セルを基準に数値で行と列を指定するとセル座標を返します。これにより数値で列が指定できますので、オートフィルでサクサク入力できます。

ADDRESS関数の機能

なお、上記は[参照の種類]を4:相対参照にしており、絶対参照の $ がありません。ADDRESS関数は、セル座標を文字列で返しますので、参照式にするにはINDIRECT関数が必要です。