• ベストアンサー

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

どの関数を使えばいいのか分からなかったので質問させて頂きました。 例えば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セルに出したいのです。 宜しくお願いします。

  • grapo
  • お礼率77% (380/491)

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

  • ベストアンサー
  • 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

  • エクセルの関数をご教授ください

    エクセル2007のやり方(関数?)を教えていただければ幸いです。 (OSはXP) どういう場合のやり方かと申しますと 1. セルAに一定の数字・文字を入力すると、応じてセルBに一定の数字が反映される。 例えば、 (1)A1に「5」と入力すると→B1が「40」となる、(2)A2に「4IIIa」と入力するとB2が「35」になる という具合です。セルAは数字のみでなく文字の場合もあります。セルBは数字のみです。 上のような場合に対応できるようなやり方を教えていただければ幸いです。 2. セルCに一定の数字・文字を入力すると、応じてセルDとEに一定の数字・文字が反映される。例えば、 (1)セルC1に「イ」と入力すると→D1が「4割以上」となり→E1が「20」となる、(2)セルC2に「ロ」と入力すると→D2が「2割未満」となり→E2が「10」となる という具合です。セルCとDは数字のみでなく文字の場合もあります。セルEは数字のみです。 上のような場合に対応できるようなやり方を教えていただければ幸いです。 お知恵を拝借できればと思います。 よろしくお願いいたします。

  • エクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ、「右詰」で移したい

    以前に エクセルのセルに入れた文字あるいは数字を別なセルに1文字づつ移したい、ということで質問しまして、「MID関数を利用する」事で、先頭文字から一文字ずつ別々なセルに移すことが出来ましたが、スミマセンが次のような場合はどのような関数になるのでしょうか? 例えば「番地などの表示」等で1桁の場合もあれば、5桁あるいは6桁等々の場合もあるとします。これを別なセルに下一桁を合せる様にしたいのです。 例としまして セルA1に1桁~6桁の数字(例:345678)を入力した場合、これを右側のB1には3を、同様にC1には4を、D1=5、E1=6、F1=7、G1=8を関数で入力できるようにしたい。 問題は、桁数が毎回違う場合にG1に下一桁が来るようにしたいのですがRIGHT関数では下一桁だけ応答されるのは上手くいくのですが、下二桁、三桁以上の場合には上手くいきません。 つまり「A1に789」の数字を入力したら、G1=9が、F1=8が、E1=7が応答されるようにしたいのです。 勿論、5桁の場合にはB1が空欄で、C1、D1、E1、F1、G1が埋まる様に、4桁であればB1とC1が空欄で、D1~G1が埋まるように、三桁の場合にはB1~D1が空欄でE1~G1が埋まるようにですが、出来ますでしょうか?? よろしくご教授お願いします。

  • EXCEL、文字の数をカウントしたい。

    エクセル関数を使って、文字(100文字以上)の数をカウントしたいのですが、可能でしょうか。 例えば:セルに一つずつ、ABCAAACDを入力した場合に、A=4、B=1、C=2、D=1 のように表示したいんです。 ※Aを数える場合に、IF関数を使ってAのとき1となるように IF(A1="A",1)+IF(A2="A",1)+・・・+・・・のように順次足していけば短い文字であれば可能ですが、文字数が多くなってくると、セル内に関数がはいりきらずに計算できなくなります。別の関数をつかってより簡単に計算できないでしょうか?

  • Excelのif関数を使ったのですがうまくいきません。

    Excelのif関数を使ったのですがうまくいきません。   | A | B | C | D | E ----------------------- 1 | A | A | A | A | 5 2 | B | A | A | B | 4 3 | C | C | A | C | 2 のようにA1~D4のセルに入力されたA,B,C の組み合わせによって E5のセルに1~5の数字を入れていきたいのですがAAAA~CCCCの組み合わせが 15通りあってif関数では入れ子ができません。 AAABもAABAも同じと判断させて1~5の数字を自動的に入力させたいのですが 何かいい方法はないでしょうか。 教えてください。

  • エクセル関数の質問です。

    エクセルでセルA1=4の場合セルB2=セルD1、セルA1=5の場合セルB2=セルE1、セルA1=6の場合セルB2=セルF1というように、セルA1に数字を入力するとセルB2に反映するようなセルB2に入力する関数を教えて下さい。  セルA1には月(4月から3月)の数字(4~12、1~3)が入り、4月のときにはD列(D1)、5月のときにはE列(E1)、6月~3月にはF列(F1)~O列(O1)の数字が入ります。よろしくお願い致します。

  • エクセル2000 同じ文字が入力されている個数を集計する

    A列には1~47の数字が200行まで入力されているものとします。 1 a c f e d 2 b a e d c 2 c d d f b 2 a f c a c ・ ・ ・ 47 d e d a b これときa~fが入力されている個数を次のように表にしたいと思いますが、関数でできますでしょうか。    a b c d e f 1   1 0 1 1 1 1 2   3 2 4 3 1 2

  • セルに入力されている文字をくっつけたい。

    エクセル2010です。 よろしくおねがいします。 セルE15~E23に入力されている文字を ひとつにくっつけて 表示したいんですが・・・ 全部文字が入力されているときも あるのですが 入力がないときまあります。 その場合は D1には 何も表示しないようにしたいのです。 例えば E15にA       E16にB      E17にC  E18~E23は入力なしとして D1に ※文字です。→A・B・C と 一つのセルに表示させるには どういう関数になりますでしょうか? よろしくお願いします。

  • Excel 2003 セルの中に特定の文字が入力されている場合に、その数をカウントする方法

    どなたか教えて下さい。 エクセルのセルに特定の文字が入力されている場合に、そのセルの数を返してくれるような関数の設定があれば教えて頂きたく思います。 例) A00001 A00002 A00003 B00006 C00004 D00009   ↓ A:3 B:1 C:1 D:1 このように返したいのですが…?

  • EXCEL 2010 VBAまたは関数について

    こんにちは 初投稿です。 早速ですが、VBAまたは関数について質問させて頂きたいのですが・・・ 一つのセルに複数の数字と文字列がセルのE1混ざっている場合, (12345abc678cdef9ghijk)と入っている場合 にこの例で行くとセルのA1に12345セルB1に678セルC1に9というように数字で表示させたいのです が、最初関数で A1=VALUE(MID(E1,1,5)) B1=VALUE(MID(E1,9,3)) C1=VALUE(MID(E1,16,1)) と言う形で数字だけ抜き出していたのですが これだと数字の桁数が違ってくる(※正し文字列の長さは一緒 数字だけが桁が違ってきます) と表示されなくなってしまうため、 出来れば関数をいじらなくても表示されるようにしたいのです。 VBAもしくは関数でこの問題を解決出来る方がいらっしゃるなら どうぞよろしくお願い致します。 長文失礼致しました。 | A | B | C | D | E | ------------------------------------------------ 1 | 12345 | 678 | 9 | | 12345abc678cdef9ghijk | 2 | | | | | |

  • エクセルの文字列の検索に関して

    また、エクセルに関しての質問です。 例えば  A B C D 1あ 1 2い 2 3う 3 4え 4 5お 5 6か 6 7き 7 8く 8 このような漢字で文字列が縦に入力されていて、  A B C D E 1あ 1   お 5 2い 2   う 3 3う 3 4え 4 5お 5 6か 6 7き 7 8く 8 このようにD列にある文字に対してA列にある文字で該当する文字を発見し横のBセルにある番号を取ってくるということがしたいです。 この場合だとD1は「お」なので、A列の上から見ていくとA5に「お」があるので、B5の数字「5」をEに入力といったような具合です。簡単なように見えますが、複数の文字列を横断的に検索することができません。 誰か詳しいお方お教え願います。

専門家に質問してみよう