• ベストアンサー

エクセルデータ照合

エクセルのデータ照合によりデータの統合をしたいです。 Sheet1 A校 50% B校 30% C校 40% D校 30% E校 20% Sheet2 B校 C校 E校 F校 Sheet1 とSheet2 の学校を照合して共通校のみを抽出しSheet3として B校 30% C校 40% E校 20% データ数は約1万件です。 宜しくお願いいたします。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 今仮に、各シートにおいて、校名のデータの列がA列、パーセンテージの値の列がB列であるものとします。  まず、適当な空きシート(例えばSheet4)のA1セルに、次の数式を入力して下さい。 =IF(COUNTIF(Sheet2!$A:$A,INDEX(Sheet1!$A:$A,ROW()))=0,"",ROW())  次に、Sheet4のA1セルをコピーして、Sheet4のA2以下に貼り付けて下さい。  次に、Sheet3のA1セルに、次の数式を入力して下さい。 =IF(ROWS($1:1)>COUNT(Sheet4!$A:$A),"",INDEX(Sheet1!A:A,SMALL(Sheet4!$A:$A,ROWS($1:1))))  次に、Sheet3のA1セルをコピーして、Sheet3のB1セルに貼り付けて下さい。  次に、Sheet3のA1~B1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。  以上です。

PALPALNIGER
質問者

お礼

作業の内容がよく理解できないのですが、素人の私にとっては、最も単純な作業でした。 ありがとうございました。

その他の回答 (3)

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

カテゴリがVBなのでエクセルのVBA例です。 Sheet3のシートタブ上で右クリック→コードの表示→sampleコードを貼り付け→F5キー押下 Sub sample() On Error Resume Next st2Rng = Sheets("sheet2").Cells(Rows.Count, 1).End(xlUp).Row st2 = Sheets("sheet2").Range("a1:b" & st2Rng) With Sheets("sheet1") For i = 1 To st2Rng st2(i, 2) = WorksheetFunction.VLookup(st2(i, 1), .Range("A:B"), 2, False) Next End With With Sheets("sheet3") .Cells.Clear For i = 1 To st2Rng If st2(i, 2) <> "" Then .Range("A1").Offset(k, 0) = st2(i, 1) .Range("A1").Offset(k, 1) = st2(i, 2) .Range("A1").Offset(k, 1).NumberFormatLocal = "0%" k = k + 1 End If Next End With End Sub

PALPALNIGER
質問者

お礼

ありがとうございました。VBも勉強していきたいと思います。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

Visual Basicのカテゴリーでの質問ですのでVBAでやってみました。 データが1万もあるなら、単純にセルデータを順列組み合わせで見ていくと時間がかかります。 そのため一旦データを配列に取り込んで配列内で照合させてみました。 お試しください。 Sheet1は A列に校名、B列に% Sheet2は A列に校名 Sheet1、Sheet2の両方に存在する校名を抜き出し、Sheet3のA,B列に転記するコードです。 Sub test01()   Dim ws(1 To 3) As Worksheet   Dim myV, myW, myX   Dim i As Long, j As Long, n As Long   Set ws(1) = Sheets("Sheet1")   Set ws(2) = Sheets("Sheet2")   Set ws(3) = Sheets("Sheet3")   myV = ws(1).Range("A1:B" & ws(1).Cells(Rows.Count, "B").End(xlUp).Row).Value   myW = ws(2).Range("A1:A" & ws(2).Cells(Rows.Count, "A").End(xlUp).Row).Value   ReDim myX(1 To UBound(myW, 1), 1 To 2)   For i = 1 To UBound(myW, 1)     For n = 1 To UBound(myV, 1)       If myW(i, 1) = myV(n, 1) Then         j = j + 1         myX(j, 1) = myV(n, 1)         myX(j, 2) = myV(n, 2)       End If     Next n   Next i   ws(3).Range("A:B").ClearContents   ws(3).Range("A1").Resize(UBound(myX, 1), 2).Value = myX End Sub

PALPALNIGER
質問者

お礼

とてもスムーズに実行することができました。 勉強になりますありがとうございました。

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

エクセルにはデータの「統合」があり、は別の機能でも使う。 ひょうだいとしては、「検索」。 Sheet12(のA列)を中心にして、Sheet1のA列にデータがあるかどうか「検索」し、在れば、同行の隣列のデータを持ってくる。タイプとしては、「検索」なんだ。 ーー エクセルには検索に適したかんすうは、2つしかない。 MATCH関数とVLOOKUP関数だ。 ーー あとSheet1に該当がない場合をどう見つけるか という課題も同時に出てくる。 あと、他シートのデータを参照する書き方の問題もある。 ーー VLOOKUPでやってみると 例データ Sheet1 A校 50% B校 30% C校 40% D校 30% E校 20% Sheet2でB2に =VLOOKUP(A2,Sheet1!$A$2:$B$100,2,FALSE) 結果 B校 0.3 C校 0.4 E校 0.2 F校 #N/A まず、B列の表示形式を%に設定する。 #N/A がSheet1のA列に該当無しの場合だが、VLOOKUPの場合は =IF(ISNA(VLOOKUP(A2,Sheet1!$A$2:$B$100,2,FALSE)),"",VLOOKUP(A2,Sheet1!$A$2:$B$100,2,FALSE)) のようにする。(該当無しは空白のしているが、"該当なし"なんてのも出せる。 普通はA2が空白だったら、空白を返す、という部分を入れるのだが、この場合はたまたま不要。 ーー もっとSheet1の項目数(=列数)が多い場合は(sheet2にも複数項目を持ってくる場合)Sheet1!$A$2:$B$100の$Bの部分を変えて、またFALSEの前の2を3,4、・・に指定する。

PALPALNIGER
質問者

お礼

タイプは「検索」なのですね。基本的なところから教えてもらって、感謝です。 わかりやすい丁寧なご説明ありがとうございました。

関連するQ&A

  • エクセルと照合について

    エクセルと照合について 工場に勤務していて、シフト表と給与計算をしています。 エクセルの表がうまく貼りつけられず(列がずれるため)、縦書きですいません。 以下はシート1です。 出勤予定表(A1) Aさん(A2) 1/1(B1)←1/1は日付です。 1(B2) 1/2(C1) 空欄(C2)←休日のことです。 1/3(D1) 3(D2) 1/4(E1) 空欄(E2) 1/5(F1) 1(F2) 1/6(G1) 3(G2) 以下BさんからEさんまで5人分あります。 以下は勤務時間コードです。 1 5:00~13:00 2 8:00~15:00 3 13:00~21:00 以下はシート2に作成している、実際の出勤日です。 Aさん(A2) 1/1(B1)←1/1は日付です。 5:00~13:00(B2) 1/2(C1) 空欄(C2)←休日のことです。 1/3(D1) 13:00~21:00(D2) 1/4(E1) 空欄(C2) 1/5(F1) 5:00~13:00(F2) 1/6(G1) 13:00~21:00(G2) 他にBさんからEさんまで、シート3からシート6まで作成しています。 要は二つのシートをマクロか関数かであっているかどうか照合したのですが、できるのでしょうか。 目視はできるだけ避けたいです。 超初心者ですいません。 お願いします。

  • EXCELのデータ照合で教えてください。

    EXCELで外部データの取込からデータの照合をしたいのですが ←     更新後     →     ←     更新前     →   A    B    C     D    E     F    G     H 1 商品A  4個  商品B  10個  商品C  2個  商品D  10個 2 商品C  4個  商品D   8個  商品E  10個  商品A   4個 この時に、セルA1B1とセルG2H2は、何もせず、セルC1D1には、文字を太字で表示、セルG1H1、黄色で塗つぶし、セルC2D2は、文字を黄色で表示、 セルE1F1、緑色で塗つぶし、セルA2B2は、文字を緑色で表示とかのデータの照合をしたいのですが、どなたか教えて下さい。 宜しくお願い致します。

  • エクセルのデータ照合

    AとB2つのエクセルシートがあって、Aのシートのデータが Bのシートにもあるかどうかを調べる時どのようにすればいいのでしょうか? 例えば・・・、 <シートA>    A  B C D E F G <シートB> A B H I というエクセルデータがあって、シートBのデータがシートAにあるか どうか(AとBはあるのでYES、HIはないのでNO)など一発で 検索する方法を教えていただけないでしょうか? 宜しくお願いします。

  • エクセルシート間の照合について

    エクセルシート間で照合をしたいと思っています。 照合する項目は2つ。2つともあえばそのA列のデータを表示するというものです。 データは シート1(前年) A  B  C  D 1  田中 123 東京都・・ 5  佐藤 124 千葉県・・ 3  山本 128 埼玉県・・ シート2(今年) A  B  C  D   山本 128 埼玉県・・   佐藤 124 北海道・・   田中 123 東京都・・ C列とD列を照合し2つともあえばシート2のA列にシート1のA列のデータを入力する。なければ「なし」と入力できるようにしたいのです。 上の場合は山本のA列に「3」佐藤には「なし」田中には「1」と入るのうになればと思います。 入力されている列は同じですが順番はばらばらです。データ数は1万件を超えています。 どなたかアドバイスいただければと思います。よろしくお願いします。     

  • excelでデータ照合

    すいません。。かなり初心者です。 excelですが、例えば、a,b,c・・x,y,zといったデータ群と特定のa,f,g,kといったデータ群があります。(実際の件数はかなり多いですが。)  この2つのデータを照合して、同じ値があるものに関して抽出したいのですが、どうすればいいでしょうか?結果的には元データ群にフラグ等を立てたいと思います。 よろしくお願い致します。

  • Excel シート間のデータの照合

    Excelで、シート間のお客様データ(だいたい各1万件)を照合します。下記は現在の照合方法ですが、これでは時間がかかるうえ手作業が多く発生しミスにつながります。頻繁に行う作業なので、関数でも、マクロでも、とにかくもう少し簡単にできる方法がありましたら、どうぞご教授ください。よろしくお願いします!! 【目的】 シート「sheet2008」には2008年度のデータ。シート「sheet2007」には「sheet2008」と同じ形式の2007年度のデータが入っています。シート「sheet2008」に、そのお客様の2007年度の担当営業マンを表示させたいのです。 【例】 列A(電話番号): 011-231-1112 列B(名前):佐藤 一郎 列C(住所):北海道札幌市中央区北1-1-1 列D(担当営業マン):鈴木 新規の列(2007年度の担当営業マン):鈴木  ・「sheet2008」「sheet2007」はほぼ同じデータですが、一部のお客様は名前が変わっていたり、住所が変わっていたりします。  ・「sheet2007」にないお客様が「sheet2008」にあったり、その逆があったりして、各シートのデータ件数は一致しません。  ・名前が同じでも住所が違うデータ、電話番号が同じでも担当営業マンが違うデータは別者として扱います。  ・「顧客ID」のような“必ずユニークな情報”は存在しません。 【現在の照合方法】 (1)「sheet2008」の各列の前に空白列を挿入する。  (データの1行目はタイトル行…B1:電話番号/D1:名前/F:住所/H:担当営業マン)  (データの2行目以降はデータ)     列A(空白行):     列B(空白行): 011-231-1112     列C(空白行):     列D(名前):佐藤 一郎     列E(空白行):     列F(住所):北海道札幌市中央区北1-1-1     列G(空白行):     列H(担当営業マン):鈴木 (2)「sheet2007」を列Aの電話番号で昇順に並べ替える。 (3)「sheet2008」の電話番号が「sheet2007」にあるかを調べる。     A2:「=IF(B2=(VLOOKUP(Sheet2008!$B2,Sheet2007!$A:$D,1,0)),"○","▲")」 (4)(3)で調べた「sheet2008」の電話番号と同じ行にある名前/住所が「sheet2007」にあるかを調べる。     C2:「=IF(D2=(VLOOKUP(Sheet2008!$B2,Sheet2007!$A:$D,2,0)),"○","▲")」     E2:「=IF(F2=(VLOOKUP(Sheet2008!$B2,Sheet2007!$A:$D,3,0)),"○","▲")」 (5)電話番号/名前/住所がすべて一致するデータについて、「sheet2007」にある担当営業マンの値を列Gに表示させる。     G2:「=IF((AND(A2="○",C2="○",E2="○"))=TRUE,(VLOOKUP($B2,Sheet2007!$A:$D,4,0)),"▲") (6)"▲"やエラー値で表示される計算結果について、目視で確認する。 (終了)

  • 2つのデータを照合したいです

    お客様から送られてくるエクセルの注文データと、自社で管理している注残データを照合し、お客様の注文データにあって自社注残データにないもの=新規注文データのみを別シートに抽出したいです。 これを行うにはマクロでいいのでしょうか? エクセルのシート1にユーザー注文データ。 シート2に自社注残データ。 この状態でマクロ実行→新たにシート3が作られ、照合できない新規注文データのみを抽出。 ということをイメージしています。 シート1(ユーザー注文データ)のI列に型式、F列に数量が入っています。 シート2(自社注残データ)のI列に型式、J列に数量が入っています。 この型式・数量の2項目を照合したいのですが、ユーザーデータには型式の頭に「P (Pと半角スペース)」が全数ついています。 このP+スペース以降の型式が照合対象です。 型式・数量が一致しないものを新たにシート3を作成しそちらに抽出したいです。 データ数は大体100行程度。 シート1・2共に1・2行には項目タイトルが入っているので、3行目からデータが始まります。 自分で作成しようとVBAの本を買ってきて勉強中なのですが、超初心者なので、まだまだ時間がかかりそうです。 どなたかお知恵を貸していただければと思います。 よろしくお願いいたします。

  • エクセル 大量のデータから抽出し自動表示

    エクセルのSheet1のC列に大量(3500件くらい)のデータがあります。このデータは毎日さらに増えます。D列にもおなじだけのデータがあります。 (E列・F列にはあとから別のデータをさらに入力していきます。) Sheet1 A B C D E F     1 2 3 4     2 3 4 5      1 3 5 6     3 5      2 4      ・ ・     ・ ・ こんな感じです。 今回、このC列に入っているデータを検索し、完全に一致したデータのみを別シートに抽出したいのです。 C列にはいろいろな数字が入っていて、同じものもありますが、D列にも同じ数字とは限りません。 なので、VLOOKUPは使用できないのかと思っています。 一致したデータはその行をすべて別シートに抽出したいです。 検索をかけて一致しないデータがあった場合もその検索した数字は残しておいてさらに今後一致になるまでデータを残しておくという方法はできますでしょうか。 エクセルは2003です。 よろしくお願いします。

  • エクセルでデータ照合の仕方

    エクセルのデータ照合の仕方 仕事でデータの照合をしたいのですが・・・今現在紙ベースで合していて大変です。 こちらが把握している事務データと営業さんがあげるデータを照合したいのです。 A列商品名 B列数量 C列金額 D列合計金額(数式C*D)となります。 例えばこちらが A ビール B 10 C 300 D 3000 と打ち込みます。 営業さんも    A ビール B 10 C 300 D 3000 と打ち込むとデータが表示されないようにしたい。 こちらが     A ビール B 10 C 300 D 3000と打ち込み、 営業さんが   A ビール B 5 C 300 D 1500           A ビール B 5 C 300 D 1500           とこちらが1行営業さんが2行打ち込んでも品名があっていて合計金額もあっているのでデータが表示されないようにしたい。 こちらが     A ビール B 10 C 300 D 3000と打ち込み、 営業さんが   A ビール B 10 C 500 D 5000 と合計金額が違うのでこちらのデータも営業さんのデータを表示させたい。 間違い探しをしたいのです。 営業さんがこちらのデータ合わせて打ち込んでくれれば、一番良いのですが・・・そうもいかずに困っています。 こんな都合の良い照合の仕方ってありますかね?

  • エクセルでデータの抽出する際に困っています

    エクセルで特定の行のデータを抽出する方法を教えてください。 抽出方法を以下に示します。     A   B   C   D   E   F   G   ---------------------------------- 1l  10   11   0   0   0   0   0 2l  12   13   0   0   0   0   0 3l  14   15   1   2   3   4   5 4l  16   17   0   0   0   0   0 5l  18   19   0   0   0   0   0 6l  20   21   6   7   8   9   10 7l  22   23   0   0   0   0   0 というような感じのエクセルデータに対して、     A   B   C   D   E   F   G    ---------------------------------- 1l  14   15   1   2   3   4   5 2l  20   21   6   7   8   9   10 というように、C~G列が0でない行のA~Gのデータを別シートに抽出したいのですが、 簡単な方法があれば教えていただきたいです。 よろしくお願いします。