いきなり答える備忘録

G Suite・Microsoft 365・LibreOfficeなどに関するメモと日々の実験

(Excel)最も多く出現する文字列を取得する

 Excelで、文字列のうち最も多く出現しているものを関数を使って取得する方法についてです。
 数値の場合はMODE関数で直ちに取得できますが、文字列の場合は少し工夫する必要があります。

  • INDEX関数やMODE関数等を組み合わせることで、最も多い文字列を取得することができます。
  • 文字列と数値が混合する場合や、数値だけの場合でも取得できます。

手順

最も多く出現する文字列を1つだけ取得する方法

f:id:accs2014:20201108123628p:plain:right:w550

 画像では、B3:B9に並んだ7つの文字列から最も多く存在するものを、関数を使って取得しています。
 D3セルに入力されている式は次のようなものです。

 D3セル

=INDEX(B2:B9,MODE(XMATCH(B2:B9,B2:B9)))

 「XMATCH(B2:B9,B2:B9)」により「それぞれの文字列が最初に出現する位置(上から何番目)」を取得しています。その結果をMODE関数で囲むことで、「最も多く出現する文字列が最初に出現する位置」を取得しています。この結果とINDEX関数を組み合わせることで、結果的に最も多く出現する文字列を取得しています。文字列の出現回数を数える必要がないところががうまい点かと思います。
 なお文字列と数値が混合する場合でも、数値だけの場合でも、最も多く出現するものを取得できます。
 ただし最も多く出現する値が2つ以上ある場合は、そのうち1つ(最初に出現するもの)だけを取得します。

最も多く出現する文字列をすべて取得する方法

f:id:accs2014:20201108123632p:plain:right:w600

 こちらの例では、最も多く出現する文字列が複数存在しており(牛丼とざるそばの2種類)、その両方の文字列を取得しています。 

 D3セル

=INDEX(B2:B9,MODE.MULT(XMATCH(B2:B9,B2:B9)))

 上記の例との違いはMODE関数をMODE.MULT関数に替えたことだけです。
 なお文字列と数値が混合する場合でも、数値だけの場合でも、最も多く出現するものを取得できます。