• ベストアンサー

エクセルで文字をカウントしたいのですが…

どの関数を使えばいいのか分からなかったので質問させて頂きました。 例えばA1セル~D1セルに 1,2,3,4と入力した場合E1セルに「4」 1,1,1,2と入力した場合E1セルに「2」 2,2,3,4と入力した場合E1セルに「3」 となるような関数はないでしょうか? ようはA1,B1,C1,D1の4つのセルに何種類の数字が あるかをE1セルに出したいのです。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

No.1です。 数式、 =SUMPRODUCT(1/COUNTIF(A1:D1,A1:D1)) は、配列数式になっています。 配列数式の詳細は以下のページを熟読して下さい。 http://pc21.nikkeibp.co.jp/special/hr/ 配列数式では、通常ある値や1つのセルを指定する場所に、セル範囲を指定することで、その範囲内の個々のセルに対して、それぞれ数式を実行します。 つまり、 1/COUNTIF(A1:D1,A1:D1) というのは、 1/COUNTIF(A1:D1,A1) 1/COUNTIF(A1:D1,B1) 1/COUNTIF(A1:D1,C1) 1/COUNTIF(A1:D1,D1) という4つの数式を個々に実行しているのです。 これらを、F1:I1に「=」付きで順に入力してみて下さい。 そして、このF1:I1に対して、 =SUMPRODUCT(F1:I1) としてみて下さい。 同じ結果になります。 このように、個々の計算結果をいったんどこかに書き出さずに、1つの数式で処理してしまうのが、配列数式です。 さて、配列数式とは別に、 1/COUNTIF(A1:D1,A1) のようにして、これを合計すると何故種類数になるのか、です。 COUNTIFは、A1が範囲内に何個あるかです。 3個ある場合は1/3です。 そして、仮にB1、C1がA1と同じなら、それぞれ、1/3になり、 結局、1/3×3=1になるのです。 つまり、 1/aがa個で1 1/bがb個で1 1/cがc個で1 ・・・・・ となるので、合計すると種類数になるのです。

参考URL:
http://pc21.nikkeibp.co.jp/special/hr/
grapo
質問者

お礼

うは~感服致します。 配列数式なんて初めて知りました! これからじっくり勉強してみます。 それに何故種類数になるのか、の式も 私では絶対思いつかなかっただろうな… 詳しく説明して頂いてありがとうございました!

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 =SUMPRODUCT(1/COUNTIF(A1:D1,A1:D1)) です。

grapo
質問者

お礼

ありがとうございます!バッチリできました! でも…非常に恐縮なんですが式の意味が分かりません。 SUMPRODUCTとCOUNTIFの関数は分かるのですが この組み合わせで何故こういう結果になるのか 分かりません。 COUNTIF(A1:D1,A1:D1)は何を意味しているのでしょうか? これだけだと「0」になりますよね、とすると =SUMPRODUCT(1/0) でエラーになってしまいます。。?? もしお時間があれば教えて頂けないでしょうか。 宜しくお願いします。

関連するQ&A