• ベストアンサー

エクセルでのデータのマッチングその2

以前以下の質問を投稿させて いただきました。 http://www.okweb.ne.jp/kotaeru.php3?q=659843 に対しまして 以下のお答えをいただくことが できました。 ----------以下お答えいただいたもの---------- Sheet1のA,B列に表1の内容が入っているものとします。 表2は一番左に一列挿入し、A,B,C列となっているものとします。 A1に以下の式を入れます。 =VLOOKUP(LEFT(B1,1),Sheet1!A:B,2,0) A2以下にA1の式をコピーします。 ・VLOOKUP()関数で値を検索しています。 ・LEFT()関数で「A01」の一番左の「A」だけ抽出しています。 --------------------------------------- 教えていただいたように おこなってみたのですが #N/A となってしまい、うまく成功しませんでした。 申し訳ございませんが どなたか再度ご指導いただけないでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • suzusan7
  • ベストアンサー率64% (22/34)
回答No.3

こんばんわ。 >=VLOOKUP(LEFT(B1,1),Sheet1!A:B,2,0) この式の意味を考えてみましょう。 LEFT(B1,1)はセルB1の内容の一番左にくる一文字を 差しています。 VLOOKUP関数の最後の0は完全一致するものを選ぶように 指示しています。 つまり、セルB1の文字または数字の一番左の一文字を Sheet1のA列から探して、その文字の隣の列(B列)の 文字を表示しなさいということになります。 >注意書きで >”A-Eのセルの第2文字以下はDELキーで削除しておくこと。スペース等はいっていてはだめ。 これはVLOOKUP関数が完全一致したものを選ぶわけですから、「A」を探すのに 「A 」というようにスペースがあったり、他の文字があったりすると 違うものと認識されてしまうので、表1のA~Eと書いてあるセルは A~Eの一文字だけとして、2文字目以降の文字はやスペースが無いように しておいてくださいということですね。 >数字の桁はAA-BB-1 これでは一文字と一致することはありませんので、 VLOOKUP関数は該当なしとして#N/Aを返すわけです。 伝わりやすいように問題を簡単にして書いたために やりたいことが正確につたわらなかったようですね。 #2の人が書かれているようにもう少し 実際のデータに近い形で説明した方が 実際に行いたいことへの回答が返ってくるかと思います。

syousyou
質問者

お礼

アドバイスありがとうございました。 みなさんの意見を参考にさせていただきまして 解決することができました。 ありがとうございました。 わかりやすいご説明ありがとうございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

Vlookup関数でエラーが出るのは、 (1)問題にしているセル(LEFT(B1,1),。第1引数。)が入力前で空白になっている場合。 (2)表を引くのですが、表のほうSheet1!A:B(第2引数)のセルの内容と表2の第一引数の内容が、見た目は同じようだが、コンピュター的には違っている。 2つのケースしかないでしょう。 (1)は判るでしょうから、(2)を見つける手助けの 関数を書きます。 B1について、どこか空き列に=b1&"="と入れます。これを下に複写します。これで文字の後にスペースなどないかわかります。=が終わりの位置を示すからです。 他のもう1列で=JIS(A1)で英数カナを全角に変えます。そして変える前の列の文字と変えた後の列の文字を良く見比べてください。勘違いがわかるかも知れません。 最後に、回答が判らないからといって、別質問を立てず、元のところで補足していくのがルールでは。15件ぐらい回答が積みあがっているケースを見たことがありますので、追加回答を求めることは可能では。ただ日がたつと注目度はガタッと落ちるでしょうが。

syousyou
質問者

お礼

アドバイスありがとうございました。 みなさんの意見を参考にさせていただきまして 解決することができました。 ありがとうございました。 ご指摘ありがとうございます。 今後は同じ質問はたてないように 気をつけます。

回答No.2

syousyouさんの質問したデータで実際に試してみましたか? 回答者の方はsyousyouさんから質問されたデータに基づいて 最善の方法を提示しているものと思います。 syousyouさんが実際に使用したいデータと違っていれば、 うまく成功しない事も考えられます。 syousyouさんが、実際のデータを掲載できない事もあるとは思いますが、 掲載できなければ、自分自身で応用しなければどうしようもありません。 できる限り、実際のデータに近い形式での質問をお勧めします。

syousyou
質問者

お礼

アドバイスありがとうございました。 みなさんの意見を参考にさせていただきまして 解決することができました。 ありがとうございました。

noname#9485
noname#9485
回答No.1

以前質問に回答がでていましたが、 =if(B1="","",VLOOKUP(LEFT(B1,1),Sheet1!A:B,2,0) ) としたら、答えが出ませんか? B1のセルが空欄ならば空欄にし、空欄でなければ、VlookUp関数で値を検索してくださいという命令になります。

syousyou
質問者

補足

さっそくのお答えありがとうございます。 =if(B1="","",VLOOKUP(LEFT(B1,1),Sheet1!A:B,2,0) ) といれましても 答えはでませんでした。 以前にお答えをいただきました#2の方の お答えは初心者の自分には理解ができなかった ため、こちらはやっておりませんでした。 注意書きで ”A-Eのセルの第2文字以下はDELキーで削除しておくこと。スペース等はいっていてはだめ。 ” とあったのですが、正式にはこの 数字の桁はAA-BB-1 といったようになっておりますので こまっておりました。 初歩的な質問なのですが 表2はsheet2に入れるんですよね? でA列はあけてA・B・C列が存在して 教えていただいた数式をA1にいれて したにその式を引っ張っていくので よろしいんですよね? う~ん、、、わからないことだらけで すみません。

関連するQ&A

  • マッチングして結合

    3つのシートにそれぞれ以下のような表があるとします。 各シートは第1回から第3回までの小テスト結果で、1列目は学生id、2列目は点数とします。 (シート1) id s1 a 4 b 2 c 3 (シート2) id s2 a 3 b 1 (シート3) id s3 a 4 c 2 これらの表を id s1 s2 s3 a 4 3 2 b 2 1 c 4 2 というようにidでマッチングして結合したいのですがどのようにすればよいでしょうか。vlookup関数を調べたのですが、ぴったりの例が見つかりません。空欄(棄権)のところは#N/Aとなると思いますが。ご教示いただけるとありがたいです。

  • エクセル内での、データの複数の抽出は無理でしょうか?

    Sheet1 A B C D 1 こ た い あ 2 き ち ろ か 3 け つ は さ 4 く て に た 5 か と ほ な Sheet2 A B C 1 か と ほな 2 き ち ろか 3 く て にた VLOOKUP関数で Sheet2のA1、A2、A3をSheet1から 同列のB、Cも同じように抽出しようとしましたが C列だけSheet1のC列とD列と合わせた表記にしたいのですが これは関数では無理なのでしょうか? 私自身、あまり関数が得意ではないので もしマクロでなければ・・・となると少し不安です。 宜しくお願いします。

  • エクセルでのマッチング

    「見込客」シート A列:担当者名 B列:電話番号 C列:メールアドレス 「受注」シート A列:担当者名 B列:電話番号 C列:メールアドレス これをマッチングして、見込客からの受注があったかをチェックしたいので、 「結果」シートに、マッチした結果のみを抽出する、ということは可能でしょうか? 今は、「結果」シートの各列に =VLOOKUP(見込客!A2,受注!A:A,1,FALSE) のようにしていますが、エクセルがめちゃめちゃ重くて使いづらいのです。 マクロなどは設定方法もわかりません。 よろしくお願いいたします。

  • 【エクセル】VLOOKUPが上手くいきません。。。

    VLOOKUP関数がうまくいかないので教えてください。 下のような表になっています。    A     B    C    D    E    F 1  番号  名前               コード 2 11-2345  ABC  11  #N/A  11  あああ 3 22-3456  DEF  22  #N/A  22  いいい  4 33-4567  GHI  33   #N/A  33  ううう 5 44-5678  JKL  44        44  えええ 6 ・・・・ ・・・               55  おおお 7 ・・・・ ・・・               66  かかか A、B列はがもとから打ち込んであるデータです セルC2は =LEFT(A2,2) でA列のハイフンの前を表示しています。 セルD2に =VLOOKUP(C2,$E$2:$F$7,2,FALSE) を入れると#N/Aが表示 されます。ちなみに、セルC2にLEFT関数ではなくて、数字をそのまま、 11と入力すると、セルD2に「あああ」と表示されます。どこがいけない のでしょうか? $E$2:$F$7はC列の二桁の数字に対応するコードの表になっています。 エクセル2003を使っています。

  • エクセル 複数条件 VLOOKUP

    おしえて下さい。 エクセルで、下記の表のように【ブック1】のA列の条件に一致するものを 【ブック2】のシート1、シート2どちらかから検索して一致するものを 【ブック1】のB列へ抽出したいのですが、IF関数やVLOOKUPの組み合わせで 可能でしょうか? うまく説明できずにすみません。 例) 【ブック1】      A  B    1 001 あああ    2 004 えええ    3 003 ううう    4 006 かかか 【ブック2】 シート1      A  B     1 001 あああ    2 002 いいい    3 003 ううう シート2      A  B     1 004 えええ    2 005 おおお    3 006 かかか

  • エクセルのVLOOKUP関数で…(複数条件?の抽出)

    ●シート2、A列に部品正式名称、B列に部品略称の一覧表(部品の種類は約500点) ●シート3、A列に略称、B,C,D,E,F,G列と続けて寸法などの詳細を記した一覧表 があります。 ●シート1に検索一覧表として、B列(B3~B8)は項目、セルC3~C8にVLOOKUPでシート3の情報が抽出されるようにしてあります。 C1で略称を入力し抽出するのはOKなのですが、正式名称で入力しても同じようにシート3の情報を抽出するようにしたいです。 (IFを使って思いつく関数を組合わせてみたりしたのですが、うまくいきませんでした(TT) できたら関数で何か良い方法ありますでしょうか? 宜しくお願いします。

  • エクセルでVLOOKUP関数を使用すると、データ数が多くてフリーズしてしまいます。

    エクセルでVLOOKUP関数を使用すると、データ数が多いくてフリーズしてしまいます。どうにかして解決できないでしょうか。 エクセルでVLOOKUP関数をしようして、データ数が多いとフリーズしてしまうのですが、何か解決方法ありますでしょうか。 エクセルでVlookUpを使い、Sheet1にsheet2から一致したデータを読み込もうと思うのですが、 データが重くなりすぎて、PCがフリーズしてしまいます。 どうにかして、簡単にVlookupと同じように一致したデータを抽出することはできないでしょうか。 sheet1では B列を入力して、C列を抽出したいです。 A列_____ ___B列_____ _____ _____ _____ ___C列 No_____ 入力項目_____ _____ _____ _____ 保存場所 1_____ #EXTINF:213,08___________ suzuki I:\music\suzuki 2_____ #EXTINF:223,08___________ satou U:\music\satou 2_____ #EXTINF:223,121__________kondou G:\music\kondou ↑ =VLOOKUP(B2,sheet2!$A$2:$B$40000,2,FALSE) =VLOOKUP(B3,sheet2!$A$2:$B$40000,2,FALSE) =VLOOKUP(B4,sheet2!$A$2:$B$40000,2,FALSE) sheet2のデータは A列_____ _____ _____ _____ ____B列 項目1_____ _____ _____ _____ 保存場所 #EXTINF:213,08_____ #suzuki I:\music\suzuki #EXTINF:223,08_____ #satou U:\music\satou #EXTINF:223,121____#kondou G:\music\kondou

  • エクセルVLOOKUP関数でヒットしない数字

    A列    B列         D列     E列 CODE1    VLOOKUP    CODE2    NAME 01-A000  ああああ    01    ああああ 10-A123  #N/A      05    いいいい 20-B223  #N/A     10    うううう 30-C444  #N/A     15    ええええ AB-S455  きききき     18    おおおお A4-5554  くくくく     20    かかかか                 AB    きききき                 A4    くくくく                 以下略    以下略 のようなデータがあります。 A列のコード1の先頭2文字でD列をVLOOKUP検索します。 A列、B列ともに書式は文字列としています。 =VLOOKUP(LEFT(A2,2),$D$2:$E$29,2,0) という式をいれフィルドラッグすると先頭2文字が数字になるデータだけが01以外ヒットしません。 =VLOOKUP(IF(ISERROR(LEFT(A2,2)*1),LEFT(A2,2),LEFT(A2,2)*1),$D$2:$E$29,2,0) とすると、ある程度解消するのですが、1をかけると1になってしまう01がヒットしなくなるのは当然として、それ以外の数字でもD列にあるのにヒットしない場合があります。 D列のデータに先頭にシングルクォーテーションを入れればすべて解決するのですがそれ以外に解決する方法はないでしょうか?

  • エクセル関数 ランキングを使って・・・

    みなさま宜しくお願い致します。 集計作業中に躓いてしまいました。 ランキング表を作成(Sheet1)しているのですが、別シート(Sheet2)に同数で同じ順位が数名います。 Sheet2はあくまで作業シートでその他の情報も含まれているので、Sheet1に表示用を作成しました。 A列に順位(作業列)、B列に実際の順位、C列に名前という風に表示させたいのですが、Vlookupを使用すると次点が抽出されません。Vlookupにそのほかの関数を加えるのかまたは別の関数があるのでしょうか。宜しくお願い致します。 【内容】 Sheet2: A列に1行目~10行目まで実際の順位(同数は同順位)B列に名前。 Sheet1: A列には1行目~10行目まで1~10の数字を(作業列とし、最終的には非表示にしようかと)。 B列には関数式:=SMALL(Sheet2!$A$1:$A$10,Sheet1!A1)を入力し、10行目までオートフィルすると、同数同順位の数値を表示します。 ここからです。 この順位に該当する人をSheet2からVlookupで引っ掛けようにも、次点以降の名前が出てきません。 何か良い方法はありますでしょうか? みなさまのお知恵をください。 宜しくお願い致します。

  • エクセル関数を使用したデータ集計について

    関数の質問です。 仕事でデータ集計をしており、 あるデータを他のシートに集計できる関数はありますでしょうか。 具体的には、 添付画像のような Aの表に、Bのデータを、Cのルールを 用いて、集計したいです。 Vlookupとsumifsを用いろうとしましたが、うまくいきませんでした。 B-2のデータをvlookにして、 sumifsの式のデータ範囲の中にいれましたが、うまくできません。 補足 B-2の列をvlookで他の列に集計せずに、関数のみでBのシートからいきなりAの集計表に集計したいです。 (理由は、数字をあちこちに貼り付けると、その照合をしなくてはならないため、あちこちには貼りたくないのです) 関数は一つのセルの中に複数組み合わせるのは、もちろん問題ありません。 よろしくお願いいたします。

専門家に質問してみよう