Excel。SORT関数は、範囲または配列を並べ替えます
<関数辞典:SORT関数>
SORT関数
読み方: ソート
分類: 検索/行列
SORT(配列,[並べ替えインデックス],[並べ替え順序],[並べ替え基準])
範囲または配列を並べ替えます
【Excel・Word・PowerPoint・Access】あなたの「困った」を解決!10年以上の経験が詰まった、現場の疑問から生まれた実践テクニック集。作業効率を劇的に上げるOffice活用術をお届けします。
SORT関数
読み方: ソート
分類: 検索/行列
SORT(配列,[並べ替えインデックス],[並べ替え順序],[並べ替え基準])
範囲または配列を並べ替えます
3つの表があります。
全てのグラフを範囲選択して、集合縦棒グラフを作ってみます。
A1:B5・A7:B10・A12:B14 を範囲選択します。
集合縦棒グラフが挿入されますが、よくみると不思議な空間があります。
2つめ、3つめの見出し行がプロットされてしまっていることがわかります。
どうやら、1つめ以外の見出し行は、範囲選択してはいけないようです。
改めて、A1:B5・A8:B10・A13:B14 を範囲選択します。
集合縦棒グラフを作ってみます。
ただできるのですが、例えば、データを降順で並べ替えたグラフにしたい場合、単純に範囲選択するだけではできません。
一度、表をつくって降順に並べ替える必要があります。
そこで、SORT関数とVSTACK関数を組み合わせて、表をつくります。
=SORT(VSTACK(A2:B5,A8:B10,A13:B14),2,-1)
これで、3つの表を1つの表にして、さらに、販売金額を降順で並べることができます。
あとは、D1:E10を範囲選択して、集合縦棒グラフを作ってみます。
集合縦棒グラフをつくることができました。
では、最後に、1つの表にするために設定した数式を確認しておきましょう。
=SORT(VSTACK(A2:B5,A8:B10,A13:B14),2,-1)
VSTACK関数から説明します。VSTACK関数は、複数範囲を合体することができます。
VSTACK(A2:B5,A8:B10,A13:B14)
これで、1つの表になったので、この表を並べ替えるためにSORT関数をつかいます。
SORT関数の最初の引数は、配列。
範囲ですので、VSTACK(A2:B5,A8:B10,A13:B14)
2つ目の引数は、並べ替えインデックス。どの列を並べ替えるのかということで、販売金額で並べ替えたい。
販売金額は2列目なので 2 と設定します。
3つ目の引数は、並べ替え順序。
昇順か降順かということをきいています。
昇順なら1。
降順なら-1を設定します。
降順にしたいので、-1を設定します。
氏名が入力されている3つの表があります。
コピペするのも悪くはありません。
ただし、データ量が増えれば増えるほど、面倒です。
データを1列にまとめるならば、VSTACK関数がおすすめです。
G2に次の数式を設定します。
VSTACK関数は、列結合する関数なので、引数には、結合したい元の列を範囲選択するだけです。
このVSTACK関数は、スピル機能対応の関数なので、オートフィルで数式をコピーは不要です。
簡単に結合することができましたので、重複したデータを除きたいと思います。
重複データを除くには、データタブにある「重複の削除」をつかいたいところですが、スピル機能によって、ゴーストとして表示されています。
データそのものがあるわけではありません。
そのため、データタブの「重複の削除」はつかえません。
ここは、UNIQUE関数をつかうことで、重複データを除くことができます。
数式にUNIQUE関数を追加してみます。
=UNIQUE(VSTACK(A2:A5,C2:C5,E2:E5),FALSE,FALSE)
これで、重複データを除くことができました。
UNIQUE+VSTACK関数のネストです。
修正した数式を確認します。
最初の引数は、配列。範囲なので、VSTACK関数を設定します。
2つ目の引数は、列の比較。FALSEと設定します。
「一意の行」を返すことができます。
3つ目の引数は、回数指定。
FALSEと設定します。
個別のアイテムをすべて返すことができます。
最後に、カタカナなので、五十音順。
つまり昇順にしたいのですが、スピル機能のゴーストである以上、並べ替えをつかうことはできません。
並べ替えの関数であるSORT関数をつかうことで、対応することができます。
数式をさらに修正します。
G2の数式は、SORT+UNIQUE+VSTACK関数のネストになりました。
=SORT(UNIQUE(VSTACK(A2:A5,C2:C5,E2:E5),FALSE,FALSE),1,1,FALSE)
これで、並べ替えを行うことができました。
追加したSORT関数についても確認しておきましょう。
最初の引数は、配列。
範囲選択なので、UNIQUE関数の数式を設定します。
2つ目の引数は、並べ替えインデックス。
何番目の列を基準にするのかということです。
今回は、1列しかありませんので、1と設定します。
3つ目の引数は、並べ替え順序。
1なら昇順で2なら降順です。
五十音順なので1と設定します。
4つ目の引数は、並べ替え基準。
TRUEならば、列で並べ替えすることができますが、行での並べ替えなので、FALSEと設定します。
このように、最近追加された、関数を組み合わせてスピル機能と合わせてつかうことで、並べ替えや重複対応をした表をつくることができるようになりました。
3つの地域の売上表があります。
A1:D4には、関東地区。
F1:I3には、関西地区。
そして、K1:N3には、九州地区の販売データがあります。
これを、A6から起点とする表に転記し、結合。
要するに、合体させます。
ただ、合体するのではなく、販売金額を降順で並べ替えした表にしたい。
コピペで貼り付けて、その後並べ替えするのでもいいのですが、少し面倒です。
また、Excel VBAでプログラム文をつくるというのも、面倒です。
そこで、今回は、SORT関数とVSTACK関数を組み合わせた数式で対応しようと思います。
A7をクリックします。
次の数式を設定します。
=SORT(VSTACK(A2:D4,F2:I3,K2:N3),4,-1,FALSE)
数式を確定して確認します。
では、数式を確認します。
SORT関数は、並べ替えをする関数です。
最初の引数は、「配列」。
範囲です。
この範囲は、合体したデータなので、それぞれの表を合体させるのがVSTACK関数です。
VSTACK関数の説明は後述します。
先に、SORT関数の確認を続けます。
SORT関数の2つ目の引数は、「並べ替えインデックス」。
どの列を並べ替えの条件とするかということです。
左から4番目の販売金額で並べ替えをしますので、4と設定します。
3つ目の引数は、「順序」。
昇順で並べ替えならば、1。
降順で並べ替えならば、-1を設定します。
降順で並べ替えをしたいので-1と設定します。
4つ目の引数は、「方向」。
列方向で並べ替えをするならば、TRUE。
行方向で並べ替えをするならば、FALSEと設定します。
今回は、行方向で並べ替えをしますので、FALSE と設定します。
これで、並べ替えを行うことができます。
最初の引数で使用するVSTACK関数ですが、これは、合体したいデータを設定するだけなので、見出し行をのぞいた、それぞれの地域
関東のA2:D4
関西のF2:I3
九州のK2:N3
を設定するだけです。
VSTACK関数は、指定した範囲を結合する関数です。
なお、このVSTACK関数は、便利な関数ですが、Microsoft365など、比較的新しいバージョンに登録されていますので、ご注意ください。
分析の一つのデータに「最頻値」というのがあります。
最頻値は、データ内で一番多くあるデータです。
その最頻値を求めるには、MODE.SNGL関数というのが用意されています。
では、次のデータで、一番多い都道府県名を求めてみましょう。
=MODE.SNGL(B2:B16)
ところが、#N/Aというエラーが表示されてしまいました。
原因は、どこにあるのでしょうか。
数値1・数値2…となっています。
つまりMODE.SNGL関数は数値ならば、最頻値を求めることができるのですが、都道府県名という文字列では、最頻値を求めることができません。
ピボットテーブルをつかうのもいいのですが、今回は関数で対応していきます。
=UNIQUE(B2:B16)
UNIQUE関数は、データから重複を除いた、一意のデータを抽出することができる関数です。
まずは、重複を除いた一意のデータを抽出します。
UNIQUE関数は、スピル機能対応の関数なので、D3以降は、ゴーストが発生します。
よって、オートフィルで数式をコピーする必要はありません。
続いて、件数を求めます。
単一条件の件数を求めるので、COUNTIF関数をつかいます。
E2をクリックします。
=COUNTIF(B2:B16,D2#)
スピル機能対応の設定にしましたので、ゴーストが発生します。
引数の最初の範囲は、B2:B16
2つ目の引数は、検索条件。
D2#とします。
「#」は、範囲内の1件という意味です。
これで、最頻値を求めることができました。
ただ、できることならば、件数が多い順にしたいわけですが、一つの表ではないので、件数を降順にするわけにはいきません。
そこで、SORT関数をつかって、新たに表を作ります。
これで、件数が降順のリストをつくることができました。
最頻値は、千葉県であることが、よりわかりやすくなりました。
このSORT関数もスピル機能対応の関数なので、オートフィルで数式をコピーする必要はありません。
引数も確認しておきましょう。
最初の引数は、配列。D2:E7を設定します。
2つ目の引数は、「並べ替えインデックス」。
どの列で並べ替えるのかということなので、2列目ですから、2と設定します。
3つ目の引数は、「並べ替え順序」。
降順にしたいので、「-1」で設定します。
4つ目の引数は、「並べ替え基準」。
行で並べ替えをしますので、FALSEで設定します。
新しく追加された関数を組み合わせてつかうことで、文字列の最頻値を求めることができました。
今回は関数という条件をつけましたが、ピボットテーブルをつかえば、もっと手早く求めることができます。
重複データを取り出す方法は色々あります。
ただ、組み合わせが重複しないようにデータを取り出すには、どうしたらいいのでしょうか。
商品名だけで重複をのぞくと、色鉛筆とポールペンの2つだけで抽出されます。
ただ、今回は、商品名と色を組み合わせで重複しないデータを抽出したいわけです。
A1:C11の元データはそのままにしておき、該E2当するデータを別の場所に抽出しますので、ここは、UNIQUE関数をつかうことにしてみます。
UNIQUE関数は、一意のデータを取り出すことができる関数です。
この関数は、組み合わせにも対応しています。
では、E2にUNIQUE関数をつかった数式を設定します。
E2に設定した数式は、
=UNIQUE(B2:C11)
これで、商品名と色の組み合わせが重複しないリストを作ることができました。
リストを抽出、作成することはできたのですが、並びがバラバラです。
そこで、SORT関数を加えることで、商品名ごとにまとめたリストにすることができます。
=SORT(UNIQUE(B2:C11),1,1,FALSE)
これで、商品名別で並べることができました。
SORT関数の引数を確認しておきます。
最初の関数は、配列。範囲です。
今回はUNIQUE関数の抽出結果です。
2つ目の並べ替えインデックスは、並べ替えの基準になる列です。
左から何列目なのかという設定をします。
今回は、商品名ごとなので、1と設定します。
3つ目の並べ替え順序は、昇順・降順設定です。
昇順でも降順でも構いませんが、昇順の1で設定しました。
4つ目の並べ替え基準は、列なのか行なのか、どちらが対象なのかという設定です。
行が対象になりますので、FALSEで設定します。
2行1組のデータから、1行おきにデータを抽出したいのですが、抽出後、並べ替えをするなら、抽出した時に、並べ替えが終わっていたら、作業効率がいいわけですね。
次の表をつかって、説明します。
売上高だけのデータを抽出して、さらに、6月の売上高を降順にしたいとします。
オートフィルター機能をつかったとしても、ちょっと面倒な作業なわけですね。
ところが、SORT関数とFILTER関数を組み合わせてつかうことで、手早く抽出して並べ替えもおこなうことができます。
A12に次の数式を設定します。
=SORT(FILTER(A2:E9,B2:B9="売上高"),5,-1,FALSE)
これで、売上高のデータで6月のデータの降順で抽出することができました。
そして、この数式は、オートフィル機能をつかわなくても、スピル機能によって、自動的に数式が拡張されます。
では、数式を確認していきましょう。
SORT関数は、並べ替えを行う関数です。
最初の引数は、「配列」。
つまり範囲選択ですね。
ここにFILTER関数をネストしてます。
FILTER関数の説明はあとに回します。
2番目の引数は「並べ替えインデックス」。
左から何列目を並べ替えの対象としますかという設定です。
6月で並べ替えをしたいわけですから、左から5つ目なので、「5」
3番目の引数は「並べ替えの順序」。
「-1」を設定することで降順と指示できます。
ちなみに「1」だと昇順です。
最後の引数は「並べ替えの基準」。
「FALSE」の「行で並べ替え」を設定します。
「TRUE」にすると、「列で並べ替え」を設定できます。
「配列」で設定したFILTER関数も確認しておきます。
最初の引数は、「配列」。
範囲選択ですね。
「A2:E9」を設定します。
2番目の引数は、「含む」。
これが条件に該当します。
「B2:B9="売上高"」とすることで、B2:B9で売上高が対象にすることができるというわけですね。
FILTER関数と色々な関数を組み合わせて使ってみることで、意外な方法が見つかるかもしれませんね。
今回は、SLN関数~SORTBY関数までをご紹介しております。
SLN関数
読み方: エスエルエヌ
読み方: ストレートライン
分類: 財務
SLN(取得価額,残存価額,耐用年数)
減価償却費を定額表で算出します
Straight LiNe depreciationの略
SLOPE関数
読み方: スロープ
分類: 統計
SLOPE(既知のy,既知のx)
回帰直線の傾きを算出する
SMALL関数
読み方: スモール
分類: 統計
SMALL(配列,順位)
指定した○番目に小さい値を算出します
SORT関数
読み方: ソート
分類: 検索/行列
SORT(配列,[並べ替えインデックス],[並べ替え順序],[並べ替え基準])
範囲または配列を並べ替えます
SORTBY関数
読み方: ソートバイ
分類: 検索/行列
SORTBY(配列,基準配列1,[並べ替え順序1],…)
範囲または配列を、対応する範囲または配列の値に基づいて並べ替えます
テーブル機能を追加した表を「並べ替え」するだけなら、いつものように並べ替えボタンを使うとか、昇順や降順といったボタンを使えばいいわけです。
ただ、並べ替えを実施した後に、そのデータを抽出というかコピーするとしたら、一度で出来る方が、作業効率的に、わざわざコピー&ペーストしなくても、いいわけですね。
それができるのが、SORT関数です。
次の表を使って説明します。
このテーブルのD列の売上高フィールドを降順としたデータを抽出したいわけです。
そこで、F2に次の数式を設定します。
=SORT(売上表2月,4,-1)
たったこれだけで、OKです。スピル機能があるので、オートフィルで数式をコピーする必要もありません。
とても便利なSORT関数なのですが、日付型データが含まれている場合、表示形式が解除されてシリアル値に戻ってしまうため、あとで、表示形式を再度設定する必要があります。
あと、SORT関数の引数も確認しておきましょう。
SORT(配列,[並べ替えインデックス],[並べ替え順序],[並べ替え基準])
なお、「並べ替え順序」ですが、昇順は「1」で降順は「0」ではなく「-1」です。
Excelで並べ替えをする場合、昇順降順のボタンや、並べ替えボタン。
あるいは、オートフィルターをつかっての並べ替えなど、様々な方法があります。
並べ替えをしたデータを別シートに転記したい場合、どの方法でも、元データを並べ替えしてからでないと、転記することはできません。
どのようにしたら、手早くおこなうことができるのでしょうか?
例えば、次のデータ。
今回のデータは、連番のNOフィールドがあるので、並べ替えをして、処理をした後でも、元に戻せますが、NOフィールドのようなデータが無い場合は、並べ替えてしまうと、元に戻すことが難しいわけです。
なので、今回紹介する方法を知っていると手早く処理を行うことができます。
その方法とは、SORT関数をつかいます。
準備として、転機先のシートに見出し行をコピーしておきます。
A2に設定する数式は、
=SORT(成績シート!A2:F6,6,-1,FALSE)
数式を確定すると、スピル機能によって、自動的に、数式がコピーされるので、合計フィールドが降順のデータで表示されていることが確認できます。
最初の引数は、配列。
まぁ、対象範囲ですね。
今回は、データがあるシートの、A2:F6が対象です。
2番目の引数は、
並べ替えインデックス。
並べ替えを行いたい列番号です。
今回は、合計フィールドなので、配列(範囲)の左側から、「6」番目にあるので「6」。
3番目の引数は、並べ替え順序。
昇順なのか降順なのかを設定することが出来ます。
昇順なら「1」。降順なら「-1」。
最後の引数は、
並べ替え基準。
列で並べ替えをするのか、行で並べ替えをするのかを設定することができます。
列ならば「TRUE」、行ならば「FALSE」と設定します。
引数の設定もわかりやすい関数ですので、色々試してみるといいかもしれませんね。