• 締切済み

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

シート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

  • 別シートのデータを指定したセルに読み込みたい

    Excell for Mac 2011 を使用しています。 画像のイメージのように、シート1のデータをシート2の指定したセルに読み込みたいのですが可能でしょうか? また、シート1のデータは商品が増える度にセルの位置が変わります。 (Aの次にA-1という品番が追加される、そうするとB以降のセルの位置がずれるという感じです) なので【シート1の「D2」をシート2の「D12」に読み込む】のではなく 【シート1のA列が「A」(品番)且つ       B列が「M」(サイズ)且つ       C列が「BLUE」(カラー)の       D列 (在庫数量)を  シート2の「D12」に読み込む】 という細かい指定をしたいのですが、可能でしょうか・・・? ご教示宜しくお願い致します。

  • excelでデータを別シートに引っ張ってきたい

    excelで値を検索し、返す時、返す値の横にあるデータを違うシートのセルの下に一緒に引っ張ってきたいときの関数(方法)を教えてください。 素人なので分かりにくいと思いますが、お知恵をお借りしたいと思います。 あるデータのシートの検索値を別シートに持ってきたいのですが、シート1をシート2のようにしたいのです。 /は空白 例)シート1 /A B C D E 1(1) □ ○ ▽ ◎ 2 (2) ▼ ■ ◇ ◎ シート2 / A B C D 1 (1) □ 2 /○ ▽ ◎ 3 (2) ▼ 4 /■ ◇ ◎ 分かりにくいかもしれませんが、 シート1の(1)(A1)を検索すると、シート2(B1)に□(これはVLOOKで引っ張ってこれるのはわかります。) 次にシート1の(C1)○をシート2の(B2)へ持ってきたいのです。シート1(D1)(E1)はシート2の(C2)(D2)へ。 しかもシート1のC列は空白セルもあり、シート1のC列が空白の場合、下にずれることなくシート1の(D1)(E1)はシート2の(C1)(D1)へ。下記<図a>のようになるようにしたいのです。 そして、シート2のA列に検索値として入力する(1)や(2)の値は連番ではなく、(2)の次に(5)に飛んだりします。(2)の行のC列にデータがあっても、(5)のC列にデータはないこともあります。<図b> <図a> /A B C D 1 (1) □ ▽ ◎ 2 (2) ▼ ◇ ◎ <図b> / A B C D 1 (1) □ 2 /○ ▽ ◎ 3 (2) ▼ 4 /■ ◇ ◎ 5 (5) □ ▽ ◎ 6 (7) ▼ ◇ ◎ vlookとかCLUMN関数とか考えてはみたのですが、どうもうまくいきません。 毎回作成するデータなのですが、毎回コピペで作成しています。 とても面倒なので(1)を検索したらデータが一瞬で検索できるようにしたいと試みてはみたものの、私の知識では不可能でした。 関数では無理なのでしょうか。。。 関数はあまり詳しくないので分かりやすい方法があれば、教えていただければ助かります。 関数に詳しい方、よろしくおねがいいいたします。 関数にはこだわっていません。違う方法があればそれも含めておねがいいたします。

  • Excel でシート間の重複データ(Sheet1のA=Sheet2のA かつ Sheet1のB=Sheet2のB)

    Excel2000です。 Sheet1のA列・B列・C列・・・にデータが入っています。 Sheet2のA列・B列・C列・・・にデータが入っています。 Sheet1のA列とSheet2のA列は、似たようなデータが入っています。 Sheet1のB列とSheet2のB列も、同様です。 C列以降のデータは、シート間で全然関係ありません。 Sheet1の行データ(A列・B列)が、Sheet2(A列・B列)にも存在しているかどうか、 を知るには、どうすればよいですか。 C列以降の列のデータは、比較する際に使いません。 つまり、 Sheet1のA = Sheet2のA かつ Sheet1のB = Sheet2のB であるような行を知りたいのですが、 どうすればよいのでしょうか。

  • 一致するデータを複数シートから別のシートへ移動

    Sheet1~Sheet3を用いて、 Sheet1とSheet2でそれぞれのC列の項目が一致するデータを抽出し、 該当するデータの Sheet1B列⇒Sheet3D1 Sheet2A列⇒Sheet3A1 Sheet2B列⇒Sheet3B1 Sheet2C列⇒Sheet3C1 に移動するためのマクロを組みたいと思っています。 Sheet2からSheet1に検索をかけて、 Sheet2C列≠Sheet1C列であればSheet2のA1行を削除していき Sheet2C列=Sheet1C列であれば Sheet2A~C列をSheet3A~C列へ移動するところまでは出来ました。 ※なお、Sheet3のA1行に文字列があればセルを1行追加する設定にしています。 しかし、それはA1行の文字列をそのままコピペしているだけなので Sheet1B列の一致データをSheet3D1へ移動するやり方が思い浮かびません…。 Sheet2と同じくA1行を削除していこうとしてもうまくいきませんでした。 どんどんマクロも指示文ばかりが増えてわけが分からなくなってきてしまい、挫折しています。 シンプルにするにはどうすればいいでしょうか? また、マクロの内容を載せたいのですが 会社の業務端末で組んでいるため転記できません; 申し訳ありませんが、どうかご指導ください。

  • 複数のシートのデータをひとつのシートに纏める

    EXCELにおいて、複数のシートのA列のデータをひとつのシートにまとめるにはどのようなマクロを組めばよいのでしょうか。 (内容) ”Cycle1”SheetのA列をコピー⇒”まとめ”SheetのA列に貼り付け ⇒”Cycle2”SheetのA列をコピー⇒”まとめ”SheetのB列に貼り付け ⇒”Cycle3”SheetのA列をコピー⇒”まとめ”SheetのC列に貼り付け ⇒”Cycle4”SheetのA列をコピー⇒”まとめ”SheetのD列に貼り付け ・・・。 現在は、上記の内容を手動でやっており、シート数が多い場合大変です。 よろしくお願いします。

  • エクセルのデータ比較

    シート1のA行のデータとB行のデータをすべて比較して、同じデータがあれば C列にそのデータを書き出したいのですが、どうすればよろしいのでしょうか。 行数(比較するデータの数)はそれぞれ数千行あります。 例(a~hはデータです) シート1     A列 B列 a c b d  c f d h の場合、比較した結果をC列に次のように表示させます。 A列 B列  C列 a c c b   d d c f d h どなたかよろしくご教示くださるよう、お願いします。

  • book1シート1のデータを別bookシートに移す

    a1シート1のデータ1,2(データ1.5列G行~18列G行,~9000個、データ2.25列G行~38列G行,~9000個)を b1シート1,c1シート1に移行したいのですが、 a1シート1のデータは、9000個と9000個とします。 b1シート1,c1シート1は、16000個前後をできれば最大にしたいと考えています。 このとき移行したいb1シート1(5列G行~18列G行,~16000個)は最終行からでてしまいます。 でてしまう分をc1シート1(5列G行~18列G行,~2000個)に書き移したいと思っています。 分かりやすくと思い9000個と書きましたが、データにより数は、異なっています。 このとき、データ1とデータ2の連結は、空白行なしです。 b1シート,c1シートは、a1シートとは、別bookです。 こんなときのマクロを教えていただければと思い質問しました。 マクロ記録でしましたが、うまくできませんでした。 コードを教えていただけませんか。 よろしくお願いします。 m2010です。

  • エクセル 複数シートのデータを一つにまとめる

    エクセルに関してお知恵を拝借願えれば幸いです。 一つのファイルに多数の(30~96)シートが存在している エクセルデータがあります。 これらを加工しやすいようにしたいと考えております。 内容としては、 シート1~シート3までは、 同じA列に対し、違う内容が示されており(※1)、 (※1) シート1 A列    B列   C列・・・ 名前α  年齢  住所・・・ シート2 A列    B列   C列・・・ 名前α  血液型 趣味・・・ シート3 A列    B列   C列・・・ 名前α  特技  好物・・・ シート4以降は3シートずつ上記のA列が変わっていきます。(※2) (※2) シート4 A列    B列   C列・・・ 名前β  年齢  住所・・・ シート5 A列    B列   C列・・・ 名前β  血液型 趣味・・・ シート6 A列    B列   C列・・・ 名前β  特技  好物・・・ 作業としては二つあり、 作業1:3つのシートに分かれているデータを先頭のシートに一つにまとめる (シート1) A列    B列   C列   D列   E列   F列   G列 名前α  年齢  住所   血液型  趣味  特技  好物 (シート2) A列    B列   C列   D列   E列   F列   G列 名前β  年齢  住所   血液型  趣味  特技  好物 作業2:上記を一つのシートにまとめる (シート1) A列    B列   C列   D列   E列   F列   G列 名前α  年齢  住所   血液型  趣味  特技  好物 名前β  年齢  住所   血液型  趣味  特技  好物 A列の名前の数が違っていたりして、単純に作業記録のやり方のマクロでは うまくいかず、これらを可能とするマクロについてご助言願えれば幸いです。 よろしくお願い致します。

  • 【エクセル】シートが分かれているデータを集める

    あるブックにシートが10シートあるとします。 これらのシートの同じ列を、別のシートにまとめたいです。 列には60行くらいのデータがあり、それぞれのシートの行数は同じです。 まとめるシートは、    A列        B列      C列        D列   シート1のA列、シート2のA列、シート3のA列、シート3のA列・・・ のようにしたいです。 関数などを試してみましたが、列設定ではなかなかうまくいかず、 すっきりと持ってくることができません。 知恵をお貸しいただけないでしょうか。 よろしくお願いいたします。

  • エクセルの横データを自動的に縦データに表したいです

    エクセルで以下のような入力をしたいと思っていますが、いい方法が見つからず困っています。「形式を選択して貼り付け」では上手くいきません。 (sheet1)    A     B     C     D 1   100   300   200   500 2 3      ↓ (sheet2)   A      B    C    D 1      100    2      300    3       200 4       500    と言う感じにsheet1で入力したデータを自動的にsheet2に入力できるようにしたいと思っています(sheet2の数値はB列に入っていると見てください)どうすれば良いでしょうか?何か関数を利用してこういうことはできるのでしょうか?よろしくお願いします

専門家に質問してみよう