PR

Excelで縦に並んだデータを横並びにする方法|COUNTIF・FILTER関数で解説

Excel
記事内に広告が含まれています。

Excelで縦に並んだデータを、横並びに整理したいと思ったことはありませんか?

たとえば、
・都道府県と地番が縦にずらっと並んでいる
・同じ都道府県が何度も出てくる
・地域ごとに横並びで一覧にしたい

といったケースです。

このようなとき、
・ピボットテーブルを使おうとして挫折したり
・VBAは難しそうで手を出せなかったり

ということがあると思います。

実は、Excelの関数だけで縦データを横並びに変換することができます。
しかも、データが増えても自動で反映される方法です。

この記事では、関数だけを使って住所データを横並びに変換する方法を、
・旧Excelでも使える方法
・Excel365で使える最新の方法

の両方で解説します。

🔍今回の記事で分かること
  • 縦に並んだデータを横並びにする方法(旧Excel版)
  • 縦に並んだデータを横並びにする方法(365版)

今回使うサンプルデータ(Excelで縦に並んだ住所データ)

まずは元データです。
今回は以下のようなデータを用意しました。

サンプルデータの画像

このデータを、次のように都道府県ごとに横並びにしていきます。

サンプルデータを横並びにした画像

方法①【旧Excel対応】COUNTIF×VLOOKUP関数で縦データを横並びにする方法

まずは、Excel2010などの旧Excelでも使える定番の方法です。
COUNTIFとVLOOKUP関数で、横並びにしていきます。

1.COUNTIF関数で同じ都道府県ごとに連番をつける
地番の出現順を管理するために、補助列で連番を振ります。

=COUNTIF($C$2:C2,C2)

COUNTIFの範囲先頭を固定することで、都道府県ごとに1,2,3…と番号を振ることができます。

COUNTIF関数で連番を付ける

この方法であれば、同じ都道府県が再登場しても、正しく連番を振ることができます。

2.都道府県&連番のキー列を作成する

VLOOKUP関数は検索値を一つしか受けとれないので、「都道府県&連番」の検索キーを作成する必要があります。

以下のように、都道府県と先ほど作成した連番を&で結合しましょう。

組み合わせて連番のキー列を作る①

あまり列を増やしたくない、という場合は、以下のようにCOUNTIF関数に組み込んでもOKです。

組み合わせて連番のキー列を作る②

3.VLOOKUP関数で連番ごとに地番を横方法に取得する

横並び用の表を用意し、先ほど先ほど作成した検索キーを使用して地番を取得します。
横並びに番号を振っておくと、VLOOKUPの検索キーが作りやすくなります。

=VLOOKUP($F2&G$1,$A:$D,4,0)
VLOOKUP関数で連番をキーにして横並びにする

エラー値が気になる場合は、IFERROR関数で非表示にしましょう。

=IFERROR(VLOOKUP($F2&G$1,$A:$D,4,0),"")
IFERROR関数でエラー値を非表示に

この方法のメリットは、
・古いExcelでも使える
・ロジックが分かりやすい

という一方で、
・補助列が必要
・数式がやや長くなる

といった点には注意が必要です。

そこで、次は新しい関数でもっと簡単にできる方法を解説します。

方法②【Excel 365向け】FILTER関数で縦データを一瞬で横並びにする

次は、Excel365を使っている方向けの最短ルートです。
ここでは、主に
・UNIQUE関数
・FILTER関数
・TRANSPOSE関数

の3つを使用します。

1.UNIQUE関数で都道府県一覧を自動抽出する

UNIQUE関数は、指定した範囲から簡単に重複を除外してくれる便利な関数です。
この関数を使うことで、都道府県の一覧を自動的に作成することができます。

=UNIQUE(A1:A10)
UNIQUE関数で重複を除外

UNIQUE関数については、以下の記事で詳しく解説しています。
こちらもぜひご覧ください。

2.FILTER関数 × TRANSPOSE関数で地番を横方向に並べる

先ほどと同じように、横並び用の表を用意し、以下計算式を入力すると…
あっという間に横並び表示にすることができました。

=TRANSPOSE(FILTER($B$1:$B$10,$A$1:$A$10=D2))
FILTER関数とTRANSPOSE関数でデータを横並びにする

この数式がどういう仕組みかを解説すると、
FILTER関数で、D列とA列が合致する場合、合致した行のB列データを取得し、
(東京都で合致した場合、東京都に紐づいている地番をすべて取得する)
TRANSPOSE関数で行と列を入れ替える
ということをやっているため、該当する都道府県の地番を横並びにすることができるのです。

ちなみに以下の記事でFILTER関数を詳しく解説しています。
こちらもぜひご覧ください。

Excelのバージョン別|どの横並び方法を選ぶべきか

基本的には新しい関数(FILTER関数など)が使える環境であれば、そちらをおすすめします。
ただお使いのExcelバージョンによっては、FILTER関数が使えないケースがあります。
その場合は、VLOOKUP×COUNTIF関数の組み合わせでも実行可能です。

Excel環境おすすめ方法
Excel 2010〜2019COUNTIF × VLOOKUP の組み合わせ
Excel 365FILTER × TRANSPOSE の組み合わせ

お使いの環境に応じて、使い分けしてみてください。

Excelで縦→横変換するときの注意点

関数でデータを縦→横にすることに注意したいポイントを解説します。

注意点1:FILTER関数で表示される範囲にデータがないか確認する

FILTER関数は対象の配列を表示するため、配列を表示する範囲に何かしら別の値があると「#スピル!」エラーが発生します。

範囲に入力値があるとスピルエラーになるので注意

使用する場合は、表示範囲に何もデータがないことを確認しましょう。

注意点2:元データの並び順がそのまま反映される

FILTER関数では、元データの並び順で表示されます。
並び順を変えたい場合、元データの並び替えを行うか、SORT関数を組み合わせて変更しないといけません。

簡単にやりたい場合は、事前に元データの並び替えを行っておきましょう。

まとめ|Excelの縦データは関数で横並びにできる

縦に並んだ住所データや一覧表でも、Excelの関数を使えばピボットテーブルやVBAに頼らず、横並びに整理することが可能です。

旧Excel環境では、COUNTIF関数で同じ値ごとに連番を振り、その連番をキーとしてVLOOKUP関数でデータを取得する方法が王道です。
少し手順は増えますが、仕組みを理解すれば多くの場面に応用できます。

一方、Excel 365を利用できる場合は、FILTER関数を使うことで補助列や複雑なキーを作らずに、縦データを一瞬で横並びにできます。
データの追加や変更にも自動で対応できるため、作業効率は大きく向上します。

重要なのは、自分のExcel環境に合った方法を選ぶことです。
VLOOKUPで工夫する方法を知っておけば旧環境でも対応できますし、365環境ではよりシンプルな関数を選ぶことで無駄な作業を減らせます。

本記事の内容を参考に、ぜひ日々のデータ整理や業務効率化に活用してみてください。

最後まで読んでいただき、ありがとうございました。

ろじゃー

仕事・子育てに奮闘中の社会人です。
仕事でも日常生活でも、ちょっとでも便利になることが紹介できるブログを書いています!
 
仕事柄、PC操作やエクセル、VBAなどは得意です!
Excel歴は10年以上の事務職。
関数やVBAを活用して、資料作成やデータ分析をはじめとした様々な業務の効率化・自動化に取り組んできました。
 
このブログでは、実際の業務で使える効率化テクニックを発信しています。
「わからない」や「困った」など問題を抱える方や、もっと効率化したいと思っている方に、少しでも役立てれば幸いです!

ご質問・ご相談など、お気軽にご連絡ください。

ろじゃーをフォローする
ご質問・ご相談はこちらへ!
 ろじゃー|日々、ちょっとずつ良くなることを目指すブロガー
Excel歴10年以上。VBAや関数、業務効率化などを発信中。
📩 お問い合わせはこちら
Excel
シェアする
ろじゃーをフォローする

コメント

タイトルとURLをコピーしました