エクセルで複数のワードで検索して処理を分岐する方法

このQ&Aのポイント
  • エクセルで複数のワードを検索し、条件に応じて処理を分岐させる方法について解説します。
  • 例えば、ワードが含まれているかどうかを別の列に表示するために、VLOOKUP関数を使用することができます。
  • 別のシートに検索ワードと対応する処理結果を記載し、VLOOKUP関数で参照することで、効率的かつ柔軟な処理を行うことができます。
回答を見る
  • ベストアンサー

エクセルで複数のワードで検索をして、処理を分岐させたい。

エクセルで複数のワードで検索をして、処理を分岐させたい。 例えば、 焼きたてのリンゴのおかし おいしいみかんのゼリー もぎ立てぶどうジュース などとテキストがあったとします。 それぞれを関数で検索(参照?)して、中に「リンゴ」というワードが含まれていたら、別の列に「アップル」と表示、「みかん」というワードが含まれていたら「オレンジ」という風に処理をしたいと思っています。2つや3つならif文で書いていけば良いのかもしれませんが、大変多くの項目があり、また随時追加項目が発生する可能性があるので、この部分を別シートなどで管理できないかと考えています。 例えば、別のシートに リンゴ,アップル みかん,オレンジ ぶどう,グレープ などと記載しておいて、VLOOKUPで参照してどうにか出来ないかという感じです。 直接if文で全ての分岐を書いたら、とても時間がかかりそうですし、項目を増やしたい時にはとても大変そうです。 どなたかアソバイスをお願いします。

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

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

変換前のデータがD2セル以下に、変換後のデータがE2セル以下に入力されている場合、以下の式をB2セルに入力して下方向にオートフィルしてください(添付画像参照)。 =INDEX(E:E,MIN(INDEX(ISERROR(FIND($D$2:$D$10,A2))*1000+ROW($E$2:$E$10),)))&"" 他シートに抽出する場合は、適宜セル参照を変更してください。

pochitarou
質問者

お礼

ありがとうございます。 試してみたところ出来ました! 式もシンプルなので、良回答とさせていただきます。

その他の回答 (1)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 今仮に、Sheet2に      A列   B列 1行目 リンゴ アップル 2行目 みかん オレンジ 3行目 ぶどう グレープ と入力されていて、 Sheet1のA1セルに おいしいみかんのゼリー 等の文字列が入力された時に、Sheet1のB1セルに、 オレンジ 等と表示させるものとします。  その場合、Sheet1のB1セルに次の数式を入力すると良いと思います。 =IF(SUMPRODUCT((ISERROR(FIND(Sheet2!$A$1:$A$99,$A1))=FALSE)*(Sheet2!$A$1:$A$99<>""))=0,"",INDEX(Sheet2!$B:$B,SUMPRODUCT((ISERROR(FIND(Sheet2!$A$1:$A$99,$A1))=FALSE)*(Sheet2!$A$1:$A$99<>"")*ROW(Sheet2!$A$1:$A$99))))  尚、Sheet2のリストが99行以上ある場合には、上記の数式中の 99 の部分を、Sheet2のリストの行数を上回るのに充分な数に変更して下さい。  又、Sheet2のリストの行数が変化して、将来的には何行まで増えるのか、予測する事が困難な場合には、上記の数式中の Sheet2!$A$1:$A$99 の部分を、 OFFSET(Sheet2!$A$1,,,MATCH("゜",Sheet2!$A:$A,-1)) に変更して、 =IF(SUMPRODUCT((ISERROR(FIND(OFFSET(Sheet2!$A$1,,,MATCH("゜",Sheet2!$A:$A,-1)),$A1))=FALSE)*(OFFSET(Sheet2!$A$1,,,MATCH("゜",Sheet2!$A:$A,-1))<>""))=0,"",INDEX(Sheet2!$B:$B,SUMPRODUCT((ISERROR(FIND(OFFSET(Sheet2!$A$1,,,MATCH("゜",Sheet2!$A:$A,-1)),$A1))=FALSE)*(OFFSET(Sheet2!$A$1,,,MATCH("゜",Sheet2!$A:$A,-1))<>"")*ROW(OFFSET(Sheet2!$A$1,,,MATCH("゜",Sheet2!$A:$A,-1)))))) として下さい。  それと、上記の数式は リンゴとぶどうのミックスジュース のように、抽出文字列が複数の場合には対応しておりません。  もし、抽出文字列が複数の場合にも対応しなければならない場合には、補足等でお知らせ願います。

pochitarou
質問者

お礼

ありがとうございます。 試してみたところ出来ました!

関連するQ&A

  • エクセルのデータ処理で困っています

    あまりエクセル関数に詳しくないので困っております。 2点ほど質問があるのですが… 1. B1セルから横に    [A], [B], [C] , [D] , [E] , [F] [1]      , mikan, ichigo , - , mikan , - [2]      , - , ichigo , ichigo , ichigo, -    と入っています。 (桁がずれて表示されてしまうので、セルの区切りにカンマを入れました。見えづらくてすみません。以下の表も同様です)   この時、各行毎に、入力されているデータ(ハイフンは除く)が同じものであるかどうかを判定し、同じであれば●を、違うものが混じっていれば×を、[A]列に入力したいのです。  結果としては[A1]が×、[A2]が●となればよいのですが…  if(B1=C1=D1=E1=F1,"●","×")と入れてみましたが、"-"をどう処理すればよいのかわからず、お手上げです。 2. B1セルから横に   [A], [B], [C], [D] [1]     Q05 ,   mikan , orange [2]     P05 ,   mikan , orange [3]     S12,   りんご,   apple [4]     R09,   ぶどう,   grape [5]     P10 ,   ringo, apple [6]     S16,   りんご,   apple [7]     P30 ,   みかん,  orange [8]     T42 , ミカン,  orange と入っています。  [A]列に重複の有る無しを入力したいのですが、条件があり、  まず、[D]列が同じものであること、  次に、[B]列の数字部分が等しくないものについて、  上から順番に、重複1、重複2,…と[A]列にいれていきたいのです。  [A]列にはすべて同じ式を入れますが、重複でないセルは"" になるように設定していただくと助かります。 結果として、      [A], [B], [C], [D] [1] 重複1, Q05 , mikan, orange [2]   ,  P05, mikan, orange [3] 重複2, S12, りんご,   apple [4]   ,   R09, ぶどう,   grape [5] 重複2, P10 , ringo, apple [6] 重複2, S16,   りんご,   apple [7] 重複1, P30 , みかん,  orange [8] 重複1, T42, ミカン,  orange   このようになれば、と思っています。  これについては、頭の中が混乱して、お手上げ状態です。   未熟者なので、関数でご教授いただければありがたいですが、もし無理なようであればVBA でも… よろしくお願いいたします。

  • エクセルで数値の大きい順番に項目を並べたい

    お知恵をお貸しください。 シート1のA列に項目が入力されており、B列にはそれに対応した数値が入力されています。 ここで、シート2のD列にB列の数値の大きな順番にA列の項目を並べ変えたものを取り込みたいのです。 例 A列   B列    別シートD列   りんご  500        なし   みかん  350        ぶどう   なし   700        りんご   ぶどう  650        みかん 欲しいのは項目のみです。但しシート1はいじりたくありません。 よろしくお願いします。

  • IF 分岐処理がうまくできません

    エクセルVBAで、分岐がうまくできません。 A、B,Cのリンゴとみかんの3種類の仕入れパターンがあり仕入の数量を算出したいですが、適正値が算出されません。 どのようにしたら、適正値を算出できるにのか教えてください。 Sub 仕入計算() Dim i As Integer 'A リンゴは、500以下になったら1000個になるように仕入 'A みかんは、500以下になったら1000個になるように仕入 i = 2 Do While Worksheets("sheet1").Cells(i, 1) <> "" If Cells(i, 1) = "A" And Cells(i, 2) <= 500 Or Cells(i, 3) <= 500 Then Worksheets("sheet1").Cells(i, 4) = 1000 - Cells(i, 2) Worksheets("sheet1").Cells(i, 5) = 1000 - Cells(i, 3) End If i = i + 1 Loop 'B リンゴは、400以下になったら2000個になるように仕入 'B みかんは、400以下になったら2000個になるように仕入 i = 2 Do While Worksheets("sheet1").Cells(i, 1) <> "" If Cells(i, 1) = "B" And Cells(i, 2) <= 400 Or Cells(i, 3) <= 400 Then Worksheets("sheet1").Cells(i, 4) = 2000 - Cells(i, 2) Worksheets("sheet1").Cells(i, 5) = 2000 - Cells(i, 3) End If i = i + 1 Loop 'C リンゴは、300以下になったら3000個になるように仕入 'C みかんは、300以下になったら3000個になるように仕入 i = 2 Do While Worksheets("sheet1").Cells(i, 1) <> "" If Cells(i, 1) = "C" And Cells(i, 2) <= 300 Or Cells(i, 3) <= 300 Then Worksheets("sheet1").Cells(i, 4) = 3000 - Cells(i, 2) Worksheets("sheet1").Cells(i, 5) = 3000 - Cells(i, 3) End If i = i + 1 Loop End Sub 結果は以下になってしまいます。 id  りんご みかん りんご仕入 みかん仕入 A 500 700   500 300 A 400 600 600 400 A 300 500 700 500 A 300 400 1700 1600 A 200 300 2800 2700 A 100 200 2900 2800 B 500 400 1500 1600 B 400 600 1600 1400 B 340 500 1660 1500 B 260 400 1740 1600 B 180 300 2820 2700 B 100 200 2900 2800 C 200 700 2800 2300 C 500 200 2500 2800 C 300 500 2700 2500 C 200 400 2800 2600 C 100 300 2900 2700 C 100 200 2900 2800 Cは、適正値ですが、A,Bの1部の計算ができません。

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

    エクセルの関数について困っております。 関数については、詳しくありません。お力をおかし下さい。 添付にある図の、sheet1 のリンゴ ミカン ブドウ を sheet2 の別のセルに、リンゴ.ミカン.ブドウと入力した際、その下に記入してある11111111111111 の数字を、同じように反映する為には、sheet2 のリンゴ等の文字の下には、どの様な関数を入れればよいですか? 関数でそこまで出来るのでしょうか? よろしくお願いします。  

  • エクセル 関数

    エクセル関数が少し使えるレベルの者です IF分についてですが  IF(データ,(IF(リンゴ*,数量の総和,0)),0) データ 数量 リンゴC   4 ミカンA  6 ブドウT  7 リンゴA  2 上記の答えは"6"ですが、6の内訳は    リンゴC   4    リンゴA  2 となります、ピボットテーブルを使うと表のセル"6"をWクリで 別シートに内訳が表示されるのですが、IF文条件より抽出 されたデータ表示はできませんか? 可能な操作の仕方があれば教えてください。

  • エクセル データの集計表を作成する

    シート1のデータを集計してシート2に結果を出したいのですが、関数を使いどのように行えば良いかお教えいただけますでしょうか。 りんご  A みかん  A りんご   りんご  B ぶどう   このようなデータがあり 1.その中にある項目を自動で一つ出し、 2.それぞれ済の分を集計して・・・ Aの集計 商品   個数 りんご   1 みかん   1 ぶどう   0 というようにしたいのですが、どなたかお答えいただけますでしょうか?よろしくお願い致します。

  • エクセルの表からの検索

    商品名/Kg  3k  4k  5k りんご    800円 900円 1000円 みかん    700  800   900 オレンジ    600  700    800 なし      500   600    700 別シートに作成した上記の様な表を参照して、 A1のセルに商品名のりんご  B1のセルに3キロと入力すると C1のセルに800と表示されるようにしたいのですが、 簡単な関数等ありましたら教えてください。 よろしくお願い致します。

  • エクセルVBAで、分岐がうまくできません。

    A,B,,Cのりんごとみかんの3種類の仕入れパターンがあり仕入の数量を算出したいですが、適正値が算出されません。 どのようにしたら、適正値を算出できるにのか教えてください。 Sub test() Dim i As Integer 'A リンゴは、500以下になったら1000個になるように仕入 'A みかんは、500以下になったら1000個になるように仕入 'A みかんまたはりんごの片方が500以下になったらみかんとりんごを1000個になるように仕入 i = 2 Do While Worksheets("sheet1").Cells(i, 1) <> "" If Cells(i, 1) = "A" And Cells(i, 2) <= 500 Or Cells(i, 3) <= 500 Then Worksheets("sheet1").Cells(i, 4) = 1000 - Cells(i, 2) Worksheets("sheet1").Cells(i, 5) = 1000 - Cells(i, 3) 'End If 'i = i + 1 'Loop 'B リンゴは、400以下になったら2000個になるように仕入 'B みかんは、400以下になったら2000個になるように仕入 'A みかんまたはりんごの片方が400以下になったらみかんとりんごを2000個になるように仕入 i = 2 'Do While Worksheets("sheet1").Cells(i, 1) <> "" ElseIf Cells(i, 1) = "B" And Cells(i, 2) <= 400 Or Cells(i, 3) <= 400 Then Worksheets("sheet1").Cells(i, 4) = 2000 - Cells(i, 2) Worksheets("sheet1").Cells(i, 5) = 2000 - Cells(i, 3) 'End If 'i = i + 1 'Loop ''C リンゴは、300以下になったら3000個になるように仕入 ''C みかんは、300以下になったら3000個になるように仕入 'A みかんまたはりんごの片方が300以下になったらみかんとりんごを3000個になるように仕入 i = 2 'Do While Worksheets("sheet1").Cells(i, 1) <> "" ElseIf Cells(i, 1) = "C" And Cells(i, 2) <= 300 Or Cells(i, 3) <= 300 Then Worksheets("sheet1").Cells(i, 4) = 3000 - Cells(i, 2) Worksheets("sheet1").Cells(i, 5) = 3000 - Cells(i, 3) End If i = i + 1 Loop End Sub

  • 【エクセル】リストと一致するデータを抽出し、文字に色をつけることは可能でしょうか?

    エクセルで作成したファイルの【シート1:表】に様々なデータを打ち込んでおり、【シート2:リスト】にはリスト一覧を入れています。 シート1の表で、リストと該当する文字列だけに色をつけることは可能でしょうか。表はこのような感じです。 【表】   A列    B列 1 りんご   apple 2 りんごを食べる eat an apple 3 みかん     orange 4 みかんを買う  get an orange 【リスト】   A列       B列 1 りんご     apple 2 みかん     orange このような表なのですが、例えば、1行目、3行目はリストと同じなので赤い文字で表示し、A2のセルの「りんごを食べる」の「りんご」とB2セルの「eat an apple」の「apple」、またA4セルの「みかんを買う」の「みかん」と「get an orange」の「orange」の文字列だけを赤字にするようなことは可能でしょうか。 少量のデータなら手作業で変更できるのですが、データが大量にあるため手作業では追いつかず困っています。どなたかご存知の方がいらっしゃいましたら、よろしくお願いいたします。

  • Excel シート毎の比較、抽出

    教えて頂きたい事が、二つあります。 sheetの名前が 「合計」「レモン」「みかん」「オレンジ」「ブドウ」「ひな形」とあります。 (1)各果物のSheetのセル(R7C6)に売上率が書いています(数値)  各果物のSheet毎に売上率を比べて  「合計」Sheetの同位置のセル(R7C6)に、一番高い売上率を表示させたい。 (2)もう一つは  各果物のSheetのあるセル(R7C7)に色が書いてあります(文字列)  書いてないこともあります。  「合計」Sheetの同位置のセル(R7C7)に各Sheetより抽出したデータを  表示させたい。    例えば    Sheet 「レモン」「みかん」「オレンジ」「ブドウ」「ひな形」    R7C7    黄    紫   (空欄)   群青  (空欄)    でSheet「合計」セル(R7C7)に         [黄 紫 群青]    と言うような具合。   「=レモン!R7C7&" "&みかん!R7C7&" "&オレンジ!R7C7&" "&ブドウ!R7C7」    とすると、スペース分が出てしまい、綺麗に表示されません。 今後フルーツが増えていく予定 (「合計」「レモン」「みかん」「オレンジ」「ブドウ」「メロン」「ひな形」) (「合計」「レモン」「みかん」「オレンジ」「ブドウ」「りんご」「メロン」「ひな形」) (「合計」「パイナップル」「レモン」「みかん」「オレンジ」「ブドウ」「りんご」「メロン」「ひな形」) なので間(合計が先頭でひな形が一番後ろ)に新しいsheetが入っても、対応できるような式がいいのですが・・・

専門家に質問してみよう