• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL関数で部分一致同士を検索する方法)

EXCEL関数で部分一致同士を検索する方法

kagakusukiの回答

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

 御質問にある様に、チェックしたい項目に該当する文字列が、A列(黄色の網掛け部分)に入力されている原材料の食品名の中に見つかった場合にのみ「○」を、見つからなかった場合には「-」を表示させる、というだけの事でしたら回答No.2様や回答No.3様の方法でも一応は可能です。  ですが、御質問の件は「アレルギーの原因となり得る食材が使われているのか否かの判定」を自動で行うという事ではないでしょうか?  その場合、もし、機械に(文字通り)機械的に判定させますと、黄色の網掛け部分に書かれている食材の中に、アレルギーの原因と成り得る原料で作られていながら、緑の網掛け部分に書かれていない食材があった場合には、アレルギーの原因となる食材が使われているにも関わらず「-」が表示されてしまう事になります。  そして、その様な誤った判定結果が表示されていても、それを見た人間は 「パソコンのリストには○印が無いから大丈夫だな」 と考えてしまい、使われている食材をチェックし直す事を怠る様になってしまう恐れがあります。  もしも、緑の網掛け部分に入力されている食材のリストが、アレルギーの原因となる全ての食材の名称を、表記のゆれ等も含めて完全に漏らさず網羅しているという事であれば、機械任せでも構わないのですが、現実的にはその様な完璧なリストを作る事は困難です。  アレルギーの原因となり得る食材のチェックは人命に関わる事なのですから、実際には不完全なリストに対して、完璧なリストであると誤った信頼感を持ち、人間がチェックを怠る様になりかねないシステムを使用する事は危険だと思います。  そういった意味で、私は回答No.1において「無理だと思います」と述べた訳です。  例えば、小麦が使われている食材の例を今思いつくままに挙げてみますと、 小麦 こむぎ コムギ 小麦粉 こむぎ粉 コムギ粉 メリケン粉 めりけん粉 饂飩粉 うどん粉 ウドン粉 唐揚げ粉 唐揚粉 からあげ粉 醤油 しょうゆ ショウユ 正油 しょう油 ショウ油 味噌 みそ ミソ 麩 ふ フ 麺麭 パン ぱん パスタ ぱすた マカロニ スパゲッティ スパゲッティー ラーメン麺 ラーメンの麺 らーめん麺 ラーメン 蕎麦麺 蕎麦の麺 そば麺 ソバ麺 素麺 ソーメン そーめん そうめん ソウメン 餃子 ぎょうざ ギョウザ カステラ かすてら スポンジ(ケーキ等の) 等々があり、上記にあげたもの以外にもまだまだ沢山あります。  又、例えば、黄色の網掛け部分に記入されている食材の中に「調味料」というものがあった場合、その調味料が味噌や醤油であった場合には、小麦の所を「○」としなければなりませんが、味噌や醤油ではなくマヨネーズであった場合には小麦の所は「○」ではなく「-」とし、代わりに卵の所を「○」としなければなりませんが、その様な判断を機械が出来る訳がありません。  同様に、「タンパク加水分解物」や「アミノ酸」の場合も、化学的に分解されたものとはいえ、分解し切れななかったタンパク質が残っていないとは限りませんから、その「タンパク加水分解物」や「アミノ酸」の原料として小麦等が使われていないかどうかを確認する必要があります。  そのため、機械任せにはせず、どうしても人間がチェックする必要があると思います。

yona5318
質問者

お礼

No.1とNo.4でのご回答ありがとうございます。 もちろん、ご指摘の件はその通りです。 表記のゆれを含めて100%網羅できるリストを作ることは不可能ということも承知しており、二重三重のチェックが必要であることも承知しています。 その上で、まずは作業の第一段階として想定しうる全ての食材を判別し、その上で、第二段階として漏れや抜け、微妙なものがあった場合は、関数ではなく直接「○」「-」をセルに打ち込むという流れを採りいれています。さらに複数人によるチェックも経ています。 だからといって、これで完璧ということも無く、「これはあくまで100%完璧なリストではない」ということも念頭に入れた上で運用するものです。 ※ここまでを書いた上で質問をすればよかったですね、申し訳ありません。また当初は「-」ではなく「×」の予定でしたが、回答者様のような意見もあったうえで、「-」にしていることも補足しておきます。 上記のことから、まず第1段階のリスト作成を省力化したくて質問させていただいたことをご理解いただければと思います。そのため、あえてアレルギーということは伏せていたのですが、このような形で改めて認識をさせていただきましたこと、改めてお礼させていただきます。

関連するQ&A

  • Excel関数

    Eccel2003を使用して以下のような入力作業を行っております。 A列~C列のセルに「1~10」いずれかの数字を入力して行きます。 入力パターンは (1)A列だけ入力 (2)A列とB列に入力 (3)A列~C列全てのセルに入力 の3パターンです。 複数の列に数字を入力する場合((2)及び(3))、同じ数字を入力することはありません。 【例】     A B C D  1  5  4  1  2  6  3   1 2  4   2 4 5  ・  ・  ・ このとき、A~C列に一つでも該当の数字(ここでは2と4と5)が入力されていた場合に、 ある文言(30文字くらい)をD列に反映させたいのですが、何か良い関数等ありますでしょうか?    ※ 上記例の場合、1,3,4行目のD列に文言を反映 例の4行目のように全ての列に該当の数字を入力することもあります。 ご教示頂きたく何卒宜しくお願い致します。

  • 【Excel】一致するデータの検索

    Excel2003を使用しています。 Sheet1のB列の値がSheet2のA列に入力されている値と一致したら、Sheet1のC列とD列の値をSheet2のC列とD列に表示させたく、VLOOKUP関数を使用したところ、Sheet1のB列とSheet2のA列のデータの並び方(順序)が同じではないためか、VLOOKUP関数ではできませんでした。 こういう場合、マクロで処理することは可能でしょうか?可能であれば、どのようにコードを記述すればいいでしょうか? Sheet1のデータは4行目から、Sheet2のデータは6行目から入力されています。 よろしくお願いします。

  • Excel関数

    Excel2003を使用しております。 図の左側、A~C列のような、 処理件数・処理者・日付の項目を入力するシートがあります。 別のシートに、E~I列のような、 日ごとに処理者別に処理件数を返したいのですが、 黄色網掛け部分にどういう関数(数式)を入ればよいのでしょうか? 適した関数を教えて頂きたく、何卒宜しくお願い致します。

  • Excel関数

    Eccel2003を使用して以下のような入力作業を行っております。 A列~C列のセルに「1~10」いずれかの数字を入力して行きます。 入力パターンは (1)A列だけ入力 (2)A列とB列に入力 (3)A列~C列全てのセルに入力 の3パターンです。 複数の列に数字を入力する場合((2)及び(3))、同じ数字を入力することはありません。 【例】     A B C D  1  5  4  1  2  6  3   1 2  4   9 1 3  ・  ・  ・ このとき、A~C列に一つでも奇数が入力されていた場合に、 ある文言をD列に反映させたいのですが、何か良い関数等ありますでしょうか?    ※ 上記例の場合、1,3,4行目のD列に文言を反映 例の4行目のように全ての列に奇数を入力することもあります。 ご教示頂きたく何卒宜しくお願い致します。

  • Excel関数2つの項目が一致する場合・・・

    誰か助けて下さい。 EXCEL2002を使い、3つの項目が一致した場合その合計を出す方法。 数百行に渡り A列には、日付 B列には、商品項目コード c列には、金額 日付が同じもの同士で、尚且つ商品項目コードが同じ時の金額の合計を出したいのですが どの関数を使っていいのかわかりません。 どうぞ、おしえてください。

  • Excel関数、VBA

    A列に数字を入力するとB列に合計が出るようにしたい。 但し、条件があります。 数字の入力範囲はA1からA20まで。 B列の合計はA列の数字が連続した部分の最後に表示。 例 A列 B列 10 10 10 30 20 20 10 30 40 上記のように数字の入力は1行だけの時もあり、5行の時もあるので次の空欄までの合計をB列に表示したい。 VBでも関数でも構いませんので、どなたか詳しい方教えて下さい。

  • Excel関数

    Excel2010を使用しています。 A2セル(A列は入力規則<5つのリスト>を使用)に、「リンゴ」・「バナナ」・「なし」と入力されたら B2セルを網掛けにしたいのですが、 どのように条件書式を設定すればよいのか教えて頂きたくお願い致します。

  • エクセル マクロ 複数条件と部分一致

    1対多数の検索 と 複数条件(部分一致と全部一致)のためコードがよくわかりません。 例えば、xlpart、Match、Index、Offset を使い下記の処理ができる方法はありますでしょうか。 下記A~C列のリストがあります。(10000行程度) (Sheet1)   A       B      C    1 0075926  VU    SerialA  2 0623450  VU     SerialA ・ 3 0002356  WM    SerialA  4 0157592  WM    SerialB ・ 5 0023456  WM    SerialB (・・・以下10000行程度続く) (1) Sheet2の検索値A1に部分一致するものを、Sheet1のA列から選ぶ。 (2) 複数の検索結果値がでてしまうので、さらにSheet2のB1と「全部一致」する ものをSheet1のB列から選ぶ。 (3) 上記(1)、(2)の条件を満たすものをSheet1のA列から1つ選ぶ。さらにその行の C列を転記する。(複数該当する場合は上位記載のものでかまいません。) ※数値はエクセルの書式設定で文字列にしてあります。 (検索前のSheet2)   A       B        C 1 7592    WM 2 2345    VU (以下10000行程度続く) (検索後のSheet2)   A      B         C     D 1 7592    WM    0157592  SerialB      ※7592は、Sheet1のA4に該当する。 2 2345    VU    0623450   SerialA     ※2345は、Sheet1のA2に該当する。 (以下10000行程度続く) 部分一致の後の全部一致の複合的なコードの組み方がわかりません。 繰り返し処理(ForやLoop)をよく理解していないからだと思います。どなたかご教示くださいますでしょうか。大変困っておりよろしくお願いいたします。(WindowsXp、Office2003)

  • EXCEL関数で教えてください。

    B列に3行おきに名称があります。 C列にその名称ごと(3行ごと)のロット数 D列にその名称ごと(3行ごと)の値A E列にその名称ごと(3行ごと)の値B が入力されています。 そのデータを名称ごとに1行にまとめる場合の関数を教えてください。

  • 【Excel】関数でできますか?

    Excel2003を使用しています。   E列→摘要欄 H列→借方金額 I列→貸方金額 K列→差引残高  1行  あ                    100  2行  い      100  3行  う       500  4行  5行 月 計     600          100      500  6行  7行  8行  か                      300  9行  き       400 10行  く       500 12行 月 計      900        300      1100 13行 累 計      1500        400      :      : というふうに金額が入力されているとき、K列の差引残高に E列に“月 計”と入力されたら、 [直前の月 計の差引残高セル]-[借方金額]-[貸方金額]という 数式を入れたいのですが、どんな関数を使えばできますか? 上記の例でいくと、 K12セルに[=K5+H12-I12]の計算結果が表示されるように したいのですが。。。 よろしくお願いします。