Web制作に限らず、業務の中でExcelやスプレッドシートを使う機会は多くあると思います。

これらはめちゃくちゃ優秀なツールなので、業務効率化において「こんなこといいな、できたらいいな」って思うことは大抵できます。
今回は、Excelやスプレッドシートである列の項目を隣の列と同じ順番に並べ替える方法をご紹介します。

隣の列と同じ順番に複数の列を並べ替えるってなんや

まず、タイトルが意味するところがわかりにくいので、百聞は一見に如かずということで画像でサクッと説明します。

隣と同じように並べ替える2

これが、

隣と同じように並べ替える7

こうなります。

隣の列と同じ順番に複数の列を並べ替える方法

早速方法をご紹介します。

私がこの処理を実際に行なった以下のシチュエーションは、
スプレッドシートの「SEO対策用キーワード表」に対し、現状のPVを記載したい
という状況でした。

こちらを例として、順を追って解説します。

1. 並べ替え順の基準となる表を用意

例えばこんな表があるとします。(例なので無駄な項目は極力省きます)

隣と同じように並べ替える1

対象ページがまだないキーワードは、タイトルおよびURLが空白になっております。

2. 並べ替えの対象となる列を用意

隣と同じように並べ替える2

Googleアナリティクス等でPV数を取得し、こんな感じで表にURLとPVを貼り付けます。

ユニバーサルアナリティクスの方では、「行動>サイトコンテンツ>すべてのページ」で、ページ(URL)毎のPVを表形式でエクスポート可能です。
具体的な方法はここでは割愛いたします。

ポイントは、並べ替えの基準となる項目(今回であればURL)を、記入したい値(PV)と共に記載する点です。
このURLをキーとして、D列「URL2」とE列「PV」を、隣のC列「URL1」と同じ順番に並べ替えます。

3. VLOOKUP関数で並べ替えの準備

厳密に言うと、D列とC列を並び替えるわけではありません。
別の列に、C列の順番と同じ「URL2」と「PV」の列を作ります。

隣と同じように並べ替える3

適当な空白の列、今回はF列のセルに以下の関数を記載します。

=IF(COUNTIF($D:$D,$C2),IF(VLOOKUP($C2,$D:$E,1,FALSE)="","",VLOOKUP($C2,$D:$E,1,FALSE)),"")

引数は適宜変えてください。

関数冒頭のIFによって、C列「URL1」が空白の場合は、F列にはなにも表示されないスマートな仕様になっております。

VLOOKUPが「#N/A」やら「#REF!」エラーになる場合

要注意なのがVLOOKUPの3つ目の引数、ここでは「1」を記載していますが、第二引数の指定範囲において「何列目か」がここで入力すべき数字です。

エクセル詳しい方は問題ないと思いますが、私はここでハマりました。
例えば今回は「D列」と「E列」が指定範囲なので、「D列=1」「E列=2」となります。

また、第二引数の指定範囲にも注意が必要です。
指定範囲において、揃える際にキーとなる項目は左端にある必要があります。

今回は「URL1」と「URL2」が揃えるためのキー項目なので、「URL2」は第二引数の指定範囲($D:$E)において左端に位置しております。

例えば、「PV」がD列で「URL2」がE列だと、「PV」が左端になるのでアカンです。

隣と同じように並べ替える4

続いて隣のG列のセルにも同様の関数を記入します。

VLOOKUPの3つ目の引数は、ここでは「2」を記載します。第二引数の指定範囲において「2列目」のE列を対象とするためです。

4. 隣の列と同じ順番に並べ替える

ここまでチンプンカンプンですが、これをドラッグして下方向に適用すると、

隣と同じように並べ替える5

C列「URL1」の順番で「URL2」「PV」が並び変わってるじゃないすか!!

ここで最後の仕上げが必要です。
関数をコピーした範囲(F2〜G7)をコピーして、

隣と同じように並べ替える6

D列&E列に「値のみ貼り付け」します。

あとは不要な列を削除すれば完了。

隣と同じように並べ替える7

エクセルでも同じことができます。

便利なツールを使いこなして、非効率な無駄な時間にバイバイキーンしましょう。

参考:
Excelで隣のセルと同じ内容に列を並べ替える方法 -質問の意味がわかり- Excel(エクセル) | 教えて!goo