Web制作に限らず、業務の中でExcelやスプレッドシートを使う機会は多くあると思います。
これらはめちゃくちゃ優秀なツールなので、業務効率化において「こんなこといいな、できたらいいな」って思うことは大抵できます。
今回は、Excelやスプレッドシートである列の項目を隣の列と同じ順番に並べ替える方法をご紹介します。
コンテンツ
隣の列と同じ順番に複数の列を並べ替えるってなんや
まず、タイトルが意味するところがわかりにくいので、百聞は一見に如かずということで画像でサクッと説明します。
これが、
こうなります。
隣の列と同じ順番に複数の列を並べ替える方法
早速方法をご紹介します。
私がこの処理を実際に行なった以下のシチュエーションは、
スプレッドシートの「SEO対策用キーワード表」に対し、現状のPVを記載したい
という状況でした。
こちらを例として、順を追って解説します。
1. 並べ替え順の基準となる表を用意
例えばこんな表があるとします。(例なので無駄な項目は極力省きます)
対象ページがまだないキーワードは、タイトルおよびURLが空白になっております。
2. 並べ替えの対象となる列を用意
Googleアナリティクス等でPV数を取得し、こんな感じで表にURLとPVを貼り付けます。
ユニバーサルアナリティクスの方では、「行動>サイトコンテンツ>すべてのページ」で、ページ(URL)毎のPVを表形式でエクスポート可能です。
具体的な方法はここでは割愛いたします。
ポイントは、並べ替えの基準となる項目(今回であればURL)を、記入したい値(PV)と共に記載する点です。
このURLをキーとして、D列「URL2」とE列「PV」を、隣のC列「URL1」と同じ順番に並べ替えます。
3. VLOOKUP関数で並べ替えの準備
厳密に言うと、D列とC列を並び替えるわけではありません。
別の列に、C列の順番と同じ「URL2」と「PV」の列を作ります。
適当な空白の列、今回は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」が左端になるのでアカンです。
続いて隣のG列のセルにも同様の関数を記入します。
VLOOKUP
の3つ目の引数は、ここでは「2」を記載します。第二引数の指定範囲において「2列目」のE列を対象とするためです。
4. 隣の列と同じ順番に並べ替える
ここまでチンプンカンプンですが、これをドラッグして下方向に適用すると、
C列「URL1」の順番で「URL2」「PV」が並び変わってるじゃないすか!!
ここで最後の仕上げが必要です。
関数をコピーした範囲(F2〜G7)をコピーして、
D列&E列に「値のみ貼り付け」します。
あとは不要な列を削除すれば完了。
エクセルでも同じことができます。
便利なツールを使いこなして、非効率な無駄な時間にバイバイキーンしましょう。
参考:
Excelで隣のセルと同じ内容に列を並べ替える方法 -質問の意味がわかり- Excel(エクセル) | 教えて!goo