質問: エクセルで商品名に特定のキーワードがある場合は特定の文字を返すものを複数条件で指定したい いつもお世話になっております。タイトルにもある通りです。csvをダウンロードした際に商品名にギフトボックスタオルdvdガウンシリコン枕ハーブボール書籍フットバスマットユニフォームマルチカバー暖簾生地スリッパ枕カバーマットシーツ上記のキーワードが含まれている場合は同じキーワードで返したいのです。例えばですが商品名にタオルが含まれている場合はタオルをdvdが含まれている場合はdvdを返せればと思っています。これだけ多いと条件も多くなってしまうのとマットとマットシーツの場合文字が被ってしまっているでエクセルの関数で対応できるものなのでしょうか?使用しているエクセルは2010です。大変恐縮ではございますが、是非ecマスターズ様のお力をお借りできればと存じます。よろしくお願いいたします。
回答: ecマスターズの田中です。たとえば、a2セルに記載された商品名を判定する関数をb2セルに書く場合、b2セルに=if(iserror(find("ギフトボックス",a2)),"","ギフトボックス")とご記載いただくことで、商品名に「ギフトボックス」が入っていた場合、b2セルに「ギフトボックス」と表示されます。find関数は、セルの中に含まれる文字の位置を返す関数、iserror関数は、引数にした関数がエラーになるかどうかを判定する関数です。ギフトボックスが商品名に含まれない場合はfind関数がエラーを起こすので、iserror関数がtrue(正)を返し、if関数によって "" つまり空白が結果として表示され、ギフトボックスが商品名に含まれる場合は上記の逆の流れで、if関数によって "ギフトボックス" が結果として表示される仕組みになっております。同じ関数を&でつなげると......たとえば=if(iserror(find("ギフトボックス",a2)),"","ギフトボックス")&if(iserror(find("タオル",a2)),"","タオル")とすると、商品名に「タオル」が入っていた場合に「タオル」と表示されます。このように、関数を複製して&でつなげていくと、条件を満たさない関数の部分は""、つまり空白とみなされ、表示に影響しませんので、ヒットしたキーワードのみを表示させることができます。なお、マットとマットシーツのように、片方のキーワードを含む組み合わせがある場合は、最初に長い方を判定、つまりif(iserror(find("マットシーツ",a2)),★,"マットシーツ")とした上で、★の部分に、さらにif(iserror(find("シーツ",a2)),"","シーツ")という判定を加えることで、「マットシーツ」が含まれる場合は「マットシーツ」のみが表示されるようにすることができます。連結した実際の関数は、下記のようになります。if(iserror(find("マットシーツ",a2)),if(iserror(find("シーツ",a2)),"","シーツ"),"マットシーツ")これを、&関数でつなげる1つとして扱っていただければ結構です。なお、たとえばdvd付録付きの書籍のように、複数の条件に一致する商品名の場合、「dvd書籍」のように、つながった形で表示されてしまいます。まずは一度、ご案内差し上げた関数をお試しいただき、問題が発生するようでしたらお知らせください。