• 締切済み

エクセルの2つのシートにある情報の突き合わせ

エクセルの2つのシートにある情報の突き合わせ エクセルの2つのシートにある情報を突き合わせて情報のマッチングをしなければならないのですが、全くうまくいかずに困っています。 例えば下記のような「受注依頼」というシートと「派遣登録情報」という2つのシートがあります。 「受注依頼」にはお客様のご依頼の仕事の情報と、派遣する予定の社員のID 「派遣登録情報」には社員のIDと名前等の情報と、所有している資格が○×で記載されています。 ※列は/で区切っております。見づらくなってしまい恐縮です。 【シート1:受注依頼】 番号/件名/お客様/ニーズ/担当ID A123/顧客情報管理システム統合/●●●●銀行株式会社/オラクル/1122 A125/顧客情報管理システム統合/●●●●銀行株式会社/C言語プログラミング/1224 A126/顧客情報管理システム統合/●●●●銀行株式会社/情報セキュリティースペシャリスト/1122 A354/代理店インフォ一元/×××××生命保険株式会社/シスアド/1224 A355/代理店インフォ一元/×××××生命保険株式会社/情報セキュリティースペシャリスト/1234 B661/経理ソフトウェア作成/○○○有限会社/C言語プログラミング/1431 C754/ホームページ作成/※※ゼミナール/webデザイン技能検定/2563 【シート2:派遣登録情報】 ID/名前/シスアド/情報セキュリティースペシャリスト/オラクル/C言語プログラミング/webデザイン技能検定 1122/山田 健一/○/○/○/○/× 1234/佐々木 久美子/○/×/×/○/× 1224/大田 秀樹/○/×/○/×/× 1431/鈴木 洋子/×/×/×/×/○ 2563/徳田 紀子/○/×/×/×/× やりたいことは、受注依頼のシートにチェックという列を追加し、受注依頼のお客様のニーズと、派遣予定の社員の所有資格がかみ合っているかをチェックしたいのです。 例えば、「受注依頼番号:A123」には社員:1122がアサインされており、彼はA123のニーズであるオラクルの資格が○になっているので、受注依頼シートのチェック列は「○」 逆に「受注依頼番号:A123」は社員:1224が登録されていますが、彼はC言語プログラミング資格を持っていないのでチェック列に「×」 というような表記が出るようにしたいのです。自分なりに調べて試したのですが、全くうまくいきません。 お分かりになる方、どうぞよろしくお願いいたします。

みんなの回答

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

マクロです Sub test() Dim WS1 As Worksheet Dim WS2 As Worksheet Dim i, x, y Set WS1 = Worksheets("受注依頼") Set WS2 = Worksheets("派遣登録情報") For i = 2 To WS1.Cells(Rows.Count, 5).End(xlUp).Row For x = 2 To WS2.Cells(Rows.Count, 1).End(xlUp).Row If WS1.Cells(i, 6).Value = "" And WS1.Cells(i, 5).Value = WS2.Cells(x, 1).Value Then For y = 3 To 7 If WS1.Cells(i, 4).Value = WS2.Cells(1, y).Value Then WS1.Cells(i, 6).Value = WS2.Cells(x, y).Value Exit For End If Next y End If Next x Next i End Sub 参考まで

BBLOCK
質問者

補足

hige_082様 いただいた式を元に何度かTRYしているのですが、まだうまく突合せができておらず、 ご連絡遅くなり申し訳ありません。 ご回答いただきましてありがとうございます。 手元のデータ自体に何らかのエラー原因がありそうなので、もう一度きちんと見直し、再度入力してみます。 確認できてのち、改めまして再度お礼を申し上げたいと思います。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

添付のような場合、「チェック列」を下記数式にすれば、チェックできます。ただし、エラー時の処理はしていないので、エラーを起こさないような表を作ること。 =INDEX(派遣登録情報!$A$1:$G$6,MATCH(E2,派遣登録情報!$A$1:$A$6,0),MATCH(D2,派遣登録情報!$A$1:$G$1,0))

BBLOCK
質問者

補足

okormazd様 いただいた式を元に何度かTRYしているのですが、まだうまく突合せができておらず、 ご連絡遅くなり申し訳ありません。 ご回答いただきましてありがとうございます。 手元のデータ自体に何らかのエラー原因がありそうなので、もう一度きちんと見直し、再度入力してみます。 確認できてのち、改めまして再度お礼を申し上げたいと思います。

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

シート1のF2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",IF(OR(COUNTIF(Sheet2!A:A,E2)=0,COUNTIF(Sheet2!$1:$1,D2)=0),"該当するデータがシート2にありません",IF(INDEX(Sheet2!$A:$G,MATCH(E2,Sheet2!$A:$A,0),MATCH(D2,Sheet2!$1:$1,0))="○","○","×")))

BBLOCK
質問者

補足

KURUMITO様 いただいた式を元に何度かTRYしているのですが、まだうまく突合せができておらず、 ご連絡遅くなり申し訳ありません。 ご回答いただきましてありがとうございます。 手元のデータ自体に何らかのエラー原因がありそうなので、もう一度きちんと見直し、再度入力してみます。 確認できてのち、改めまして再度お礼を申し上げたいと思います。

関連するQ&A