いまさら聞けないExcelの使い方講座

【Excel】複数行ごとに1セットになったデータを1行にまとめたい! コピペ不要の整形方法

“複数行で1セット”の表を1レコード1行に整形したい!

複数行を1行に変換する2つの関数

 1レコード分の情報が“複数行で1セット”になっている表がありますよね。例えば、人事データや会員リスト、イベント参加者の名簿など、現場では意外とよく見かけるパターンです。以下の表は[会員ID][氏名][会員ランク][年齢]と[メールアドレス][入会日][満足度]の2行で1レコードが構成されています。

[会員ID][氏名][会員ランク][年齢]と[メールアドレス][入会日][満足度]の2行がひとまとまりのデータの例です。

 ただ、このままではフィルターも並べ替えも使いにくく、データ分析に向きません。1レコードが1行になるよう整えたいところです。とはいえ、手作業でコピペしていたのでは、行数が増えるほどミスと手間が増えてしまいます。

 そこで活用したいのが、TOROW関数とWRAPROWS関数です。これまでVBAやPower Queryが必要だった処理も、1つの数式で完結できます。

TOROW関数とWRAPROWS関数の構文

 TOROW(トゥー・ロウ)関数は、指定したセル範囲を1行に並べる関数です。引数[無視する値]と[検索方向]を省略した場合は、空白のセルやエラー値も含めて、横方向(行方向)に並べます。

TOROW関数の構文。1行に並べるセル範囲を引数[配列]に指定します。引数[無視する値]と[検索方向]を省略した場合は、空白のセルエラー値も含めて、横方向(行方向)に並べます。[無視する値]が「1」では空白のセル、「2」ではエラー値、「3」では空白のセルとエラー値を無視します

 WRAPROWS(ラップ・ロウズ)関数は、指定した1行、または1列のデータを横方向に折り返して表形式に整えます。

WRAPROWS関数の構文。1行、または1列に折り返したいデータを引数[ベクトル]に指定します。[折り返しの数]はそのままの意味。[空のセルの値]を省略した場合は[#N/A]が表示されます

 それぞれの動きを確認してみましょう。先ほどの表の見出し部分と1レコード目を処理してみます。見出しとデータを見ると、空白のセルが含まれているので、TOROW関数の引数[無視する値]には「1」と指定します。

 空白のセルを除いて見出しの数を数えると7つです。WRAPROWS関数の引数[折り返しの数]には「7」と指定します。なお、WRAPROWS関数の数式中の「F1#」は、スピルで表示されたTOROW関数の結果を指します。

セルF1に「=TOROW(A1:D4,1)」(①)と入力した結果です。セルA1~D4のデータが連続して、横方向に並びます
続けて、セルF2に「=WRAPROWS(F1#,7)」と入力します(②)。見出し部分は、F~L列の7列分がひとまとまりなので、引数[折り返しの数]には「7」と入力します
7列分で折り返されました

 ここまで確認できれば、TOROW関数に表内のすべてのセル範囲を指定すれば、うまく処理できそうですね。

TOROW関数で並べて、WRAPROWS関数で折り返す

 1行に整えた際の「列数」を把握しておくことがポイントです。今回の例では、7列です。ここでは、TOROW関数とWRAPROWS関数をまとめて以下のように入力します。

=WRAPROWS(TOROW(A1:D42,1),7)
セルF5に「=WRAPROWS(TOROW(A1:D42,1),7)」と入力します(③)
1レコードで1行のデータとして整えられました

 結果がスピルで出力される関数を活用すれば、コピペは不要です。複数行のデータをスマートに整形してみましょう。