• ベストアンサー

EXCEL2007の文字列検索方法で困っています。

EXCEL2007の文字列検索方法で困っています。 ひとつのセルに複数の全角、または半角文字列が「、(カンマ)」で区切って入力されています。 例、足利商事、織田商店、徳川物産など これとは別紙に対象先となるリストがあって 例、 明治商事 徳川物産 大正商事 平成物産・・・ ひとつのセルに、対象となるリスト内にある企業名があったら「1」カウントアップ、「2」 あったら、2というように該当件数を横に表示したいのですが、適当な関数が見つかりません。 なにか、良い方法はありますでしょうか。よろしくお願いします。

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

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

B1セルには次の式を入力してください。 =IF(A1="","",SUM(IF(ISERROR(FIND(INDIRECT("Sheet2!A1:A"&COUNTA(Sheet2!A:A)),A1)),0,1))) その式を入力した最後の部分では・・・・0,1)))の後にカーソルが点滅している状態になりますね。通常はそこでEnterキーを押すことでセルへの式の入力が完了しますが、この場合には単にEnterキーを押すのではなく、キーボード上のShiftキーとCtrlキーを同時に押しながらEnterキーを押してください。すると数式バーに表示される式の形が前の部分と後ろの部分にカッコが付いた状態に変わります。 先に示したカッコの付いた状態の式をそのままコピーしてB1セルに入力しても全く意味がありません。

yabbeti
質問者

補足

KURUMITO様、できました!ありがとうございます。 なんで今までできなかつたのか、判りませんが今朝指示された通りにしたら、 意図通りの答えが表示されました。何度も何度も、ご丁寧な回答ありがとうございました。 本当にありがとうございました。

その他の回答 (6)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.6

>「配列数式」という言葉は何年もEXCELは操作していますが初めて聞きました。この機能は私のEXCELでは機能しない?機能かも知れません。 そんなことはありません。 No3でも回答したように、数式を貼り付けた後、カーソルが数式の最後にある状態でCtrlとShiftキーを押しながら、Enterキーを押してみてください。 ちなみに、この操作を行わないでも、そのまま計算できる数式はNo3ですでに回答した通りです。 配列数式を覚えると、複雑な計算を簡単な数式で計算できるなど、数式の利用範囲が大きく変わりますので、以下のサイトを参考にして勉強されると良いと思います。 http://pc.nikkeibp.co.jp/pc21/special/hr/

yabbeti
質問者

お礼

MachyNo1様、ご回答ありがとうございました。 EXCELも2.1の頃から使っていますが、まだまだ「奥」が深いと思いました。 ありがとうございました。

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

シート1のB1セルに次の式を入力し、確定するに当たって通常はEnterキーのみを押せばよいのですが、この式を配列数式とするためにCtrlキーとShiftキーを押しながらEnterキーを押します。 =IF(A1="","",SUM(IF(ISERROR(FIND(INDIRECT("Sheet2!A1:A"&COUNTA(Sheet2!A:A)),A1)),0,1))) 上記の操作をすることで式は次のようになります。 {=IF(A1="","",SUM(IF(ISERROR(FIND(INDIRECT("Sheet2!A1:A"&COUNTA(Sheet2!A:A)),A1)),0,1)))} つまり両側に{ }の付いた状態の式になります。

yabbeti
質問者

補足

KURUMITO様、本当に何度もご回答ありがとうごさいます。 今回は返事された内容の[ ]付きの部分をコピーしましたが、先頭が「=」で始まっていないため、 EXCEL2007が数式という判断をせず、式がそのまま・・・ {=IF(A1="","",SUM(IF(ISERROR(FIND(INDIRECT("Sheet2!A1:A"&COUNTA(Sheet2!A:A)),A1)),0,1)))} と表示されるだけです。 「配列数式」という言葉は何年もEXCELは操作していますが初めて聞きました。この機能は私のEXCELでは機能しない?機能かも知れません。何回も、色々とお手数をかけて申し訳ありませんでした。 私の能力ではこれ以上の結果は得られないと思いますので、諦めます。 ありがとうございました。

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

回答No1,2です。 補足の内容ではシート2のセルに式を入力しておられるようですが私の文章をよく読まれているのでしょうか? 式を入力するのはシート1のB1セルです。シート2のB1セルに式を入力すれば下方にオートフィルドラッグしてもシート2のA列には明治商事、徳川物産などがそれぞれ単独で連続したセルに入力されているのですから、1が答えとなるのは当然です。 式はシート1のB1セルに入力します。

yabbeti
質問者

補足

KURUMITO様、本当に何度もご回答ありがとうごさいます。 仰る通り、式を入力していたシートは「シート2のB1セル」でした。ただ、式をシート1のB1セルに コピーし直しても結果は下記のようになります。・・・ シート1 A1 B1 安藤産業、豊臣物産、徳川商事 1 三井産業、石田物産、織田商店 0 柳生産業、徳川商事 0 念のため、B1に入力されている式もコピーしました。 =IF(A1="","",SUM(IF(ISERROR(FIND(INDIRECT("Sheet2!A1:A"&COUNTA(Sheet2!A:A)),A1)),0,1))) シート2   A1 徳川商事 豊臣物産 石田産業 織田商店 柳生産業 どうしてでしょう?、それと式をご回答からコピーする際に「Ctrl+Shift+Enter」の意味が わかりません。指示通り、やってはいますが普通に貼り付けされるだけで、他の方が回答されて いるような[ ]では囲まれません。 よろしくお願いします。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

明治商事と大明治商事のような名前がなければ、No1の回答で問題なく表示できると思いますが、配列数式の入力の仕方がわからないということでしょうか? 配列数式にするには、数式入力後(数式の末尾にカーソルがある状態で)、CtrlキーとShiftキーを押しながらEnterキーを押します(数式が「{」と「}」で囲まれる)。 Ctrl+Shift+Enterしないでも計算できる配列数式にするなら、例えば以下のようなCOUNTIF関数を使った数式でも計算できます。 =SUMPRODUCT(COUNTIF(A1,"*"&INDIRECT("Sheet2!A1:A"&COUNTA(Sheet2!A:A))&"*"))

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

回答No1です。 あなたが補足で説明されたと同じ内容であると解釈してNo1の答えを書いています。 シート1のA1セルに足利商事、織田商店、徳川物産などがカンマ付きでいくつか入力されており、その中にシー2のA列に示した文字列が幾つ含まれているかを求める式です。 シート1のB1セルに回答1の式を入力し、確定するに当たってはShifキーおよびCtrlキーを押しながらEnterキーを押してください。その後にB1セルの式を下方にオートフィルドラッグすればよいでしょう。 こちらが提案された方法を試験されたのでしょうか?その結果がどうなったかなどを追加で質問してください。

yabbeti
質問者

補足

KURUMITO様、何度もご回答ありがとうごさいます。 結論から言って、仰ってる方法をやってみましたが、シート2のB1(データが集計されるところ)には、すべて「1」が表示されます。私のイメージではシート1のB1以降にシート2の内容と同じものがあれば、 その個数が表示されるように考えていました。 やはり、無理でしょうか。お手数掛けてすいません。

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

シート1のA1セルから下方に一つのセルに足利商事、織田商店、徳川物産などの文字が入っているセルが並んでいるとすます。 シート2のA1セルから下方に明治商事、徳川物産などの文字が一つずつのセルに入っているとします。行の間に空白の行は無いものとします。 そこでシート1のB1セルには次の式を入力し式を確定する際にはCtrl+Shift+Enterキーを同時に押します。 =IF(A1="","",SUM(IF(ISERROR(FIND(INDIRECT("Sheet2!A1:A"&COUNTA(Sheet2!A:A)),A1)),0,1)))

yabbeti
質問者

補足

問題の説明がいまいち、上手ではないので、もう一度整理します。 ひとつのセルに複数の全角、または半角文字列が「、(カンマ)」で区切って入力されています。 シートA    ___________A列 ______________ B C D E   ・・・・・・  例、 1 |足利商事、織田商店、徳川物産|  n件 ____________________________ これとは別シートに対象先となるリストがあって 例、 シートB       A列      B列    C列   1行 明治商事   2  徳川物産   3  大正商事   4  平成物産       ・       ・       ・ 上図でシートAのA1のセル内容の中にA1「明治商事」からA4「平成物産」までのうち、シートBの リスト内にある企業名があったらシートAのB1を1カウントアップ、2つあったら、2というように該当件数を横に表示したいのですが、適当なEXCEL関数または式が判りません。 なにか、良い方法はありますでしょうか。よろしくお願いします。

関連するQ&A

  • Excelの文字列検索

    Excelの初心者です。申し訳ありませんが、次の件でどなたか教えていただけませんか? エクセルシートには、例えば下記のような文字列の並びがあります。      1       2       3    … 1  文字列11  文字列12  文字列13 2  文字列21  文字列22  文字列23 … 各セルはプルダウンリストにて幾つかの異なった文字列がリストアップされてあります。 各セルの文字列をリストから選び、4列目以降にリストの組み合わせに完全に合致するような結果を示したいと考えております。このようなシートを作成するにあたり、御知恵をいただければありがたく思います。 上記の件、どうぞよろしくお願いいたします。

  • 文字列検索&分解の方法に関して

    C言語初心者です。 現在、文字列の検索&分解のプログラムを作成しようとしているのですが、なかなかうまくいきません。 やりたいことは、カンマくぐりのCSV形式の文字列をカンマ毎に分解して出力させたいのです。 (例) 入力データ:"TEST1,TEST2,,TEST3" 出力結果: No1:TEST1 No2:TEST2 No3: No4:TEST3 カンマをstrchrにて検索したりしてはみましたが、うまく出力されないといった感じであります。 大変申し訳ございませんが、方法・ヒントを頂けるとうれしいです。 どうかよろしくお願いいたします。

  • 文字列リストから文字列リストの抽出

    A列のリストの文字列に、B列のリストの文字が含まれていたらそれを取り出すにはどうしたらよいでしょうか? ※画像を参照してください。 例:A2セルの文字列にB2~B4の文字が含まれていないかをチェック、含まれていた文字列(B2~B4の内容)をC列に表示する。 関数なら何とかできますが、マクロの知識がほとんどありませんのでマクロが必要になるようでしたら詳しく教えていただければ幸いです。 よろしくお願いいたします。

  • カンマで区切られた文字列を

    カンマで区切られた文字列(仮にA1のセルに(1)、(2)、(3)というように入っている)を一つずつのセルに収めるにはどのようにしたらよいのでしょうか?(B1に(1)、B2に(2)、B3に(3)というように) よろしくお願いいたします。

  • [EXCEL2003]セルのリストの文字数制限を回避する方法

    EXCEL VBAで業務アプリを作成しておりまして、セル上に データ(D) → 入力規則(L) → 入力値の種類でリストを選択 でリストを作成しております。しかしリストをカンマ区切りの 文字列で指定すると255文字までしか入力できません。 リストの内容はセルのレンジ指定でも可能ですが、同一シート上を 参照する場合のみ対応しており、画面構成上使用できません。 文字列で255文字を越えて指定する方法はありますか? または他シートのセルをレンジ指定する方法はありますか?

  • Excelで文字列をワイルドカード検索して対象文字があれば○を入れる

    Excelで文字列をワイルドカード検索して 対象文字があれば「○」を入れたいのですが 関数もマクロもいいものが見つかりません。 ※Excel98です。 なにかありませんでしょうか。 例:セル内に「チョコレート」という文字があれば隣の列に「○」を入れる。 チョコレートたべたい。⇒○ 飴が食べたい。⇒× チョコレートが買いたい。⇒○ わかる方、どうぞよろしくお願い致します。

  • Excel2003での改列方法

    こんにちわ。 私はWindowsXPのExcel2003のVBAでテキストファイル のデータ(カンマ区切り)を指定したセル列に代入 したいと思っているのですが、途中でセル列を変えたら データの続きから代入したいのですが上手くいきません。 この説明だと分かりづらいと思うので下記の例を見てください。 例) テキストファイルの中身: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, 11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,      :      ・ 90,91,92,93,94,95,96,97,98,99,100 セル列(B1:B10)に1~10の値を代入し、他のセル列(E1:E10)に11~20の値を,またその他のセルに30~のデータを10ずつ区切って代入したい考えています。下記のコードを実行したところ、 Do Until EOF(intFF) Line Input #intFF, tmp buf = Split(tmp, ",") Worksheets("sheet1").Range("B1:B10,E1:E10,H1:H10") = buf Worksheets("sheet1").Range("B1:B10,E1:E10,H1:H10") = WorksheetFunction.Transpose(buf) Loop Close #intFF 最初のB列にはきちんと代入されるのですが、E列では全てのセルに1が、H列にはB列の値(1~10)が代入されてしまいます。どうしたら良いのかお教え願います。

  • 関数でエクセルのセル内の文字列の検索方法を教えてください。

    エクセルであるセルの中に長い文字列が入力されているとします。 その隣のセルに単語を入力すると、もし長い文字列のなかにその単語があれば、文字列中の単語が選択されて、単語の有無が判断できるような、仕組みを作りたいのですが、エクセルで作成するのは可能でしょうか。 また、住所データのようなリストを作成し、別シートにおいて、あるセルに苗字のような単語を入力すると、コメントのような感じでリストから絞り込んで表示することはできるでしょうか。(隣のセルとかでもかまいません。)gooサジェストのような感じで、、、 教えてください、よろしくお願いします。

  • 文字列からカンマを取り除きたい

    文字列の中にあるカンマを取り除く関数はないでしょうか? 例) "9,999,999,999.00" ===>> "9999999999.00"

  • 文字列からカンマを取り除きたい

    文字列の中にあるカンマを取り除く関数はないでしょうか? 例) "9,999,999,999.00" ===>> "9999999999.00"

専門家に質問してみよう