• 締切済み

マスタシートと同じデータがあれば横にデータを貼り付けていく。

シート1の品番を基準にし、シート2に同じ品番があればシート1の品番とデータの横にシート2のデータを貼り付けていく。次にシート3に移り繰り返し。 (シート1) | A | B | C | D 1 | 1a| 1 | 9 | 2 2 | 2a| 4 | 7 | 1  ・  ・  ・ A列に品番、B列に枚数、C列に最高数、D列に最低数が入ってます。 (シート2) | A | B | C | D 1 | 1a| 2 | 8 | 1 2 | 3a| 3 | 5 | 3 ・  ・  ・ シート1と同じ形式です。 (シート1)↓こうしたいです。 | A | B | C | D | E | F | G | 1 | 1a| 1 | 9 | 2 | 2 | 8 | 1 | 2 | 2a| 4 | 7 | 1 | A列の品番と同じであればその横(列)に枚数、最高数、最低数のデータを貼り付けていきたいのです。 シート数とデータ数はその時々により減ったり増えたりと変化します。 エクセル2000です。 わかる方、よろしくお願いします。

みんなの回答

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.2

#1 です ADOを使うとあたかもMDBのごとく EXCELシートを テーブルにみたててクエリで操作できます。 だから、クエリ(SQL)と EXCEL VBAの組み合わせで いろいろとできるのです。 まずは誰かのコードをまねて作成してみてください。  GOOgle などで 「ADO ADOX 入門」と入力するとたくさん出ますよ。 _____________________________________________________ 【参考】 ◆[HOWTO] VB または VBA から ADOX を Excel データで使用する http://support.microsoft.com/kb/303814/ja ◆ADO ← VBSでもEXCEL でも実行可能なコードの紹介 http://tuka.s12.xrea.com/index.xcg?p=ADO ◆ ActiveX Data Object : ADO入門講座 ← ACCESS 2000以上のバージョン http://www.accessclub.jp/ado/ ◆ Visual Basic 中学校     http://homepage1.nifty.com/rucio/main/main.htm    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ほか SELECT については 以下サイトなど ◆SQL入門  http://sql.1keydata.com/jp/   _____________________________________________ 以上

small11
質問者

お礼

ありがとうございます。 もともとアクセスで行っていた処理をエクセルに移行してほしいと頼まれたのです。これならエクセル上でクエリの操作ができるのですね! むずかしいですが、がんばって勉強したいと思います。

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.1

【参考】 ◆ADO を使用して Excel ワークシートにクエリを実行する http://www.microsoft.com/japan/technet/scriptcenter/resources/officetips/jun05/tips0607.mspx ◆他形式のファイルから Jet データベースへのインポート方法 http://support.microsoft.com/kb/410871/ja/ ______________________________________________________________________________________ EXCEL を SELECT で抽出できます。 だから、次のようにプログラムすればEXCEL ワークシートに抽出結果を作成すれば 可能です。 SELECt Excelシート1.*, Excelシート2.*, Excelシート3.*, Excelシート4.*,Excelシート5.* FROM Excelシート1 LEFT Outer JOIN Excelシート2 On KEY Excelシート1.ID = Excelシート2.ID LEFT Outer JOIN Excelシート3 On KEY Excelシート1.ID = Excelシート3.ID LEFT Outer JOIN Excelシート4 On KEY Excelシート1.ID = Excelシート4.ID LEFT Outer JOIN Excelシート5 On KEY Excelシート1.ID = Excelシート5.ID ________________________________________________________ 実際には子レコード(Excelシートxx)の結果がない場合も ありえるので 抽出結果を調査して、もし空なら無視すればOK です。 あとは抽出結果を Excelの新規BOOk にデータを書き込んで ゆけば出来上がりです。 以下のサンプルを参照 _______________________________________________________ ・サンプル(Excelの新規BOOk にデータを書き込み) DIm W_row as Integer Do Until objRecordset.EOF W_row = W_row + 1 Workbooks(P_MyXlsFname).Sheets(1).Range("A" & W_row).Value = objRecordset.Fields.Item("Excelシート2.項目1") objRecordset.MoveNext Loop  _______________________________________________________ 実際のコーディングには ADOなどの知識が必要です。 ※今回はポイントのみの回答です。  実際のコード二ついては以上をご参考に作成してみてください。 以上

small11
質問者

お礼

回答ありがとうございます。 すみません、マクロ初心者の為理解が難しいです アクセスを間に入れての処理になるのでしょうか? よろしければADOについてのおすすめの書籍かサイトを教えていただけますか?本屋を探したのですが、置いてなく… よろしくお願いします。

関連するQ&A

専門家に質問してみよう