図のようなデータで「1」が各セルに何個あるのか知りたいというご質問をいただきました。残念ながら専用の関数はないのでちょっと考え方を変えて対応する方法をお伝えしました。

簡単にまとめると、元データの文字数から、元データの「1」を削除したときの文字数を引き算して対応できます。

複数の関数を組み合わせて処理するので 1 つずつ作業セルでやってみましょう。

  1. 元データの文字数を調べます。セルの文字数は LEN 関数で求めます。


  2. 元データから「1」を削除した結果を調べます。
    特定の文字列を削除した結果を返すには、特定の文字列 (ここでは「1」) を空文字列 ("") に置換します。
    セル内の文字列の置換は SUBSTITUTE 関数を使った数式で処理します。


  3. 1 つ前のステップで求めた「1」を削除したときの文字数を求めます。


  4. 元データの文字数から「1」を削除したときの文字数を引き算します。


  5. 処理完了。B 列から D 列は非表示にしておけばよいでしょう。

おまけ 1

作業セルを使わずに 1 つのセルに 1 つの数式で算出したい場合はこちら↓なのですが・・・

無理をせずに、ここまでの作業で作成した数式をコピーして組み込んでいけばよいです。

たとえば、D 列の数式ではセル C2 を参照しているのだから、セル C2 の数式をコピーして貼り付ければよいですね。

同じように、最終的な結果を表示するセルに作られた数式のセル参照を確認して、該当するセルの数式をコピーして貼り付けましょう。

おまけ 2

数えたい文字列が 2 文字以上の場合はちょっと工夫が必要です。

たとえば「AB」で 1 セットとして何セットあるかを調べたいときには、最後に対象とする文字数で割り算します。

「ABCABC」の「AB」の数を知りたいときに「1」のときと同じ処理をすると「4」が返りますが、知りたいのは「何セットか」なので「AB」の文字数である 2 で割らないといけません。最初の引き算を先にするための括弧も忘れずに。


やりたいことにぴったりの関数がないことってたくさんあります。どちらかというと実務でそれなりの処理を使用としたときには関数を単体で使うケースのほうが少ないのではないでしょうか。関数を組み合わせてやりたいことをする、その一例ですね。

長い数式は無理せずに、作業セルを使って 1 つずつ処理を確認して最後にがっちゃんこしましょう。

石田 かのこ