いまさら聞けないExcelの使い方講座

【Excel】返品リストで製品不良の原因の数が多い順にデータを並べ替えるには?

データの出現順に並べ替えたい!

データの出現順に並べ替えたい!

 表のデータを並べ替える場合、数値の大小や五十音順などが定番ですよね。しかし、実務では「どの項目がいちばん多いのか」を知りたい場面も少なくありません。

 例えば、以下は製品の不良理由をまとめた表です。「動作不具合」「梱包不良」「納期遅れ」と入力されていますが、この列を五十音順で並べ替えてもあまり意味はありません。

製品の「不良の理由」は何が多いのかを調べたいのですが、[不良理由]列を昇順で並べ替えても(①)はっきりわかりません

 このように、どれが最も多いのかをランキングしたい時に役立つのが、COUNTIF関数とSORTBY関数の組み合わせです。件数を数えるCOUNTIFと、それを基準に並べ替えるSORTBYを組み合わせることで、「出現回数順のランキング」を簡単に作成できます。

COUNTIF関数でデータの数を数える

 まずは、COUNTIF関数を使って「不良理由」の件数を数えましょう。ここでは、スピルを利用して、以下のような数式をセルD2に1つ入力するだけでデータの件数を求めます。

=COUNTIF(C2:C21,C2:C21)

 引数[範囲]も[検索条件]も同じ「C2:C21」なので、違和感があるかもしれませんが、スピルを利用する場合はこのように記述できます。数式をコピーしないため、[範囲]を絶対参照にする必要もありません。

セルD2に「=COUNTIF(C2:C21,C2:C21)」と入力した結果です(②)。数式の結果はスピルで表示されます

SORTBY関数で降順に並べ替える

 それぞれの値に対応する件数が見えており、ほとんど結論は出ていますが、さらに一歩進めて並べ替えたいところです。SORTBY関数を使います。データのセル範囲と並べ替えの基準とするセル範囲を指定して、データを並べ替えられます。

SORTBY関数の構文。引数[配列]に元のデータのセル範囲を指定します。並べ替えの基準となるセル範囲を[基準配列]に指定して、[並べ替え順序]に並べ替えの順序を指定します。「1」は昇順、「-1」は降順で、省略した場合は「1」(昇順)と見なされます

 ここでは、SORTBY関数を使って以下のように入力します。

=SORTBY(A2:C21,D2#,-1)

 「D2#」はスピル範囲演算子と呼ばれ、セルD2に入力されているスピルの結果を指します。つまり、ここではCOUNTIF関数の結果であるセルD2~D21を指します。引数[並べ替え順序]は「-1」としているので、降順です。

セルF2に「=SORTBY(A2:C21,D2#,-1)」と入力します(③)
並べ替えの結果がスピルで表示されました。基準としたセル範囲(D2~D21)の降順で並べ替えられていることがわかります(④)

1つの式で表現する

 前述のCOUNTIF関数の数式とSORTBY関数の数式は、以下のように1つにまとめて記述することも可能です。

=SORTBY(A2:C21,COUNTIF(C2:C21,C2:C21),-1)

セルE2に「=SORTBY(A2:C21,COUNTIF(C2:C21,C2:C21),-1)」と入力した結果です(⑤)。先ほどと同じ結果になっていることがわかります

 営業訪問先の出現頻度を集計したり、アンケート結果をカテゴリ別に整理したりと、このテクニックはさまざまな場面で応用できます。シンプルな数式で実務にも応用しやすい方法です。ぜひ試してみてください。