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

このQ&Aのポイント
  • エクセルで特定の文字列を含む値を重複を除いて数える方法をご紹介します。
  • 例えば、セルA1からA1000に、いろんな人の名前がフルネームで入っているとします。
  • 同じ人物が複数回登場することはありますが、同姓同名の人はいないものと考えてください。
回答を見る
  • ベストアンサー

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

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

  • licor
  • お礼率66% (79/119)

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

  • ベストアンサー
  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.2

FINDは論外です。「森」さんの時「大森」さんを数えてしまいます。 というか数式自体が煩雑だし OFFSETは計算を重くするだけで必要 すらありません。 =COUNT(1/(MATCH(A1:A1000,A1:A1000,0)=ROW(A1:A1000))/(LEFT(A1:A1000,2)="山田")) Ctrl + Shift + Enterで確定 LEFTは必要なら SEARCHと ISNUMBERの組合せに変更。 > できれば作業列は使用しないでこの値を求めたいです。 無意味なこだわりだと思います。

licor
質問者

お礼

お二人ともありがとうございます。助かりました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

たとえば =SUMPRODUCT(ISNUMBER(FIND("山田",IF(FREQUENCY(MATCH(OFFSET(A1,,,COUNTA(A:A),1),A:A,0),MATCH(OFFSET(A1,,,COUNTA(A:A),1),A:A,0)),OFFSET(A1,,,COUNTA(A:A),1),"")))*1) >できれば作業列は使用しないでこの値を求めたい 無駄な努力です。

関連するQ&A

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

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

  • Excelで重複チェックの方法

    重複データのチェックについて教えてください。 シート1にA支店の顧客データ、シート2にB支店の顧客データがあります。シートの構成は、A列に名前、B列に電話番号があります。 これで、A支店に顧客登録されていて、同じくB支店にも登録されている人を選び出し、支店間で同一人物を登録しないようにしたいのですが、どのようにしたら良いでしょうか。 私が考えるにはA列の名前でVLOOKUPを使えばいいと思うのですが、これだと同姓同名のダブりチェックが出来ないですね。名前が同じなら電話番号で比較しようと思うのですが、良く分かりません。 シート1のA支店を基準にしてシート2のB支店と比較し、重複していれば仮にC列に「重複」と表示させる。 ・・・としたいのですが、どなたか教えてください。

  • エクセル2000:こんな重複チェックの仕方を教えてください

    下記B列のように関数を入れると、重複していないものが1、しているものが2以上の数値を返します。「1」で、オートフィルタをかけると重複したものを表示しないと思いきや、下の例では山田太郎も当然、表示されません。そこで、山田太郎のうち、一回目の山田太郎は「1」で返すということはできますか?そうするとオートフィルタで正しい重複チェック後の抽出ができると思うのですが・・・。それとももっと簡単な方法はあるのでしょうか?   A       B       B列に入れる計算式       =COUNTIF(A:A,$A1) 山田太郎   2 川村花子   1 山田太郎   2

  • 重複エラーを出したい

    Excelで重複エラーを出したくて、 A列はリスト、B列は任意に値を入力出来るようにし、 C列で「=A3&B3」として、結合しています。 そこで、C列で同じ値となった場合、重複エラーを出したいのですが、 COUNTIFを使用して「=COUNTIF(C:C,C3)=1」としても、重複エラーが出力されません。 「=A3&B3」の値をC列の数式内に引き継いでエラー出力させるには、 どのようにすればいいのでしょうか。 よろしくおねがいいたします。

  • エクセル関数で重複チェック

    エクセル2010です。 ワークシートのB10:B17の範囲に数値(1から200くらいの自然数)が入力されます。 この範囲が空白になることはありません。 この範囲内での重複(同じ数値の入力)をチェックしたいのです。 ただし、1は何個あろうが重複に含めません。 となりの列あたりを作業列にして、COUNTIFでもできますが、1個のセルで完結させたいと思います。 まず、1を超える数値の個数を取得し、そこから1を除く数の種類の数を引いて0になれば重複はないのではないかと思い、下記の数式を書いてみました。これでTRUEなら重複はないと思いますが、もっと簡単な方法があるのではないかと質問いたしました。 よろしく願いします。 =COUNTIF(B10:B17,">1")-(SUMPRODUCT(1/COUNTIF(B10:B17,B10:B17))-(COUNTIF(B10:B17,"=1")>0))=0

  • 隣の列にある重複項目を探す

    A列とB列にデータが入力されていて、A列の重複を探すために =countif(a:a,a1)>1 という式を使ってうまくいきました。 B列にあるA列と同じデータを探すために =countif(a:a,b1)>1 という式を使おうとしたらうまくいきません (>_<) どうすればいいですか!?

  • マクロを使用しての重複チェックについて

    ここの質問にCOUNTIFや条件式書式などでデータの重複チェックを する内容はあるのですが、ちょっと思ってるのと違うので 質問します。 A列 B列 1 aaa 1 aaa 2 aaa 2 aaa 3 bbb 3 bbb 4 ccc 4 ccc 上記のように8行のデータがあります。 条件で、A列の数字が同じ数字でB列が同名の場合は、 チェック対象外で、A列の数字が違う数字でB列が同名の場合 (上記でいうと1 aaa と 2 aaaの場合)は、重複で対象行を 網掛けをするという処理を作りたいのですが、そういうことって できるのでしょうか。 まずは、値を明示的にやるべきだと思いますが、 理想としては、A1とA2が同じ値でB1とB2の値が一緒の値だったら 処理なし。 A1とA2の値が違う値でB1とB2の値が一緒の値だったら 重複っていうような処理を行えたら幸いです。 理由は、どんどんなデータ(行)を追加することを想定させた場合を 考えております。 参考になるのがありましたら教えてください。

  • エクセル 重複する文字列からピックアップしたい

    A列に県名が並んでいます。 B列にA列の中で重複している物に上から番号を振りました。  B1=IF(A1="","",A1&COUNTIF($A$1:A1,A1)) C列に末尾に1とあるものだけをピックアップしました。  C1=IF(COUNTIF(B1,"*1"),(LEFT(B1,LEN(B1)-1)),"") ですが、21、31もピックアップされてしまいます。当然ですが・・・。 県名を一種類ずつピックアップするにはどのようにしたら良いですか?    A B C _______________________________________________ 1 | 東京    東京1   東京 2 | 神奈川  神奈川1  神奈川 3 | 千葉    千葉1   千葉 4 | 神奈川  神奈川2 5 | 埼玉    埼玉1   埼玉 6 | 東京    東京2 7 | 群馬    群馬1   群馬   21| 東京    東京21 東京2 22| 神奈川  神奈川31  神奈川3 23| 東京    東京22 24| 東京    東京23

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

    はじめまして。エクセルでどのような式を入れていいのか悩んでいます。 下記のようなファイルで”列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”…と置き換えています。 何か良い方法がありましたら教えてください。 よろしくお願いいたします。

  • Excel 関数 列内の文字を参照し隣列の値を返す

    Excel2003です。 関数を使ってみたのですが、思うようにいきません。 C列を参照し、「みかん」という言葉があれば、そのセルの隣の列の値(D列の「B」)を、A1に表示したいです。 最初は、VLOOKUP関数を使えばいいと思っていましたが、「検索値」というものがはっきりしない為、使用できない?のでしょうか? 「みかん」という単語を探し出すには「COUNTIF」でしょうが、その関数では、直接その値を返すのみなので、何かの関数と組み合わせるのか、それとももっと良い関数があるのでしょうか? なお、C列に「みかん」という単語は一度しか登場しない為、列内に複数「みかん」が存在している場合にの対処法は、不要です。単純に、「みかん」の値の2列目だけをA1セルに表示させたいのです。

専門家に質問してみよう