• ベストアンサー

エクセルで、文字列を一括変換したものを表示したい

どなたか教えてください(涙) エクセルで、特定の文字列を含む文字列を一括変換したもの を別のセルに表示したいんです。 今までは、検索→置換 とか フィルタをかけてコピペ を繰り返して処理していたのですが、処理量が増えてきたもので、マクロで処理できるようにしたくて…。 マクロの自動登録でなんとかできるかと格闘したり、過去の質問も読んでみたのですが、解決できまでんでした。 やりたいのは、下記のようなことです。 A列に 青菜豚肉ひよこ豆人参玉葱中華だし などなど料理の素材が列記されています。 そこに『豚肉』を含んでいれば、B列の同じ行に『1』と表示したい。 そこに『バター』か『牛乳』のいずれかを含んでいれば、B列の同じ行に『2』と表示したい。 そこに『塩』と『醤油』両方を含んでいれば、B列の同じ行に『3』と表示したい。 こんな感じで、A列の文字列に含まれる内容によって、B列に表示させる番号を変えたいんです。 拙い説明でスミマセン(汗) 良いアイデアないでしょうか? どなたかご教授ください。よろしくお願いします。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

こんなのはどうでしょう。 シート上に検索文字列とその文字があった場合に表示したい値を表として置いておきます(添付の図ではD1:E5)。 検索対象がA1から入っているとして、B1に↓を入れてShit+Ctrl+Enterで配列数式として確定します。 =MAX(ISNUMBER(FIND($D$1:$D$5,$A1))*$E$1:$E$5) 複数の検索文字列が存在する場合は、表示させたい値のうち一番大きい値を表示しています。一つも検索文字が含まれていない場合は0を表示します。

tamanegionion
質問者

お礼

解決できました! マクロ使わなくても関数でなんとかなるのですね。全然思いつきませんでした。 元データを加工整理する必要はあったのですが、求めていた結果をえることができました。 ありがとうございました!

その他の回答 (3)

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

 アイデアを考えようにも、元となる情報が不足しております。 >そこに『豚肉』を含んでいれば、B列の同じ行に『1』と表示したい。 >そこに『バター』か『牛乳』のいずれかを含んでいれば、B列の同じ行に『2』と表示したい。 >そこに『塩』と『醤油』両方を含んでいれば、B列の同じ行に『3』と表示したい。 との事ですが、例えば、『豚ばら肉』という文字列や『ブタ肉』という文字列が含まれている場合には、『豚肉』という文字列ではありませんから、『1』とは表示しなくても構わないのでしょうか?  又、『豚肉のバター炒め(醤油味)』の様に、キーワードとなる文字列が複数種類含まれている場合には、どの様な表示とすれば宜しいのでしょうか?  又、料理名や料理の素材の中に、キーワードとなる文字列が1つも含まれていない場合には、どの様な表示とすれば宜しいのでしょうか?  又、 >マクロで処理できるようにしたくて…。 との事ですが、マクロ限定となりますと、そのExcelbookがどの様なレイアウトなのかが判らなければ、どれほどExcelに精通した人間であってもマクロを組む事は出来ません。  ですから、どの様な元データがどのシートの中の、何列の何行目のセルから、どの方向(下方?/右方?)に向かって、どの様な形式で列記されているのかという事や、 「どの様な文字列がある場合に、どの様な表示にしたいのか」という規則が、何処にどの様な形式で記述されているのかに関しても、回答者に漏らさずお示し頂かなくてはなりません。  尤も、実状とは異なるExcelbookを想定したマクロを回答するだけで、質問者様が自力でマクロの改良を行う事が十分に可能だと仰るのでしたら、必ずしも詳細な情報を御お示し頂かなくとも構いませんが・・・

tamanegionion
質問者

お礼

解決策を考えていただいてありがとうございます! おっしゃる通り、条件の説明とか不十分で…。 はじめて質問してみたのですが、質問者も色々整理しないと、この場が成り立たないですね。反省。 次に質問することがあったら、もうちょっとキチンとしますね!

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

こんばんは! 色々やり方はあると思いますが、 一例でぅ。 ↓の画像のようにSheet2に表を作成しておきます。 (表には空白がないように、まず使用することは内であろう「*」を入力しています) Sheet1のB1セルに =IF(A1="","",INDEX(Sheet2!$A$1:$C$1,,SUMPRODUCT((ISNUMBER(FIND(Sheet2!$A$2:$C$5,A1))*COLUMN($A$1:$C$1))))) という数式を入れオートフィルで下へコピーすると 画像のような感じになります。 ※ A列データには複数の条件に一致する文字列はないという前提です。m(_ _)m

tamanegionion
質問者

お礼

回答していただいてありがとうございます! わかりにくい質問なのに、解決策を考えていただいて感謝です!

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

『塩』と『醤油』と『豚肉』を含んでいると、1か3のどちらを表示すべきか迷いますが、A2セルから下にデータが有るとして、 =IF(IF(ISERR(SEARCH("豚肉",$A2)),0,SEARCH("豚肉",$A2)*0+1)+IF(ISERR(SEARCH("バター",$A2)),0,IF(ISERR(SEARCH("牛乳",$A2)),0,OR(SEARCH("バター",$A2),SEARCH("牛乳",$A2))*0+2))+IF(ISERR(SEARCH("塩",$A2)),0,IF(ISERR(SEARCH("醤油",$A2)),0,AND(SEARCH("塩",$A2),SEARCH("醤油",$A2))*0+3))=0,"",IF(ISERR(SEARCH("豚肉",$A2)),0,SEARCH("豚肉",$A2)*0+1)+IF(ISERR(SEARCH("バター",$A2)),0,IF(ISERR(SEARCH("牛乳",$A2)),0,OR(SEARCH("バター",$A2),SEARCH("牛乳",$A2))*0+2))+IF(ISERR(SEARCH("塩",$A2)),0,IF(ISERR(SEARCH("醤油",$A2)),0,AND(SEARCH("塩",$A2),SEARCH("醤油",$A2))*0+3)))

tamanegionion
質問者

お礼

早速回答していただいてありがとうございます! エクセルが入ってるPCの持ち主が帰ってしまったので、明日にでも教えていただいた関数を元にしてやってみます。 実はIF関数を使用しての解決も模索したのですが、実際に使用したい分類(B列に表示させたい内容)は21までありまして…。泣きそうになって諦めた経緯があるのですが、頑張ってみます!

関連するQ&A