• ベストアンサー

Excel 文字列検索

    A      B      C 1  田中実    田中    田中実 2  石川武          田中康雄 3  中田英人 4  石崎甚平   石川    石川武 5  石川啓子         石川啓子 6  中田康雄 B列にA列の文字列に部分一致する文字列を入力すると C列にその検索結果を表示する様にしたい。 C1=IF(OR($B$2="",$B$2<1),"",VLOOKUP("*"&B2&"*",$A$2:$A$1500,1,FALSE))だと田中や石川のように名前がかぶると 1個しか表示されない。B2にも田中が該当する人を表示させたい。 説明が下手かもしれませんが、知恵を貸してください。よろしくお願いします。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

作業列を作って対応することになるでしょう。また、田中や石川を検索しそれらをリストアップさせるのでしたら田中のためにB,C,Dの3列を設けることが田中がたくさんいる場合にも対応できることになり、関数を複雑にならずに済みます。一つの姓当りに3列を追加する形で表を作成し、作業列は後で非表示にすればよいでしょう。 例えばB1セルに田中と入力します。 C1セルには次の式を入力します。 =IF($A1="","",IF(COUNTIF($A1,B$1&"*")=0,"",COUNTIF($A$1:$A1,B$1&"*"))) D1セルには次の式を入力します。 =IF(COUNTIF(C:C,ROW(A1))=0,"",INDIRECT("A"&MATCH(ROW(A1),C:C,0))) C1セルおよびD1セルを選択してから下方にオートフィルドラッグします。 これでD列には田中の姓をもった氏名が並んで表示されます。 同じようにE1セルに石川と入力します。次にC1およびD1セルを選択してコピーし、F1セルに貼り付けます。F1セルとG1セルを選択して下方にオートフィルドラッグすればG列には石川の姓を持つ氏名を並べることができます。 同様の操作で列を追加することでいろいろな姓の氏名をリストアップすることができます。 最後にC列やF列などを非表示すればよいでしょう。

motty7777
質問者

お礼

完璧にできました!ありがとうございます! 本当に嬉しいです!!

motty7777
質問者

補足

    A      B      C     D 1  担当者    客先 2  秋山     あ商店    秋山   あ商店 3  秋山     い商店         い商店 4  田中     う商店         か商店 5  田中     お商店    6  秋山     か商店   7  星川     き商店 8  星川     く商店 9  星川     け商店 10  田中     こ商店 11       (Bはもっと複雑な名前) C1に担当者名を入力すればD列に客先を表示なおかつ C1に客先名を入力すればB列を検索して表示できる。 同一セルで2つの動作をすることができますか?

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 このようにしてみたらいかがですか? C2;秋山 D2 に以下の数式を貼り付けてください。オートフィルでコピーしてください。 =IF(COUNTIF($A$1:$A$10,$C$2&"*")>=ROW(A1),INDEX($A$1:$B$10,SMALL(INDEX(COUNTIF(OFFSET($A$1,ROW($A$1:$A$10)-1,0),$C$2&"*")*ROW($A$1:$A$10),,),COUNTIF($A$1:$A$10,"<>"&$C$2&"*")+ROW(A1)),2),"") 範囲の変更は、数式内を置換で行ってください。手作業ですとミスが起こる可能性が多いです。 $A$1:$A$10 $A$1:$B$10 の二種類です。 なお、INDEX 関数で、最後の数式で、 ROW(A1)),2),"") の2 が、2列目です。1でしたら、元の質問の回答です。あまり多いようでしたら、フィルタ・オプションに切り替えたほうが良いです。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

作業列を使用するか、配列関数になります。作業列案ですが     A      B      C 1  田中実    田中     2  石川武           3  中田英人 4  石崎甚平    5  石川啓子          6  中田康雄 とあったとして、C列に =IF(COUNTIF(A1,"*"&B$1&"*"),ROW(),"") 下へコピィしておけば、田中を含む氏名の行にその行番号が表示されます。 D列に =IF(ISERROR(SMALL(C:C,ROW(A1))),"",INDEX(A:A,SMALL(C:C,ROW(A1)))) として下へコピィしてみてください。 作業列が見苦しければ非表示にしておきます。

motty7777
質問者

お礼

ありがとうございます。KURUMITOさんのやりかたでできました。 また補足があれば是非ともお願いします!!

  • 135ok
  • ベストアンサー率34% (26/75)
回答No.1

関数ではなく、フィルタで対応できます。 まず、表を下記のようにします。 A     B 氏名    氏名 田中実   石川 石川武   中田 中田英人 石崎甚平 石川啓子 中田康雄 そして、データ→フィルタ→フィルタ オプションの設定を選択 抽出先を「指定した範囲」にチェック リスト範囲  A列の文字が入っている範囲すべて 検索条件範囲 B列の文字が入っている範囲すべて 抽出範囲   C1 上記の設定で、添付のようになります。

motty7777
質問者

補足

その方法も良いかもしれませんが、やはり関数を用いてセルにB列に文字列を 入力して、その結果をC列に反映させたいです。 関数にこだわる理由は、A列のデータが1500件もありますからフィルタで 操作するのは面倒。手動マクロを設定すればよいかもしれませんが、 もっと簡単に、入力でババッと検索したいです。

関連するQ&A

  • 文字列から他の文字列を参照して削除し、結果を残すことはできますか?

    文字列から他の文字列を参照して削除し、結果を残すことはできますか? Excel2003です。 A列、B列に文字が入っており、 原則的にAは長く、AはBに書かれている文字を含んでいます。 他の列に関数で     A           B     C 1  石川武          石川   武 2  記者ハンドブック     ハンド  記者ブック 3  長文ドキュメント     メント  長文ドキュ 4  エコポイントが半減します 半減   エコポイントがします 5  過去にやった問題集    去に   過やった問題集 6  手作業で入力する     で    手作業入力する といったように Cのような結果を抽出することはできますか? (C列でなくてももちろんかまいません) A列はもっと長いものが多く B列は2~4文字です。 あまり難しいことはわからないので、とんでもなく無理な話をしているかもしれませんが もしできるのであればありがたいです。よろしくお願いします。

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

    また、エクセルに関しての質問です。 例えば  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に入力といったような具合です。簡単なように見えますが、複数の文字列を横断的に検索することができません。 誰か詳しいお方お教え願います。

  • エクセルで、2つの列を比較して判定する方法。。。

    宜しくお願いします。 2つの列を比較して、判定結果を表示させる方法はないでしょうか? 例えば A         B 田中      加藤 佐藤      志村 吉田      吉田  のような列があった場合、 A列の文字がB列にもあった場合は1 A列の文字がB列になかった場合は0 をかえす式は作れないでしょうか? A         B     C 吉田      加藤     1(”吉田”はB列にあるので1)  佐藤      志村     0(佐藤はB列にないので0) 田中      吉田     0(田中はB列にないので0) やり方を教えてください。 宜しくお願いします。

  • 任意の文字列を検索して文字を追加する。

    マクロについてご質問します。 宜しくお願い致します。 <質問> A列…すべてのデータが入っています。 B列…検索したいデータが入っています。 C列…検索結果のデータを出力します。 過去に教わったIF関数を使用した「=IF(ISNA(MATCHを組み合わせた式)」方法ですとA列の文字とB列の文字が一致しているものは そのままC列に表示で、B列に含まれないA列の文字はC列に"その他"として出力することができました。 今回は、A列の文字とB列の文字が一致している場合は C列に文字を加え、A列B列ともに一致していない場合は そのままの表示を行いたいのですがどなたかご助言していただけると助かります。 A列   B列  C列 ------------------------ 赤   白   赤   白   緑   白組 黄       黄 緑       緑組 青       青 IF関数で行うことは可能なのでしょうか? 宜しくお願い致します。

  • 文字列の検索

    先日同じ質問をして、プログラムの内容を修正したのですが、今度は2つ文字列を入力した後0が無限にでてきます… どなたか解説・指摘・模範解答などおねがいします。 内容は最初にある文字列を入力して、その後別の文字列を入力して、 後に入力した文字列が最初に入力した文字列に含まれていれば1、 含まれていなければ0と表示するプログラムです。 (使用するのは#include<stdio.h>のみ、ポインタ変数必須です) #include<stdio.h> char *mystrfin(char *a, char *b); int main(void) { char *c,*d; char str1[100],str2[100]; printf("1>>"); fgets(str1,100,stdin); printf("2>>"); fgets(str2,100,stdin); *mystrfin(c,d); } char *mystrfin(char *a,char *b){ char *c,*d; while(c!='\0'){ c=a; d=b; while(c!='\0' && d!='\0'){ if(c!=d) printf("0"); break; c++; d++; } } if(d='\0') printf("1"); a++; return a; return NULL; } 例 検索対象文字列:asdfghjkl 検索文字列:sdf 1と出力 検索対象文字列:asdfghjkl 検索文字列:qwer 0と出力

  • Excelについての質問です。A列からC列の文字を検索する方法を教えてください。

    A列からC列の文字を検索してかつB列にその結果の表示をさせたいのですが、可能でしょうか? A列 B列 C列 A,1,,a × C-1 C,1,,b ○ B-2 B,1,,a × C,1,,a ○ A,1,,b × B,2,,b ○ こんな感じでC列の「-」はA列では「,」になってます。また、A列には「,,*」がくっついてます。 出来ればA列、C列共に置換やセルの分割などをせずに関数などを使いB列に○、×で表示させたいです。 よろしくお願いします。

  • A列に同文字がありB列に個数が表示する関数

    A列に同じ文字がありB列に個数が表示される関数ないですか? 事務の仕事をしていえて2万件の中から同じ文字を探してと言われ イメージはこんな感じです。 A列 B列 田中 2 山田 1 田中 2 中村 1 よろしくお願いいたします。

  • スペースを含んだ文字列から文字列の抽出

    エクセルバージョン2007 スペースを含む文字列で、A列に文字列がある時、以下の式を組んで文字列を抽出しています。 先頭にIDの数字が有る場合は、それぞれの目的に合った文字列を抽出しています。 B1=LEFT(A1,SEARCH(" ",A1,1)-1) C1=LEFT(MID(A1,SEARCH(" ",A1,1)+1,LEN(A1)-SEARCH(" ",A1,1)),SEARCH(" ",MID(A1,SEARCH(" ",A1,1)+1,LEN(A1)-SEARCH(" ",A1,1)),1)-1) 3 3df-32654-10 CCCCHH 10 1ab-12345-00 AAABBBB この文字列の場合、B列に3と10が表示、C列に 3df-32654-10 1ab-12345-00が表示されます。 先頭に、IDの無い文字列は以下の様な構成です。 6rt-95132-00 PPPKKK この文字列の場合、B列に6rt-95132-00、C列にPPPKKKが表示されてしまい、この場合、IDの数字が無い場合はB列には表示させない又は、C列に6rt-95132-00させたいと思っています。 ご教授頂ければ幸いです。 以上、宜しくお願い致します。

  • excelの文字列の操作について

    A列、C列、E列、G列・・・の1行目にはタイトルが入力されており、 B列、D列、F列、H列・・・には不特定の文字列が入力されており、それぞれ行数も不特定です。 A列、C列、E列、G列・・・の1行目のタイトルはA列にまとめ、B列、D列、F列、H列・・・の文字列はB列にまとめたいです。 下の例の場合だと、C列の1行目のタイトルをB列の下端の左下にあたる(A7)に移動させ、 D列の2行目から入力された文字列を右となりの(B7)に移動させたいです。これの繰り返しです。     A列     B列     C列     D列 1    あ       A       い       2             B                a   3            C                b 4              D               c 5             E                6              F                            ↓     A列     B列     C列     D列 1    あ       A              2             B                   3            C                 4              D                5             E                6              F      7      い      a 8             b 9             c よろしくお願いします。

  • エクセル 文字列操作

    重複している姓の人だけ、名の一文字目を()付きで表示させたい場合、 操作列なしで表示させる方法を教えていただけないでしょうか。 姓と名の間に全角スペース有。 =例=  A列         B列 田中 一子     田中(一) 鈴木 二子     鈴木 久留米 三子   久留米(三) 後藤 四太子   後藤 林 五子       林(五) 斉藤 六子     斉藤 久留米 七子   久留米(七) 林 八太子     林(八) 山田 九子     山田 田中 十太子    田中(十)

専門家に質問してみよう