• ベストアンサー

【Excel】 部分一致検索の関数

shiotan99の回答

  • ベストアンサー
  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.1

こんにちは~ 該当するのが複数あったとき、D列の 1つのセルに「煮豚、煮牛」とまとめるのは絶対条件ですか? YESならこの回答はこの時点でスルーしてください (T_T)/~~~ D列に煮豚、E列に煮牛‥と1つのセルに1個ずつ入れてもいいよ、という広~いココロをお持ちなら、次の方法を試してみてください。 ◆ A列は、A1:A100の範囲内にデータがあるとします。 C1セル( これはカンタン ) ---------------------------------- =IF(B1="","",COUNTIF($A$1:$A$100,"*"&B1&"*")) ---------------------------------- と入れて、B列のデータ最終行までフィルコピー。 D列以降ですが‥ ■方法その1 D1セル ---------------------------------- =IF(OR($C1="",$C1<COLUMN(A1)),"",INDEX($A:$A,100-LARGE(INDEX(ISNUMBER(FIND($B1,$A$1:$A$100))*100-ROW($A$1:$A$100),0),COLUMN(A1)))) ---------------------------------- な、長っ!て思いました? ↑の式をそのままエクセルにコピー&ペースト。 貼り付けるときは、D1セルを右クリック~形式を選択して貼り付け~テキストの方がいいかも、です。 そのあと必要なだけ右にフィルコピー( 該当するのが最大5つなら H1セルまで ) そのまますべて B列のデータ最終行まで下にフィルコピー。 A列のデータが 100を超えるなら、数式の 100をすべて修正してください。 100-LARGE と 100-ROW の 100も A列の最終行数に合わせてください。 あんまり範囲を広げすぎると処理が重くなるかもしれません。 COLUMN(A1) の A1は変更しないでください。元データが A列以外でも A1のまま。 (↑D1セルのみ。あとは右に下にコピーするだけでOK ) ■方法その2 D1セル ---------------------------------- =IF(OR(C1="",C1<1),"",VLOOKUP("*"&B1&"*",$A$1:$A$100,1,FALSE)) ---------------------------------- E1セル ---------------------------------- =IF(OR($C1="",$C1<COLUMN(B1)),"",VLOOKUP("*"&$B1&"*",INDEX($A$1:$A$100,MATCH(D1,$A$1:$A$100,0)+1):$A$100,1,FALSE)) ---------------------------------- E1の式を必要なだけ右にフィルコピー。 D1の式も含めて、すべてB列データ最終行まで下にフィルコピー。 これも範囲は適宜修正を。 COLUMN(B1) の B1は変更しないでください。検索キーワードが B列でなくても B1のまま。 ( ↑E1セルのみ。あとは右に下にコピーするだけでOK ) 方法その2は、A列に同じ名前のものはないことが前提になります。 * 少量のデータでしか検証していませんが、一応どちらの方法でもうまくいきました。 とりあえず試してみてくださいっ (^^)/

mondamintmint
質問者

お礼

おはようございます! とても親切丁寧に教えて下さり、ありがとうございます!! それと、お返事が遅くなってしまい申し訳ありませんm(_ _)m 早速試しましたところ、全てうまくいきました!!!! どの数式も知らない関数や呪文(?)が沢山あったので 私ではとうてい思いつかないようなものだったようです。 私もshiotan99さまのように、関数を使いこなせるようになるため、がんばろうと思います。 本当に助かりました、どうもありがとうございました!!! (^∇^)/~~~

関連するQ&A

  • 【Excel】一致するデータの検索

    Excel2003を使用しています。 Sheet1のB列の値がSheet2のA列に入力されている値と一致したら、Sheet1のC列とD列の値をSheet2のC列とD列に表示させたく、VLOOKUP関数を使用したところ、Sheet1のB列とSheet2のA列のデータの並び方(順序)が同じではないためか、VLOOKUP関数ではできませんでした。 こういう場合、マクロで処理することは可能でしょうか?可能であれば、どのようにコードを記述すればいいでしょうか? Sheet1のデータは4行目から、Sheet2のデータは6行目から入力されています。 よろしくお願いします。

  • Excel2007で、検索をしたいのですが…。

    Excel2007で、検索をしたいのですが…。 A列にNo. B列に品名 であればVLOOKUPで検索出来るのですが、教えて頂きたいのは A列にNo. B列に品名 C列にもNo. D列にNo.入力 E列に表示 例) 01     机      91    02     椅子     92    03     布      93 01 と入力した場合も 91 と入力した場合もどちらも『机』と表示されて欲しいのです。 この場合、VLOOKUPでは対応出来ない気がするのですが、何か別の関数ありますか? 当方、関数は苦手で、ほぼ初心者のようなものです。 宜しくお願い致します。

  • 部分一致検索

    A列   B列  C列 12345  あい  愛 23456  かき  柿 34567  さし  差 上記のように入力されているデータがあります。 同じフォーマットで入力内容の異なる別ファイルからA列の内容をコピーして、D列に貼り付けます。 D列 23523 12381 34111 この時、D列の最初の3バイトとA列の最初の3バイトを比較し、A列に同じデータがあった場合にC列の内容をE列にコピーする作業をさせ、最終的に以下のように表示させたいのですが、これを関数で行う事は可能でしょうか。 A列   B列  C列  D列   E列 12345  あい  愛  23523 23456  かき  柿  12381  愛 34567  さし  差  34111 もしくはE列については「○」「×」等でデータが存在するかしないかを選別するだけでも構いません。 以上、宜しくお願いします。

  • VLOOKUP関数で検索できません

    A列に勤務時間帯、B列に人数を入力したリストがあります。 E1にVLOOKUP関数を入力しましたがエラーになるので困っています。 A1 → 8:00~18:00  B1 = 5 A2 → 9:00~19:00  B2 = 7 D1 → 8:00~18:00 E1 → =VLOOKUP(D1,A1:B2,2,0) チルダを抜くと検索できるようになりますが、 VLOOKUP関数でチルダは使えないのでしょうか。 チルダありでも検索できるうまい方法があれば教えて下さい。

  • excel関数教えてください。

    表にしてあって、A列には任意の数字がはいるようなってます。関数はB、C、D列に使いたいのですが B列:Aを3で割り小数点以下に.666が出たときには整数に2を足して、.333の場合は整数に1を足して表示したい。 C列:Aを3で割り小数点以下に.666か.333の場合小数点以下を切り捨てたい D列:Aを3で割り小数点以下に.666か.333の場合小数点以下を切り上げたい 例としては   A   B   C   D 1 10,000 33,334 33,333  33,333 2 20,000 66,668 66,666  66,666 上のような表です。Aに入る数値はいろんな 数値があります。関数に該当しないものは 3で割った数字をそのまま表示したいです。 宜しくお願いします。

  • 関数について

    Vlookup関数でわからなくて困っています。 例) A B C D 顧客名1 #N/A 顧客名1 1001 顧客名2 #N/A 顧客名2 1002 B1=Vlookup(A1,$C$1:$D$2,2,0) B2=下フィル 各セルの書式は標準になっています。 A列とC列の抽出の仕方に問題があるのでしょうか。 因みに、C列をそのままコピーして、A列のところにもってきた場合には、B1には「1001」と表示されます。どうすれば表示されるようになりますでしょうか。 大変困っております。お力を頂きたくお願い致します。

  • 関数について

    関数について VLOOKUP関数を使ってみようと思っているのですが1列目のデータの抽出に仕方がわかりません。 入力例 sheet1 B列__C列__D列 1_______A____現金 2_______B____現金 3_______C____カード 4_______D____カード 5_______E____現金 抽出例 sheet2 B列__C列__D列 1_______A____現金 2_______B____現金 5_______E____現金 抽出例のC、D列はVLOOKUPを使おうと思っています。 B列の抽出にはどのようにしたらいいかおしえてください。

  • 関数 数式 Excel

    すみませんが教えてください! E列に下のような関数を入れたところ正しく表示されませんでした・・・ どうぞよろしくお願いします。 A列(数字・空白を含む)が 1 の場合”◎” A列が1以外の場合は B列(別シートから参照のVLOOKUP関数が入っている)と C列(別シートから参照ののVLOOKUP関数が入っている) を足した数字が D列(別シートから参照ののVLOOKUP関数が入っている) が同じなら ”OK” 違うなら ”NG" と表示させたいので =IF(A1=1,"◎",IF(D181=(B181+C181),"OK","NG")) としてみましたが"◎"が表示される表示は正しいのですが "OK" "NG"が正しく表示されません。 これに加えていずれのセルにも空白が存在するのでエラーを出さないようにしたいです。 よろしくおねがいします!!

  • Excel関数について(初級者)

    例えば以下の表データがあり、    A   B  1 数字  記号 ←タイトル行 2  1   a 3  2   b 4  3   c A行のある数字を入力するとB行の同じ列の記号を表示させるのは(入力欄をC2、結果表示セルをD2として) D2に VLOOKUP(C2,A2:B4,2) でうまくいきました。つまり2を入力するとbという答えです。 でも逆にB行のある文字を入力するとA行の同じ列の数字を表示させるのに(入力欄をC3、結果表示セルをD3として) D3に VLOOKUP(C3,A2:B4,1) つまりcと入力すると3の答え でやってみたが#N/Aのエラーがでてうまくいきません。 間違った点のアドバイスをお願いします。

  • Excel日付の部分一致(年月が一致)検索する関数について教えてくださ

    Excel日付の部分一致(年月が一致)検索する関数について教えてください。 A列に日付データがあります。 A列が2010年3月だったら、B列に、1003 2010年4月だったら、1004、以下末尾を+1を反映させる関数を教えてください。 A列         B列 2010/3/6 10:23:19  1003 2010/5/6 9:23:19  1005