• 締切済み

一文の中に名簿中の名前がいくつあるか

WINDOWS7、エクセル2003です。             A                B     C      D     E    1  山田、伊東風邪。山本ノロウィルス。 青田     3  2                                        山田 3                                        上田 4                                        伊東 5                                        山本 上の表のように、A列には短文が入っていて、何人かの名前が記入されています(文があっても名前なしの時もあります)。 D列には、最大30人の名前が記入されています。 A列の短文の中に、D列の名前が何人出現しているか、人数をE列に返したい。 朝から調べましたが分かりませんでした。SUMPRODUCTとかCOUNTIFを使うのだろうとは見当がつきましたがよく分かりません。 よろしくお願いします。  

みんなの回答

回答No.4

既出の ISNUMBER(FIND) の代わりとして COUNTIF 関数を入れることも可能です。 E1 =sumproduct(countif(a1,"*"&D$2:D$31&"*")*(D$2:D$31<>"")) もしも同じ人物が 1 文の中に複数回出てくるという場合、上式や既出の回答の数式では、同じ人物を 1 人として数えます。次式は、延べ人数を求めます。 E1 =sumproduct((len(a1)-len(substitute(a1,D$2:D$5,)))/(len(D$2:D$5)+(D$2:D$5="")))

t452431t
質問者

お礼

MarcoRossiItaly 様 お礼が遅くなりました。 画像付きで、しかも同一人物が複数回出た時に1人とカウントする場合と延べでカウントする場合と両方教えて頂きました。 役に立ちます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

SUMPRODUCTはイマイチどうでもよくて、中で何を計算するかでやり口は様々あります。 =SUMPRODUCT(COUNTIF(A1,"*"&D1:D30&"*")*(D1:D30<>"")) とか =SUMPRODUCT(1*(SUBSTITUTE(A1,D1:D30,"")<>A1)) とか =COUNT(0/FIND(IF(D1:D30<>"",D1:D30),A1)) をCtrl+Shift+Enter とか >式の理解に苦しみましたが、本やネットを動員してなんとかわかってきました。 ツールメニューのワークシート分析の中にある「数式の検証」という機能を利用します。 ただしこれは、まず最初は「正しく動作する事が分かっているお手本の数式」を理解するのに使います。 計算ステップが「どうしてこういう具合に進むのか、なぜそうなるのか」正しく理解できたら、次のステップとして新しい数式を工夫するのにも利用する事ができるようになります。

全文を見る
すると、全ての回答が全文表示されます。
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.2

>SUMPRODUCTとかCOUNTIFを使うのだろうとは見当がつきましたがよく分かりません。 SUMPRODUCT関数については既に回答が出ていますので割愛します。 COUNTIF関数では条件を設定することが困難となります。 代わりにIF関数で配列値処理すればCOUNT関数で計数できます。 =COUNT(IF(FIND(B2:B31,A1)*ISTEXT(B2:B31),1,"")) また、SUM関数では配列値を工夫して計数できます。 =SUM(NOT(ISERR(FIND(B2:B31,A1)))*ISTEXT(B2:B31)) 上記の式は配列値を扱いますので数式バーへ入力後、Ctrl+Shift+Enterで確定してください。

t452431t
質問者

お礼

bunjii様 ありがとうございました。 一つの目的に対して、いろいろな解決法があることがわかりました。 式の理解に時間がかかりましたが、なんとかわかってきました。 勉強になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

=SUMPRODUCT(ISNUMBER(FIND(D2:D31,A1))*(D2:D31<>"")) みたいな。

t452431t
質問者

お礼

keithin様 ありがとうございました。 さっそく入力したところ、見事に解決してすっきりしました。 もっとも、式の理解に苦しみましたが、本やネットを動員してなんとかわかってきました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルで特定の文字列を含む値を重複を除いて数える

    いつもお世話になります。 今回の質問ですが、例えば、セルA1からA1000に、いろんな人の名前がフルネームで入っているとします。 同じ人物が複数回登場することはありますが、同姓同名の人はいないものと考えてください。 そして、このリストの中に、「山田」さんは何名いるのかを、同人物の重複を除いて数えたいわけです。 重複して数えていいならば、「=COUNTIF(A1:A1000,"山田"&"*")」で、 山田さんに限らずに、重複を除いた人数を調べたいならば、「=SUMPRODUCT(1/COUNTIF(A1:A1000,A1:A1000))」でそれぞれ調べられますが、山田さんの重複を除いた人数となると、どうすればよいでしょうか。 私に考えつく方法では、B1に「=COUNTIF(A1,"山田"&"*")」と入力し、以下B列にこれをコピーをしておけば、「=SUMPRODUCT((B1:B1000)/COUNTIF(A1:A1000,A1:A1000))」で求めたい値を得られますが、できれば作業列は使用しないでこの値を求めたいです。

  • SUMPRODUCT関数について

    対象は D10からK39 リストは AD1からAJ1まで で、 各列にリストの文字のある数をあらわしたい。 以前、(例えばDの列) 40行目に =SUMPRODUCT(COUNTIF(E10:E39,$AD$1:$AJ$2)) でどうかと教えてもらい、うまくいってはいますが、理解ができていません。 今後のために =COUNTIF(D10:D39,$AD$1:$AJ$2) ではなぜダメなのかを理解したいんですが?

  • sumproductとcountifの使用例

      A B C D E 1 あ あ あ が い 2 い う か ぎ え 3 う い さ ぐ ん 4 え え た げ あ 5 お お な ご げ =SUMPRODUCT((COUNTIF(A1:D5,E1:E5)>0)*1) 上記は重複している個数が何個あるか(同じデータが複数回でてきても1個とカウントする)を出す関数なのですが、 sumproductとcountifの部分は大体理解できるのですが、 「>0」の部分と、「*1」の部分がどうしても理解できず、悩んでいます。 内部ではどういう計算が行われているのでしょうか? どなたかお知恵をお貸しください。 よろしくお願いいたします。

  • エクセルで並べ替えした値ごとにグループ分けしたい。

    はじめまして。エクセルでどのような式を入れていいのか悩んでいます。 下記のようなファイルで”列D”の値ごとに 数字又はアルファベットなどでグループ分けを”列C”にしたいと思っています。   A   B   C   D 1 日付  曜日 区分 基準値 2 4/1  水  ここ 50010001500 3 4/2  木  ここ 50010001500 4 4/3  金  ここ 100015002000 5 4/4  土  ここ 100015002000 6 4/5  日  ここ 50010001500   ・ 34 5/3  日  ここ 200030005000   ・ 184 9/30 水   ここ 50010001500 列Dを並べ替えて、C2セルには =SUMPRODUCT(1/COUNTIF(D$2:D2,D$2:D2)) C3セルには =SUMPRODUCT(1/COUNTIF(D$2:D3,D$2:D3)) …そのままC184セルには =SUMPRODUCT(1/COUNTIF(D$2:D184,D$2:D184)) といった数式を入れたところ、D列の値ごとに数字をふれました。 …小数点の付いたものですが…サイトを検索して利用してみたので、 あまりSUMPRODUCTを理解していません。 しかしながら、重くなりすぎて、しまいには固まってしまいます。 このシートが80枚ぐらい入れたファイルです。 最終的にはこのファイルの隣に、導いた列Cの値をVLOOKUPにて ”1”を”A”、”2”を”B”…と置き換えています。 何か良い方法がありましたら教えてください。 よろしくお願いいたします。

  • 1つの数式で結果を出すには

    A列に整数と小数のある数値がランダムに各セルに入っています。 この数字を下記の数式を他のセルに組んで、1や2や3がA列に入っている数値を確認して数式を組んでいる列のセルに1が表示する様にしています。 =SUMPRODUCT(COUNTIF(A3:A3,"1")) =SUMPRODUCT(COUNTIF(A3:A3,"2")) =SUMPRODUCT(COUNTIF(A3:A3,"3")) この数式を改良して、1つの式で、1や2や3が存在していたら、式を組んだセルに1が表示出来るか、下記の様に数式を組みましたが、結果が得られませんでした。 =SUMPRODUCT(COUNTIF(A3:A3,"1,2,3")) ご教授頂けたら幸いです。 宜しくお願いします。

  • エクセルで行列を一致させるには??

    エクセルでオークションの管理をしております。 2つのシートの部分部分を合体させたあと、一部の行を 入れ替えて一致させたいのですがどのようにすればよろしい でしょうか? A~Cはオークション管理ソフトから出力されたデータです。 D~Eは自分でもともと管理していたデータです。 (質問のため、簡略化しています) 例  A  B    C    D  E 1商品名 落札価格 落札者 商品名 管理番号 2カバン 3,000  伊東様 洗濯機 管理1 3洗濯機 2000  山本様 ゲーム 管理2 4ゲーム 16000  松本様 カバン 管理3 A列の名前とD列の名前をD列を上下させることに よって、↓のように一致させたいのです。 そのときにEもDと一緒に動くようにしたいと思います。  A  B    C    D  E 1商品名 落札価格 落札者 商品名 管理番号 2カバン 3,000  伊東様 カバン 管理3 3洗濯機 2000  山本様 洗濯機 管理1 4ゲーム 16000  松本様 ゲーム 管理2 エクセルのスキルは極めてないので、ぜひお教えいただ けますでしょうか?またこのような管理をしていくのに、 よいフリーソフトなどご存知でしたら、教えていただけ ますでしょうか? よろしくお願いいたします。

  • Excel数式

      A列    E列 1 北海道  北海道 2 青森県  沖縄県 3 北海道 4 宮崎県 5 沖縄県 6 石川県 7 北海道 <問題> A1:A7のデータの中で、E1、あるいはE2と同じセルの個数を求める。 上記の場合、COUNTIFの条件式にORが使えないので、 ●=COUNTIF(A1:A7,E1)+COUNTIF(A1:A7,E2) ●=SUM(COUNTIF(A1:A7,E1),COUNTIF(A1:A7,E2)) ●=SUM(COUNTIF(A1:A7,{"北海道","沖縄県"})) …等の数式が使えると思います。 上記の数式のうち3つ目(一番下)の数式について質問があります。 COUNTIFの[検索条件]に「北海道」「沖縄県」とわざわざ文字列を入れていますが、これらをセル参照(E1とE2)としてできないのでしょうか? [検索条件]に{E1,E2}としてみますと、"{E1,E2}"となってしまいうまくありません。 できるだけこの数式の関数のネストの形のままやりたいのですが、[検索条件]をどうすればできますか? それともこの場合はセル参照ではできないのでしょうか? =SUMPRODUCT(COUNTIF(A1:A7,E1:E2)) でもできるようですが、まだいまいちSUMPRODUCTを複雑に使いこなす自信がありません。 試しにFREQUENCY関数のときのように、確定時に[Shift][Ctrl][Enter]同時押しすると、 {=SUM(COUNTIF(A1:A7,E1:E2))} …となり、求める値自体は合っているのですが、これが正解だったりしますか? ご存知の方よろしくお願いします。 Vista Excel2007です。

  • 3っつの列の重複種類の個数抽出

    どなたかお知恵をお貸しいただけないでしょうか。 3列のデータで重複している種類がいくつあるかを出したいのですが、sumproductなどを使用しできるものなのでしょうか?   A  B  C  D 1 あ  う     え 2 い  い  あ  あ 3 う     あ 4 え     か   い 上記データ行列で、A列にあり、且つBかC列にあり、且つD列にある文字の種類を○個とだしたいのですが、可能でしょうか? 上記だと、「あ、い」が重複しているので、「2」と表示するような関数です。 論理的に言うと、 「A列 and (B列かC列) and D列」 と言うような状態です。 sumproductとcountifなどを駆使してできたらと思っているのですが、どなたかお知恵をお貸しください。 申し訳ございませんがよろしくお願いいたします。

  • 2箇所にまたがる同じ名前のセルの合計は?

    例えばA列が名前、B列が点数、連続してC列が名前、D列が点数・・・・・・ というように、A列にある『田中』全員のB列の点数計とC列にある『田中』全員のD列の点数計を1つのセルで集計するには?SUMIFではエラーが出ますし、SUMPRODUCTでも思った答えになりません。2箇所にまたがった集計をするという非常に単純なことで、分からない自分がちょっとむかつくのですが^_^;宜しくお願い致します。

  • 空白セルを飛ばして転記したい

    こんばんは。 またもやexcelで悩んでおります。どうぞご教授ください。 下のようなデータがあります。     A   B   C   D    E   F   G 1 山岡     山田  丸山  山岡  山田  丸山 2      平尾     南田  平尾  南田          3 ・ ・ A列からD列まで名前のデータがあり、空白のセルもあります。 E列からG列には、各行のA列からD列の名前を、空白セルを飛ばして表記したいのです。(詰めて表記したいです) 名前は各行とも0から3つまでです。 前回同様(QNo.4073079)行き詰ってしまいました。 よろしくお願いいたします。

専門家に質問してみよう