定時で上がろう! Excel関数の底力 第68回 スピル出力されたデータを並べ替える、関数SORTの使い方

2024年3月11日(月)11時0分 マイナビニュース

今回は、データを「昇順」や「降順」に並べ替える関数SORTの使い方を紹介する。Excelにはデータを並べ替える機能が用意されているため、「わざわざ関数を使って並べ替える必要はないのでは?」と思う方もいるだろう。しかし、今後、スピルを積極的に活用していくには、関数SORTが不可欠の存在となる。詳しく説明していこう。
関数SORTの基本的な使い方
2019年12月にリリースされたSORTは、FILTERやUNIQUEなどと同じタイミングで公開された関数で、最新版のExcel 2021またはMicrosoft 365でのみ使用できる関数となる。
今回は、この関数SORTを使ってデータを「昇順」や「降順」に並べ替える方法を紹介していこう。今後、「スピルを積極的に活用していきたい」と考えている方は、必ず覚えておくべき関数といえるだろう。
最初に、関数SORTの書式から紹介していこう。関数SORTの引数には、以下に示した値を指定すればよい。
◆関数SORTの書式
=SORT(配列、[インデックス番号], [昇順/降順], [並べ替え方向])
・配列
データを並べ替えるセル範囲を指定する。このセル範囲は「見出し」を除いた形で指定するのが基本だ。
・インデックス番号
何番目の列(または行)を基準に並べ替えるかを指定する。省略すると「1」が指定されたとみなされる。
・昇順/降順
昇順の場合は「1」、降順の場合は「-1」を指定する。省略すると「1」(昇順)が指定されたとみなされる。
・並べ替え方向
データを並べ替える方向を指定する。行の場合は「FALSE」、列の場合は「TRUE」を指定する。省略すると「FALSE」(行の並べ替え)が指定されたとみなされる。
簡単な例を使って具体的に解説していこう。以下の図は、北海道から愛知県までの「人口」と「人口密度」をまとめた表だ。この表を関数SORTで並べ替えてみよう。
まずは「人口」の少ない順(昇順)に並べ替える場合について紹介する。第1引数には、データを並べ替えるセル範囲を「見出しを除いた形」で指定する。続いて、第2引数に「基準とする列」を指定する。今回は「人口」の列(2列目)を基準にならべかえるので「2」を指定すればよい。
「Enter」キーを押して関数SORTを実行すると、「人口」の少ない順(昇順)に並べ替えたデータが表示される。
なお、関数SORTはデータを配列としてスピル出力するのが基本になるため、関数を入力したセルの下方向や右方向には「十分な広さの空白セル」を確保しておく必要がある。ここに何らかのデータが入力されていると、「#スピル!」のエラーが発生する。注意しておこう。
続いては、「人口密度」の大きい順(降順)に並べ替える例を紹介していこう。この場合は3列目が並べ替えの基準になるので、第2引数に「3」を指定する。また、降順に並べ替えるため、第3引数に「-1」を指定する。
最後は、データを列方向に並べ替える場合の例だ。この場合は、第4引数に「TRUE」を指定する。今回は、第2引数に「3」、第3引数に「1」を指定しているので、3行目(駅徒歩)の値が小さい順(昇順)にデータが並べ替えられることになる。
このように関数SORTを使ってデータを並べ替えることも可能だ。とはいえ、Excelには「データを並べ替えるコマンド」が標準装備されているため、わざわざ関数SORTを利用する意味が見当たらない。
普通にコマンドでデータを並べ替えた方が圧倒的に簡単であるし、「元の表」と「並べ替えた表」の2つが存在する、という面倒な状況も回避できる。よって、通常は関数SORTを使用する機会は滅多にないといえる。
スピル出力されたデータの並べ替え
では、どのような場合に関数SORTが役に立つのだろうか? これまでの連載でも少し触れているが、“おさらい”の意味も兼ねて丁寧に説明していこう。
以下の図は、「社名」と「氏名」が重複しているデータを関数UNIQUEで削除した例だ。状況が分かりやすいように、セルに色を付けて関数UNIQUEの結果を示している(詳しくは第66回の連載を参照)。
この出力結果は「社名」がバラバラに並んでいるため、連絡先としては見づらい表になっている。そこで「社名」を基準にデータを並べ替える操作を行ってみると……、「配列の一部を変更することはできません。」という警告画面が表示され、操作が却下されてしまう。
この警告は「スピル出力されたデータは並べ替えられない」ということを示したものだ。残念なことに、スピルにより一括取得したデータは「並べ替え不可」という仕様になっている。
この問題を解決してくれるのが関数SORTだ。以下の図は、関数UNIQUEで取得したデータ(配列)を関数SORTで並べ替えた例だ。
関数SORTの第2引数以降を省略しているため、1列目(社名)の「昇順」にデータを並べ替えた結果がスピル出力されることになる。
これで「社名」の順番にデータを並べ替えられたことになるが、よく見ると正しい50音順になっていないことに気付くと思う。正しい50音順であれば「麒麟設計」(キリンセッケイ)は、「山猫工務店」(ヤマネココウムテン)よりも前に位置していなければならない。
これは関数でデータを取得した際に“ふりがな”の情報が抜け落ちてしまうことが原因だ。念のため、すべてのセルの“ふりがな”を表示した図を示しておこう。
通常、関数は「各セルの値」だけを取得する仕様になっている。このため、その出力結果は“ふりがな”が欠落した状態になる。これでは、漢字を含む日本語を正しい50音順に並べ替えられない。関数SORTは“ふりがな”ではなく、文字コード順にデータを並べ替える機能となることを覚えておく必要がある。
日本語を正しい50音順に並べ替えるには?
漢字を含む日本語を正しい50音順に並べ替えるには、「ひらがな」や「カタカナ」で“読み”を示した列を用意しておく必要がある。
各セルに記録されている“ふりがな”の情報を「データ」として取得したいときは、関数PHONETICを使用すればよい。
続いて、この関数をオートフィルでコピーすると、すべての「社名」の“ふりがな”をデータとして扱えるようになる。
あとは、この「社名カナ」を基準にデータを並べ替えるだけ。今回の例の場合、B列〜D列の重複データを関数UNIQUEにより除外し、その結果を2列目にある「社名カナ」の昇順に並べ替える、という処理を行えばよい。これを関数で記述すると以下の図のようになる。
このように処理すると、重複データを除外した形で「社名」の50音順に並べ替えたデータを取得することが可能となる。
関数SORTは、スピル出力されたデータ(配列)を並べ替えるときに活用できるが、完全に日本語対応している訳ではない。文字列データを正しい50音順にするには、あらかじめ“ふりがな”の列を用意しておき、その列を基準にデータを並べ替える必要がある。関数SORTを利用するときは、この点に注意しておこう。
なお、関数SORTとよく似た関数として「SORTBY」という関数も提供されている。こちらは、複数の列を基準にデータを並べ替えることができる関数だ。関数SORTの使い方を理解できていれば特に戸惑うことなく応用できると思うので、気になる方は使い方を調べてみるとよいだろう。

マイナビニュース

「Excel」をもっと詳しく

タグ

「Excel」のニュース

「Excel」のニュース

トピックス

x
BIGLOBE
トップへ