あなたの習慣について教えてください!!

①のシートのA列に型番、B列にシリアルが入っており、②のシートのA列に型番のみが入っています。
①と②の型番は完全一致しているものもあれば、型番の末尾が途切れてしまい完全一致しないものもありますし、数文字しか一致しないものもあります。
②の型番の隣に①のシリアルを入れたいのですが、何かうまく関数を使えば簡単にできるでしょうか?

型番をそれぞれ昇順にして貼り付けようとしたのですが、①と②の型番が完全一致ではないため、同じ並びにならず、そのまま貼り付けることができません。
何かいい方法があれば教えて下さい。
宜しくお願い致します。

例】
①シート
A列 B列
ABC 1234
PQR 2345
STU 5678
XYZ 1209
②シート
A列 B列
TU
XYS
PQR
BC

分かりづらかったらすみません。。。
宜しくお願い致します。

A 回答 (2件)

部分的に重複しているような型番もあるのでしょうか?


ABCとABDという型番があり、②に欠けたABという型番があった場合、ABCかABDか判断する方法が無いと思います。
また、②のXYSというのはXYZが間違えて?入力されているような場合を想定していると思われますが、それもどの程度の一致で判断するのでしょう?
②にXYSとあって、①にXYZとEYSが存在した場合、どちらと判定すればよいか分からないと思います。

何らかの判断基準を決めたとして、
まずVLOOKUPで完全一致を探し、一致したもののシリアルを取得します。
フィルタを使い、エラー表示のものだけ表示し、式の内容を変更します。

判断基準の優先度が高いものから順に試します。
場合によっては①のA列とB列の間に列を挿入し、判定用の補助セルとして使います。
例えば、前から5文字一致したら同一とみなす。とした場合、
VLOOKUPとLEFTにより、左から5文字抽出したものが一致した場合にシリアルを取得します。
先ほど同様にフィルタでエラーのものだけ表示させ、また別の条件の式を入力します。

例えば今度は右から5文字一致したら、とかでしょうか。
あるいは②の文字が欠けているとして、②の全てを含むセル。という条件もあるでしょう。
この場合SUMPRODUCTやFIND、INDIRECT、ROW等を使い、一致するものがある列の行番号を取得する必要があると思われます。

データの数にもよりますが、残り少なくなれば判定式を考えるより目で見た方が早いかもしれません。

自分が思いついたのはこの程度です。
人間が条件を指定してあげないと機械も判別できないですよ。
もっと上手いやり方もあるかもしれないので、他の回答者に期待。
    • good
    • 1
この回答へのお礼

早いご回答ありがとうございます。
早速、完全一致するものから消しこんでいく方法で入力しました。
元データ(②のシート)が雑過ぎて途中、少し手こずってしまいましたが、全て手入力するよりは断然早く仕上げることができました!
どうもありがとうございました!!

お礼日時:2017/02/16 11:09

こんにちは!



No.1さんがご指摘されているように
仮に元データのA列に「ABC」と「BCD」というように重複する文字がある場合は使えません。
一例です。
元データはSheet1にあり、Sheet2の2行目以降に表示するとします。

Sheet2のB2セルに
=IF(OR(A2="",COUNTIF(Sheet1!A:A,"*"&A2&"*")=0),"",INDEX(Sheet1!B$1:B$1000,SUMPRODUCT(ISNUMBER(FIND(A2,Sheet1!A$1:A$1000))*ROW(A$1:A$1000))))

という数式を入れフィルハンドルで下へコピーしてみてください。m(_ _)m
    • good
    • 0
この回答へのお礼

そうなんです。おっしゃる通り、そこなんですよね。。。
私もそこを乗り越えることができずに悲鳴をあげていた次第です…。
ただ、お二方のおかげでかなり時間短縮をすることができました!
本当にありがとうございました!!

お礼日時:2017/02/16 11:14

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