365・LibreOfficeなどに関するメモ2020-11-08(Gスプレッドシート)最も多い文字列を取得するGoogleスプレッドシートGoogleスプレッドシートで、多数の文字列のうち最も多く出現しているものを、関数を使って取得する方法についてです。数値の場合はMODE関数が使えますが、文字列の場合は少し工夫が必要です。INDEX関数やMODE関数等の組み合わせにより、最も多い文字列を取得することができます。文字列と数値が混合する場合や、数値だけの場合でも取得できます。多い値が複数ある場合にすべてを取得するには、別の式を考える必要があります。画像では、B3:B9に並んだ7つの文字列から最も多く出現しているものを関数で取得しています。D3セルに入力されている式は次のようなものです。D3セル=INDEX(B2:B9,MODE(MATCH(B2:B9,B2:B9,0)))「MATCH(B2:B9,B2:B9,0)」により、「それぞれの文字列が最初に出現する位置」を取得しています。それをMODE関数で囲むことにより、「最も多く出現する文字列が最初に出現する位置」を取得しています。この値をINDEX関数と組み合わせることで最も多く出現している文字列を取得しています。MATCH関数が「最初の出現位置」を取得することを利用していてなかなか巧妙です。文字列と数値が混じっている場合でも最も多く出現するものを取得できます。数値だけでも同様です。多く出現する値が2つ以上ある場合でも、そのうち1つ(最初に出現するもの)しか取得できません。多い文字列をすべて取得する方法こちらの例では、最も多く出現する文字列が複数存在します(ラーメンとカレーの2種類)。上記の例の式中のMODE関数をMODE.MULTに変更してARRAYFORMULAを加えれば両方取得できそうに見えますが、INDEX関数との相性が悪いため実際には1つしか取得できません。そこでもう少し地道な式で2つの文字列を取得しています。D3セル=UNIQUE(FILTER(B3:B9,COUNTIF(B3:B9,B3:B9)=MAX(COUNTIF(B3:B9,B3:B9))))FILTER関数を使ってそれぞれの文字列とその出現回数(「COUNTIF(B3:B9,B3:B9)」)を結び付け、出現回数が最も多いものを抽出しています。文字列の重複が生じるため、最後にUNIQUE関数で重複を除いています。文字列と数値が混じっている場合でも最も多く出現するものを取得できます。数値だけでも同様です。365はデスクトップ版、LibreOfficeは記事作成時の安定バージョンを用いた結果を示しています。サイトポリシー等についてはこちらをご覧ください。(1)検索スポンサーリンク引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。