Excel関数で複数の検索条件を満たす場合の値を返す方法

このQ&Aのポイント
  • Excel関数を使用して、セルA2にある文字列が別ファイルのA列にある文字列を含む場合はセルB2に○を、含まない場合は×を入力する方法について教えてください。
  • book1.xlsのシート1のA2にある文字列が、book2.xlsのシート1のA列にある文字列のいずれかを含む場合、book1.xlsのシート1のB2に○を、含まない場合は×を結果として反映させる方法を関数で行うことは可能でしょうか?マクロやVBAではなく関数での実現方法を教えてください。
  • 質問者はExcel関数を使って、特定の条件を満たす場合にセルに指定の値を入力する方法を知りたいとしています。具体的には、セルA2にある文字列が別ファイルのA列にある文字列を含む場合はセルB2に○を、含まない場合は×を入力したいとのことです。マクロやVBAではなく、Excel関数だけを使って実現できるかどうかを教えてください。
回答を見る
  • ベストアンサー

Excelの関数で、検索条件(複数)を満たす場合値を返す方法について質

Excelの関数で、検索条件(複数)を満たす場合値を返す方法について質問です。 セルA2にある文字列が、別ファイルのA列にある文字列を含む場合セルB2に○を、含まない場合は×を入力する関数を教えて下さい!! --------- book1.xls シート1 A2にある文字列が、 book2.xls シート1 A列にある文字列のいずれかを含む場合、 book1.xls シート1 B2に「○」を、含まない場合は「×」を結果として反映させたいです。 ※book1.xlsのリストは全角カナ、book2.xlsのリストは半角カナ です。 ※book2.xls シート1にある検索条件は行列共に増える可能性があります。 マクロやVBAではなく関数で行うことは可能でしょうか? 勉強不足ですみません。 色々調べて試しているのですが、なかなかうまくいかないのでお力をお貸し下さい。 よろしくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.8

No.6です! たびたびごめんなさい。 今後Book2の行・列ともに増える可能性があります!の件に対応できるように 前回の方法を少し発展してみました。 もう一度画像をアップします。 Book2のデータにまず、入力することがない!という「#」を入力し、それを数式の範囲に指定します。 (このデータ量は適宜変更してみてください。) そして数式に入力セルすべてを範囲指定しておき、「#」が入力してあるセルに 増えていくデータを入力するとBook1に反映されると思います。 数式は前回と同じですが、Booi1のC2セルに =IF(B2="","",IF(OR(ISNUMBER(FIND([Book2]Sheet1!$A$1:$B$10,B2))),"○","×")) (前回同様配列数式ですので、Shift+Ctrlキーを押しながらEnterキーで確定です) これをオートフィルで下へコピーします。 以上、何度も失礼しました。m(__)m

nondakurenyanko
質問者

お礼

丁寧な回答を頂き、ありがとうございます。 とてもわかりやすく、勉強になりました。 感謝感激です。 関数って思っていた以上にいろんな事ができて 奥が深いですね!! 今まではVBAマクロばかりやっていましたが これを機に関数ももっと勉強しようと思います! ありがとうございました!!

その他の回答 (7)

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

COUNTIF関数では参照するファイルを開いていないと#VALUEエラーとなりますので、以下のような配列数式を使う必要があります。 =IF(MAX(INDEX(([Book2.xls]Sheet1!$A1:$A1000=ASC(A2))*1,)),"○","×")

nondakurenyanko
質問者

お礼

回答ありがとうございます。 ただ、この数式ですと完全一致の場合のみ「○」になり、 Book2の文字列が含まれる場合は「○」とならないのでは??? 参考にさせて頂き、引き続き勉強します! ありがとうございます!

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

こんにちは! いくつか問題点があると思います。 (1)Book1とBook2の表示が全角・半角の違い → これはどちらかに作業用の列を設けることによって解決します。 (2)Book2のデータが行・列とも今後増える可能性がある → これは関数では難しいように思われます。 (3)>マクロやVBAではなく関数で行うことは可能でしょうか? → (1)・(2)の制約条件があるために関数だけで!となるとかなり複雑な数式が必要になると思われます。 (実際に今後データが増える件に関して対応できるかどうかは判りません) ただ、問題点だけ指摘しても解決の糸口にはならないと思いますので、 無理やりって感じの方法です。 ただし、Book2のデータはお示しされているものだけとします。 (↓の数式に空白部分を範囲指定してしまうとすべてに「○」が付いてしまいます。) ↓の画像で説明します。 まず、Book1のB列に作業用の列を設けます。 作業列B2セルに =ASC(A2) としてフィルハンドルの(+)マークでダブルクリック 結果のC2セルに =IF(B2="","",IF(OR(ISNUMBER(FIND([Book2]Sheet1!A$1:A$7,B2))),"○","×")) これは配列数式になってしまいますので、この画面からコピー&ペーストしただけではエラーになると思います。 C2セルに貼り付け後、F2キーを押す、またはC2セルをダブルクリック、または数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定します。 このC2セルをオートフィルで下へコピーすると画像のような感じになります。 今現在、関数での方法といえばこの程度しか思いつきません! 他に良い方法があれば読み流してくださいね。m(__)m

noname#204879
noname#204879
回答No.5

》 book1.xls シート1 A2にある文字列が、 》 book2.xls シート1 A列にある文字列のいずれかを含む場合、 それって、日本語として正しいですか?   book1.xls シート1 A2にある文字列が、   book2.xls シート1 A列にある いずれかのセルの文字列と等しい場合、 ということでは?

nondakurenyanko
質問者

補足

ご指摘ありがとうございます。 わかりづらくて申し訳ありません。 》 book1.xls シート1 A2にある文字列が、 》 book2.xls シート1 A列にある文字列のいずれかを含む場合、 完全一致のものだけを結果として「○」とするのではなく その文字列を含むものも「○」としたいのです。 例えば book1.xls シート1 A2にある文字列が「パインジュース」で book2.xls シート1 A列にあるいずれかのセルの文字列に「パイン」があった場合 結果を「○」としたいのです。 「~と等しい」としてしまうと完全一致のみ対象になってしまうのではないかと思い、おかしな表現になってしまいました。 すみませんでした。

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

=IF(A2="","",IF(COUNTIF([Book2.xls]Sheet1!A:A,ASC(TRIM(A2)))>0,"〇","×")) この式の意味ですがブック2のシート1のA列にA2セルのデータがあるかどうかをCOUNTIF関数で調べていますが、調べるに当たってはA2セルのデータについてTRIM関数でスペースなどが誤って入力されていることをなくした状態にした後でASC関数で文字を半角に変換し、それ文字列がブック2のA列に有るかどうかを調べています。もしも文字列がブック2のA列に有った場合には〇を無ければ×を表示することになります。 TRIM関数を使っているのはデータを入力する際に誤って文字列の後に空白を入れてしまったような場合にはその空白を取ってから半角文字にしてブック2のA列のデータと比較をしていることになります。

nondakurenyanko
質問者

お礼

丁寧な回答を頂き、ありがとうございます。 ただ、この数式ですと完全一致の場合のみ「○」になり、 Book2の文字列が含まれる場合は「○」とならないのでは??? 引き続き、勉強します!!

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

>検索条件(複数)を満たす こんな場を複数条件とは言わない。 A列(例名前)とD列(例年齢)の両方に条件該当を考えるのが複数条件。 ーー 難しさ (1)他ブックに検索表がある。 他ブックの場合の番地の参照の仕方を http://www.excel-jiten.net/formula/ref_other_books.html の最後のほうの記事で勉強すること。 その他ブックは開いておくこと。 ーー (2)一方は全角、検索表の方は半角と言う不統一 検索データを半角にして、統一して考える。 ーーー 例データ まず第1ステップ。検索表が同一シートの場合の例です 例データ Sheet1 A-D列 カンダ #N/A カンダ ○ ウエノ #N/A ウエノ ○ シブヤ #N/A #N/A (チェック) シナガワ #N/A シナガワ ○ 検索表 F列 ウエノ アサクサ カンダ シンジュク シナガワ B2の式 =VLOOKUP(A2,$F$1:$F$100,1,FALSE) 下方向に式を複写 C2の式 =VLOOKUP(ASC(A2),$F$1:$F$100,1,FALSE) 下方向に式を複写 D2の式 =IF(ISERROR(VLOOKUP(ASC(A2),$F$1:$F$100,1,FALSE)),"(チェック)","○") 下方向に式を複写 このD列を納得してから、検索表をブック2に置くとVLOOKUP関数の第2引数をどう変えるべきか 勉強したほうが、質問者のためになるとおもう。 やってみてください。

nondakurenyanko
質問者

お礼

ご指摘ありがとうございます。 確かに複数条件とは異なりますね・・・。 おかしな表現ですみませんでした。 正直VBAでやってしまいたいところですが 「関数で」と依頼されているので四苦八苦しています。 参考にさせて頂き、色々やってみます。 ありがとうございます!

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

次の式がベターでしょう。 =IF(A2="","",IF(COUNTIF([Book2.xls]Sheet1!A:A,ASC(TRIM(A2)))>0,"〇","×"))

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

Book2を立ち上げておいてからBook1を開きB2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",IF(COUNTIF([Book2]Sheet1!A:A,ASC(TRIM(A2)))>0,"〇","×"))

関連するQ&A

  • EXCEL 条件によって異なる関数を使用したい

    特定のセルに数字を入力すると、その数字に対応する関数式が呼び出される・・・といった動作は可能でしょうか? 例えば A1に「001」と入力するとB1には他のファイル(ブック)の所定のセルの文字列をもってくるものです。 予め同一フォルダには1年1組全員のファイルが納められ、 001さんは「1年1組_001.xls」 002さんは「1年1組_002.xls」 003さんは「1年1組_003.xls」 ・・・ というファイル名がつけられています。 管理台帳ファイルの「国語」シートのA1に、例えば“001”と入力するとB1には「1年1組_001.xls」の「国語」シートの同じセルに記入してある国語の点数を参照させたいものです。 管理台帳のB1には仮に関数式が  ='[1年1組_001.xls]国語'!$B$1 と記載されていればOKなのですが、 A1に“002”と入力すれば関数式は  ='[1年1組_002.xls]国語'!$B$1 と変わるべく機能して欲しいものです。 ='[1年1組_***.xls]国語'!$B$1 “***”の文字列のみA1を反映させたいわけです。

  • EXCELで複数の値を検索する

    ■シートA   A列   B列   受験ID  合格判定 1 ID001 2 ID002 3 ID003 4 ID004 5 ID005 ■シートB   合格者リスト 1 ID002 2 ID005 上記のようなデータがあり、シートBの合格者リストにIDが ある場合、シートAのB列「合格判定」に「合格」と入力 したいのです。 この場合の合格は、ID002とID005ですから B2とB5に「合格」と文字を入れたいのです。 合格者リストが数回変動しますので、B列に関数で入力したいです。

  • エクセル 複数条件 VLOOKUP

    おしえて下さい。 エクセルで、下記の表のように【ブック1】のA列の条件に一致するものを 【ブック2】のシート1、シート2どちらかから検索して一致するものを 【ブック1】のB列へ抽出したいのですが、IF関数やVLOOKUPの組み合わせで 可能でしょうか? うまく説明できずにすみません。 例) 【ブック1】      A  B    1 001 あああ    2 004 えええ    3 003 ううう    4 006 かかか 【ブック2】 シート1      A  B     1 001 あああ    2 002 いいい    3 003 ううう シート2      A  B     1 004 えええ    2 005 おおお    3 006 かかか

  • Excelにて複数条件を満たす行の特定のセルの値を返す関数

    Excelにて複数条件を満たす行の特定のセルの値を返す関数を作りたいのですが、上手く行きません。 <Sheet1>   A列  B列  C列 1 2008/6/1 ★  320 2 2008/6/1 ☆  300 : : : Sheet2のA1に、「A列が2008/6/1で、B列が☆の場合、C列の値を返す」という関数を入れたいのですが、どうも上手く行きません。 良い式がありましたら教えて下さいm(_ _)m

  • EXCEL 検索条件をハイライト

    EXCELでシート1に A行に番号(型番)(A-1、A-2、A-3・・・・・)が入っています。 シート2のA行に検索条件になるリストがあります。 A-3、A-10 などなど この検索条件に合致したシート1のA行のセルをハイライトしたいのですが、良い方法はありますでしょうか? つまり、この場合、例えばVBAなら実行すると、シート1のA-3という文字列が入ったセルと、A-10という文字列が入ったセルがハイライト(背景の色が変わる)される、といった具合の結果を必要としています。 よろしくお願い致します。

  • Excel 日付の検索条件

    A列に日付、B列に数値が入っていると仮定します。 たとえば、A列に2004/5/1~2004/5/31という数値が入っている場合、該当するB列の数値の合計をだしたいです。 シートのデータが無限に増えていく為、どこかのセルに検索条件を置く、という形は使用したくありません。 =SUMIF(A:A,"【2004/5/1~2004/5/31】",B:B)の関数を使用したいのですが、検索条件をどうすればいいのかがよくわかりません。 (何を記入しても0を返してきます) 検索条件、または他に使用できる関数があれば教えていただきたいです。 宜しくお願いします_(._.)_

  • 【Excel-VBA】アクティブセルが参照しているブックを開くには?

    いろいろ検索したのですが、見つからないので質問させていただきます。 対象のセルが他ブックのセルを参照しているとき、そのブックが開かれていない場合、正しい値にはなりません。 (例:A1に =[Book2.xls]Sheet1!$A$3 が入力されている) そこで、そのセルが参照しているブックをVBAで自動的に開く方法を考えています。 つまり、例で言えば、Book2.xlsを開きたいのです。 文字列関数を使ってひとつひとつの文字を取得し、ファイル名を得て開く方法しかないのでしょうか? 何かいい方法があれば教えてください。 よろしくお願いします。

  • EXEL2000 複数条件で集計を求める関数式

    検索範囲のA列における検索条件が[A5001]セルと同じ値、B列が[B5001]セルと同じ値であるもののC列[C1:C5000]の合計は =SUMPRODUCT((A1:A5000=A5001)*(B1:B5000=B5001)*C1:C5001) では、検索範囲A列が検索条件が[A5001]セルと同じ値の文字列を含むもの、B列が[B5001]セルと同じ値であるもののC列[C1:C5000]の合計をする場合に (たとえば、リストの A列データの値は、青森リンゴ、長野リンゴ、和歌山ミカン等、 B列データの値は、大、中、小等、 C列データの値は、その売上高、 検索条件[A5001]セルの値が[リンゴ]、 [検索条件B5001]セルの値が[大]である場合に、 リンゴという文字列が含まれており且つ大であるものの売上合計金額を求める) =SUMPRODUCT((A1:A5000="*"&A5001&"*")*(B1:B5000=B5001)*C1:C5001) を試しましたがだめでした。 これとは別に、 =SUMPRODUCT(COUNTIF(A1:A5000,"*"&A5001&"*")/COUNTIF(A1:A5000,"*"&A5001&"*"))*(B1:B5000=B5001)*C1:C5001) も試しましたがだめでした(数日前にこちらで教えていただきまして、行数が10行程度の仮のリストで試しましたらうまくいきましたが、実際のリスト(5000行以上)では#VALUE!が返ります。リストは「値のみ貼付」で得られたデータのみが入っています) このリストで、5001行以降に検索条件が多数並んでいます。 EXEL2000で可能な関数式を教えて下さい。よろしくお願いします。

  • エクセルの関数で ある条件(複数)から参照する方法を教えてください。

    類似の設問があるのかもしれないのですが、急いでいるので質問させてください。<(_ _)> Excel関数で、以下のようになっています。 A1セルに 1 B1セルに 2 C1セルに 3 どのセルも単数回答です。 これは、次の語句を数値化したものです。 赤:1、青:2、黄:3となっています。 そして、A2セルに、条件を満たす文字列を入れたいのです。 A2セル=A1が1の場合は赤、2の場合は青、3の場合は黄 として、 ここでは、「A1は1」なので、"赤"という文字列を入れたいのです。 同様に、 B2セル=B1が1の場合は赤、2の場合は青、3の場合は黄 として、 ここは、「B1は2」なので、"黄"という文字列を入れたいのです。 こういった場合は、IF COUNTIFなどで作成していくのでしょうか? よろしくお願いいたします。<(_ _)>

  • エクセルの関数について

    毎月のデータが入るBook1(仮、中はSheetで分けてあり毎月できます。)があり、その中の必要なデータをBook2(仮)へ移そうと思ってBook2の移したいセルへ [Book1.xls]Sheet01'!A1 と入力したのですが、次の月のデータが出来た場合、Book2のどこかのセルにbook名を入力すると[Book1.xls]Sheet01'!A1のbook名のみ変えることは出来ますか? またなにかいい方法はあれば教えて頂きたいです。 皆さん、宜しくお願いします。 

専門家に質問してみよう