【初月無料キャンペーン中】gooドクター

■複数の特定文字列に優先順位をつけて該当するセルを抽出する方法教えて下さい!
。。。頭が追い付かず無駄に時間だけが過ぎてしまいます><
【資料】
①sheet1(添付画像①) ②seet2(添付画像②)
【概要】
【添付画像①】の①②③の優先順位で【添付画像②】のリストから④に抽出したいのですが、INDEXやMATCHを使ってもうまくいきません><
【補足】
⑤のリストは①②③のおおよその複合リストです。行いたい事は【添付画像①】①②③の順位での複合条件で⑤から④に抽出したいのですが頭が追い付きません><
⑤リストは【添付画像①】の③②①の順番でおおよその順位がついている感じです。

関数でもマクロでも出来る方法を教えて下さい!具体的なシート名や補足事項が必要な場合など
お手数ですがご連絡頂ければ補足させていただきますのでお力お借りさせて下さい!

「エクセルに精通されている皆様!教えて下さ」の質問画像

質問者からの補足コメント

  • 添付画像②

    「エクセルに精通されている皆様!教えて下さ」の補足画像1
      補足日時:2021/07/19 14:29
  • うーん・・・

    皆様、ご連絡本当にありがとうございます!
    ご連絡いただいた内容からでこういう事なら出来そうなのでしょうか?
    前提条件も入れて補足してみました。

    1,⑤→変更修正不可「:」が邪魔ですよね・・・・
    →CSV入力コード形式になるのでこの形で該当するセルを抽出が理想><
    2,優先順位を以下の様に考えて作る?
      →①②③の複合条件で抽出
       →②③の複合条件で抽出(これで大体該当すると思われるのですが)
        →①条件で抽出(複数拾われるからエラーになるので不必要ですね)
    の順番で⑤のリストから抽出する。
    この内容でリストから抽出したいのですが・・・・・出来ますでしょうか?

      補足日時:2021/07/19 18:32
gooドクター

A 回答 (4件)

№3です。

以下、配列数式{}を使っています。
{=IF(OR(B1="",ISERROR(MATCH(("*"&B1&"*"),Sheet2!$A$1:$A$100,0))),"", INDEX(Sheet2!$A$1:$A$100,
IF(ISERROR(MATCH(("*"&D1&"*")&("*"&C1&"*")&("*"&B1&"*"),Sheet2!$A$1:$A$100&Sheet2!$A$1:$A$100&Sheet2!$A$1:$A$100,0)),
IF(ISERROR(MATCH( ("*"&C1&"*")&("*"&B1&"*"), Sheet2!$A$1:$A$100&Sheet2!$A$1:$A$100,0)),
IF(ISERROR(MATCH( ("*"&B1&"*"), Sheet2!$A$1:$A$100,0)),
"unmatch",
MATCH( ("*"&B1&"*"), Sheet2!$A$1:$A$100,0)),
MATCH( ("*"&C1&"*")&("*"&B1&"*"), Sheet2!$A$1:$A$100&Sheet2!$A$1:$A$100,0)),
MATCH(("*"&D1&"*")&("*"&C1&"*")&("*"&B1&"*"),Sheet2!$A$1:$A$100&Sheet2!$A$1:$A$100&Sheet2!$A$1:$A$100,0))))}
1行目、B列が空欄か部分一致すらしない場合は空欄にします。
3行目DCB列が部分一致したら下から2行目でそのシート2のA列を表示します。
5行目CB列が部分一致したら下から4行目そのシート2のA列を表示します。77行目B列が部分一致したら10行目そのシート2のA列を表示します。
BCD列に何が入るかわからない(デタラメ)という前提で部分一致の判断としました。こういうことは仕様で決まっていると思います。
№2さんのように、正しいデータしか入ってこないという前提で作ればもう少し簡単かもしれません。
部分一致は"*"&D1&"*"などで判定してますが、D1が空欄だと必ず一致します。この辺、人間的判断とは少しずれているかもしれません。
なお上コードは見やすさのためスペースで位置合わせしてますが、コードとしては意味ありません。詰めても大丈夫です。
    • good
    • 0
この回答へのお礼

お忙しい中、書き込みをしていただき本当にありがとうございます!
皆様から教え頂いた通り元データの変更と教えて頂いた配列数式とワイルドカードなど使い何とか検索に該当できる様になりました、本当にありがとうございます!データをもう少し正確に出来れば簡単なんですよね><

お礼日時:2021/07/26 16:01

説明が抽象的でやりたいことがわかりません。


(1)「優先順位をつけて該当するセルを抽出する」という点についても、№1の方が言うように、最優先の①から探して、あったら終了なのか、②にいくのか、なかったら②にいくのか。
例えば「レディースファッション」というものが表示されるのは①=空欄、②=空欄、③=レディースファッションなのか、
①=該当なし、②=該当なし、③=レディースファッションなのか
「キャミソール」はトップスにもインナーにもありますが、①で複数ある場合は全て候補として②に進み、絞り込みを掛けるんでしょうか。
(2)添付②に「レディース」がないのが気になりますが、これはあくまでサンプルなので、本物にはあるということでしょうか。
(3)①②③の順で探索していくということは、①は小分類で②は中分類で③は大分類であることが保証されているのでしょうか。
(4)完全一致なのか部分一致でよいのか(カットソーTシャツとTシャツは「*」で部分一致の判定はできる、Tシャツとティーシャツの判断は難しいです。双方部分だと1文字でも一致すればいいので候補が多数になる)
添付②のシートは、探索対象であれば、「:」でつなげないで、添付①のシートのように、列ごとに大分類・中分類・小分類と分けた方がいいです。
そのうえで、
A①と小分類が一致したら・・・・、
B②と中分類が一致したら・・・・、
C③と大分類が一致したら・・・・、
各一致項目を「:」でつないで表示するのはあまり難しくないでしょう。
こうすることにより、INDEX、MATCHでもvlookupでも探索することができるでしょう。
もう少し具体的にお願いします。
    • good
    • 0
この回答へのお礼

お忙しい中、書き込みをしていただき本当にありがとうございます!
教え頂いた通り元データの変更から行い何とか検索に該当できる様になりました、本当にありがとうございます!

お礼日時:2021/07/26 15:58

Sheet2の表を修正することを薦めます。


コロン(:)を区切り文字として「区切り位置」でセルを分けて使いましょう。

これ、実は基本中の基本です。
正しくデータを作ることが重要という事です。
ぐちゃぐちゃのデータを加工しながら何かしようとすると手順が多くなり、訳が分からなくなります。

・・・

つーか、1~3の情報を基に文字列を作れば良いだけのような気がします。
その作った文字列がSheet2にあるのかを確認すれば済むんじゃないかな。
一致するものが無ければエラーを表示させればいい。
 「該当するカテゴリはありません!」
とかね。
……ダメ?

 B1&"ファッション:"&C1&":"&D1
この文字列がSheet2にあるかを確認して、
存在すれば、
 B1&"ファッション"
存在しなければ、
つぎに1のセルの値を除いた
 B1&"ファッション:"&C1
存在すれば、
 B1&"ファッション"
存在しなければ、
 "該当するカテゴリはありません"
を返すようにするだけ。

チョイト面倒ですが、難しくはありませんよね。
    • good
    • 1
この回答へのお礼

お忙しい中、書き込みをしていただき本当にありがとうございます!
教え頂いた通り元データの変更から行い何とか検索に該当できる様になりました、本当にありがとうございます!

お礼日時:2021/07/26 15:57

例示されている画像では、抽出すべき④がすべて「レディースファッション」になっているので、いまいち何を目指しているのか分かりにくいですね・・・。



(1-1) ⑤の中から①の「キャミソール」を含むデータを探す。
(1-2) (1-1)で複数のデータがあったら、そのうち、②の「トップス」を含むデータを探す。
(1-3) (1-2)で複数のデータがあったら、そのうち、③の「レディース」を含むデータを探す。

(2-1) ⑤の中から①の「キャミソール」を含むデータを探す。
(2-2) (2-1)で合致するデータが無かったら、⑤の中から②の「トップス」を含むデータを探す。
(2-3) (2-2)で合致するデータが無かったら、⑤の中から③の「レディース」を含むデータを探す。

各々、合致するデータが1件だけならそれを採用。
また、①は無くて②があったら、(2-1)(2-2)(1-3)となる。

そして、探し出したデータの、左から「:」までの文字列を取得する。

・・・ということでしょうか?
    • good
    • 1
この回答へのお礼

お忙しい中、書き込みをしていただき本当にありがとうございます!
教え頂いた通り元データの変更から行い何とか検索に該当できる様になりました、本当にありがとうございます!

お礼日時:2021/07/26 15:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング