プロが教える店舗&オフィスのセキュリティ対策術

エクセルについて質問です。

原本のリストから抽出したいのですが、文字列が完全一致していないので
抽出できません。前方一致で抽出する場合どうしたらよいか
教えて下さい。

     A         B          C
ロキソニン10mg  ロキソニン  
カルデナリン1mg  アムロジン2.5
アムロジン2.5mg
カロナール200mg

A列に原本のリストがあって、B列に抽出したい文字列があります。
A列とB列の文字列が完全には一致していないので抽出できません、
B列と同じ文字列がA列にある場合、A列の文字列をC列に返したいのですが
どのような関数を使ったらよいでしょうか?
教えて下さい。

A 回答 (7件)

フィルタオプションは如何でしょうか?



2007での操作ですが、

まず、A列頭に見出しを入れる(薬品名とか)。B列頭にも同じ見出しをいれ、抽出したい薬品名を入力する。

A列の表内のセルを選択して、データ→フィルタの横の詳細設定をクリック→

抽出先:指定した範囲
リスト範囲:A列の表の範囲
検索条件範囲:B列の範囲
抽出範囲:C1をクリック

としてOK。

(フィルタオプションは検索条件に=を入れない場合、前方一致で検索するので)
    • good
    • 0

別解です。



添付図参照
セル B2 に次の[条件付き書式]を設定
  数式が    =ISERROR(B2)
  フォント色  白
セル B2 に次の配列数式を入力して、此れを右および下方にズズーッとドラッグ&ペースト
{=INDEX($A$1:$A$6,SMALL(IF(LEN($A$1:$A$6)-LEN(SUBSTITUTE($A$1:$A$6,B$1,"")),ROW(A$1:A$6),""),ROW(A1)))}
「エクセル:文字列の前方一致の抽出方法」の回答画像6
    • good
    • 0

》 A列とB列の文字列が完全には一致していないので抽出できません


それでは、A列とB列の文字列が完全に一致している場合は、貴方はどうやって抽出しますか?
出来るだけそれと似た手法を考えてみたいのでお尋ねしています。
    • good
    • 1
この回答へのお礼

時間がなかったのでAから6文字抽出、Bから6文字抽出して
同じならAを変えすという式でやりました。
あとでみなさんの方法を試してみたいと思います。
どうもありがとうございました。

文字列が一致しているならvlookup(B,範囲指定、1、0)でやります。

お礼日時:2013/06/17 18:39

こんにちは!


前方一致ではなく、検索文字が含まれていたら!になりますが・・・
一例です。

↓の画像のD列に検索文字列を表示しておきます。
今後検索文字列が増えても対応できるようにまず使用することはないであろう「*」アスタリクスを
入れて空白セルを範囲指定しないようにします。

画像のようにB列を作業用の列として、結果をF列に表示するようにしてみました。

作業列のB2セルに
=IF(OR(ISNUMBER(FIND(D$2:D$6,A2))),ROW(),"")
これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定!
この画面からコピー&ペーストする場合は
上記数式をドラッグで範囲指定 → 右クリック → コピー → B2セルを選択
→ 数式バー内で一度クリック → 貼り付け → そのまま(編集可能のまま)
Shift+Ctrlキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。
このB2をオートフィルでずぃ~~~!っと下へコピーしておきます。

結果のF2セルは
=IF(COUNT(B:B)<ROW(A1),"",INDEX(A:A,SMALL(B:B,ROW(A1))))
(配列数式ではありません)
としてオートフィルでコピー!
これで画像のような感じになります。

※ 今後検索データが増える場合はアスタリクスの部分に検索文字列を入力すれば
結果に反映されます。

参考になりますかね?m(_ _)m
「エクセル:文字列の前方一致の抽出方法」の回答画像4
    • good
    • 0
この回答へのお礼

時間がなかったのでAから6文字抽出、Bから6文字抽出して
同じならAを変えすという式でやりました。
あとでみなさんの方法を試してみたいと思います。
どうもありがとうございました。

お礼日時:2013/06/17 18:40

C1セルには次の式を入力して下方にドラッグコピーします。



=IF(SUM(COUNTIF(A1,B$1&"*"),COUNTIF(A1,B$2&"*")),A1,"")
    • good
    • 1
この回答へのお礼

時間がなかったのでAから6文字抽出、Bから6文字抽出して
同じならAを変えすという式でやりました。
あとでみなさんの方法を試してみたいと思います。
どうもありがとうございました。

お礼日時:2013/06/17 18:40

作業としては



1. セルC1に以下の数式を入力
=IF(B1="","",VLOOKUP(B1&"*",$A:$A,1,0))
↑「B1&"*"」が前方一致を表します。

2. セルD1に以下の数式
=IF(B1="",0,COUNTIF($A:$A,B1&"*"))
↑VLOOKUPは見つけた1つ目を表示するので、複数一致のチェックは
しておいた方がよさそうです。検索条件に合ったセルの個数が
表示されます。

3. C列、D列を下へコピー

4. D列を見て重複したものについて個別確認

絶対に複数一致がないのなら1だけでOKです。
    • good
    • 0
この回答へのお礼

時間がなかったのでAから6文字抽出、Bから6文字抽出して
同じならAを変えすという式でやりました。
あとでみなさんの方法を試してみたいと思います。
どうもありがとうございました。

お礼日時:2013/06/17 18:40

一例です。


=VLOOKUP("*"&B1&"*",A:A,1,FALSE)
    • good
    • 0
この回答へのお礼

時間がなかったのでAから6文字抽出、Bから6文字抽出して
同じならAを変えすという式でやりました。
あとでみなさんの方法を試してみたいと思います。
どうもありがとうございました。

お礼日時:2013/06/17 18:41

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