• 締切済み

エクセル:文字列の前方一致の抽出方法

エクセルについて質問です。 原本のリストから抽出したいのですが、文字列が完全一致していないので 抽出できません。前方一致で抽出する場合どうしたらよいか 教えて下さい。      A         B          C ロキソニン10mg  ロキソニン   カルデナリン1mg  アムロジン2.5 アムロジン2.5mg カロナール200mg A列に原本のリストがあって、B列に抽出したい文字列があります。 A列とB列の文字列が完全には一致していないので抽出できません、 B列と同じ文字列がA列にある場合、A列の文字列をC列に返したいのですが どのような関数を使ったらよいでしょうか? 教えて下さい。

みんなの回答

  • chonami
  • ベストアンサー率43% (448/1036)
回答No.7

フィルタオプションは如何でしょうか? 2007での操作ですが、 まず、A列頭に見出しを入れる(薬品名とか)。B列頭にも同じ見出しをいれ、抽出したい薬品名を入力する。 A列の表内のセルを選択して、データ→フィルタの横の詳細設定をクリック→ 抽出先:指定した範囲 リスト範囲:A列の表の範囲 検索条件範囲:B列の範囲 抽出範囲:C1をクリック としてOK。 (フィルタオプションは検索条件に=を入れない場合、前方一致で検索するので)

noname#204879
noname#204879
回答No.6

別解です。 添付図参照 セル 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)))}

noname#204879
noname#204879
回答No.5

》 A列とB列の文字列が完全には一致していないので抽出できません それでは、A列とB列の文字列が完全に一致している場合は、貴方はどうやって抽出しますか? 出来るだけそれと似た手法を考えてみたいのでお尋ねしています。

nari1231
質問者

お礼

時間がなかったのでAから6文字抽出、Bから6文字抽出して 同じならAを変えすという式でやりました。 あとでみなさんの方法を試してみたいと思います。 どうもありがとうございました。 文字列が一致しているならvlookup(B,範囲指定、1、0)でやります。

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

こんにちは! 前方一致ではなく、検索文字が含まれていたら!になりますが・・・ 一例です。 ↓の画像の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

nari1231
質問者

お礼

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

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

C1セルには次の式を入力して下方にドラッグコピーします。 =IF(SUM(COUNTIF(A1,B$1&"*"),COUNTIF(A1,B$2&"*")),A1,"")

nari1231
質問者

お礼

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

回答No.2

作業としては 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です。

nari1231
質問者

お礼

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

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 =VLOOKUP("*"&B1&"*",A:A,1,FALSE)

nari1231
質問者

お礼

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

関連するQ&A

  • EXCELで一致する文字列を抽出する方法

    EXCELに関する質問です。 ファイル1に売上デ-タがあります。    A    B   C   D 1 商品名 品番 単価 個数 2  あ    A1  100   3 3  い    A2  110   10 4  う    A3   120   5 5  は    A4  130   3 6  ひ    A5  140   7 7  ふ    A6  150   11 8  へ    A7  160   6 9  ほ    A8  170   3 ファイル2に特定の商品名のリストがあります。   A    B   C 1 商品名 2  い 3  ろ 4  は 5  に 6  ほ 7  へ 8  と 9  ち 10  り 11  ぬ ファイル1のSHEET2に    A    B  C  D 1 商品名 品番 単価 個数 2  い    A2  110  10 3  は    A4  130   3 4  へ    A7  160   6 5  ほ    A8  170   3 の様に抽出する方法ですが、商品名が単純な文字列のときは フィルタ-の詳細設定で出来ますが、 商品名が  [8/1発売] 20%OFF  い A2 の様なキャッチコピ-付の文字列の場合、抽出することが出来ません。 (ファイル1・2共にキャッチコピ-付の商品名です。) この場合でも抽出できる方法をご教授いただけないでしょうか? 宜しくお願い致します。

  • エクセルで前方一致のVlookupはできませんか

    * すぐに回答を! エクセルで前方一致のVlookupのような関数はないでしょうか。 具体的には、A列とB列にデータがあり、A列のデータの文頭部分の文字列が B列のデータのどれかと一致した場合に、C列に一致したB列のデータを返したいです。 データの行数が非常に多い(3,4万行)であるため、できるだけ動作の軽い 関数であればなお助かります。 A          B           C zzzfewfe      dadaf         zzzf dadaf3233      a11111k        dadaf aabbbb-fefe3     zzzf         aabbbb a11111k33r3      aabbbb       a11111k 宜しく御願い致します。

  • Excelで文字列の中から部分一致したものを抽出

    エクセルで特定の文字を含むセルを抽出する方法を探しています。 A列に元データ、C列に検索条件があります。 C列の条件に一部でも一致するデータを抽出したいです。(結果イメージを添付します) 可能であれば、関数で対応したいです。 どなたかお分かりになる方いらっしゃいましたら、 教えていただけないでしょうか? よろしくお願いいたします。

  • エクセルで文字列の最大値を抽出する方法

    文字列の最大値を抽出したいのですが 4つのセルにA、B、C、Dが入力されている場合の文字列の最大値Dを抽出する関数式を知りたい エクセルヘルプで見るとMAXAとなっていたのですが抽出する答えは”0”となってしまいます。

  • エクセルで、異なる文字列を抽出するには。

    エクセルで、A1からA10に文字列のデータがあるとします。 10個のセルのデータは「あああ」が4こ「いいい」が3こ「ううう」が2こ「えええ」が1こ順不同であった場合、B1に「あああ」B2に「いいい」B3に「ううう」B4に「えええ」と異なる文字列のみ1個ずつ抽出するにはどうすればいいでしょうか。

  • スペースを含んだ文字列から文字列の抽出

    エクセルバージョン2007 スペースを含む文字列で、A列に文字列がある時、以下の式を組んで文字列を抽出しています。 先頭にIDの数字が有る場合は、それぞれの目的に合った文字列を抽出しています。 B1=LEFT(A1,SEARCH(" ",A1,1)-1) C1=LEFT(MID(A1,SEARCH(" ",A1,1)+1,LEN(A1)-SEARCH(" ",A1,1)),SEARCH(" ",MID(A1,SEARCH(" ",A1,1)+1,LEN(A1)-SEARCH(" ",A1,1)),1)-1) 3 3df-32654-10 CCCCHH 10 1ab-12345-00 AAABBBB この文字列の場合、B列に3と10が表示、C列に 3df-32654-10 1ab-12345-00が表示されます。 先頭に、IDの無い文字列は以下の様な構成です。 6rt-95132-00 PPPKKK この文字列の場合、B列に6rt-95132-00、C列にPPPKKKが表示されてしまい、この場合、IDの数字が無い場合はB列には表示させない又は、C列に6rt-95132-00させたいと思っています。 ご教授頂ければ幸いです。 以上、宜しくお願い致します。

  • エクセルtA列とB列が完全一致を抽出する方法

    勉強不足で申し訳ありませんが、急ぎで作成しなければならず、 どなたかご教示いただけますでしょうか。 お力を貸して下さい。 A列とB列が完全に一致するもの(この場合は東京病院 内科)だけにC列に マークをつけたいのです。 または完全に一致するものがわかるような抽出方法があればご教示下さい。 A             B        C 東京病院       呼吸器科 東京病院       内科       ● 神奈川病院     内科 東京病院       内科       ● 東京病院       外科 静岡病院       外科  ・            ・    ・            ・  ・            ・ どうぞ宜しくお願い致します。

  • Excel 文字列の抽出

    Excel初心者です。 1つのセルに以下のデータが入力されています。 A:文字列B:文字列C:文字列D:文字列 このセルの「C:」から「D:」の間にある文字列を 他のセルに抽出する方法を教えてください。 宜しくお願いいたします。

  • エクセル リスト 一致文字列セル抽出

    エクセルでランダムにあるリストの中から 末尾が一致する文字列のセルだけ抽出することは出来ますか 例えば、下記のよなリストの場合「~丼」だけ抽出することは出来ますか 焼肉定食 餃子 イクラ丼 すき焼き スパゲッティー ピザ うな丼 親子丼 ハンバーグ シューマイ 玉子丼 お願い致します。

  • 文字列の抽出について

    A列に 500行位の文字列があり、 その行の中から以下を抽出したいです。 ただ、抽出したい文字列は、0123456で始まり、abcdという文字列まで。 しかも改行されています。 ※抽出したい文字列 【A列 0123456 ~ B列 abcd】という文字列 【F列 0123456 ~ B列 abcd】という文字列 A列 0123456 B列 xxxx abcd C列 1111 D列 2222 E列 3333 F列 0123456 G列 xxxx abcd H列 4444 I列 5555 J列 6666 宜しくお願い致します。

専門家に質問してみよう