Excel2000マクロ抽出方法

このQ&Aのポイント
  • Excel2000でのマクロ抽出方法について教えてください。
  • 2つのファイルの特定のデータを抽出するための条件式について知りたいです。
  • 条件を満たした場合のデータの取り扱い方法について教えてください。
回答を見る
  • ベストアンサー

excel2000マクロ抽出方法

2つのファイルがあります。ブック名A.XLS シート名 WORK              ブック名b.XLS シート名 SORT              ブック名A.XLS シート名 WORKに下記のデータが入っています。 AD 1300G A227550 000PA505(C列2行目) 200112(F列)200201(G列)200202(H列)200203(I列)200204(J列)200205(K列)→1行目固定データ AD 1300G A227550 000PA533(C列3行目)   ブック名b.XLS シート名 SORTに下記のデータが入っています。 AD 1300G A227550 000PA505(A列2行目)200112(E列)200201(F列)200202(G列)200203(H列)200204(I列)200205(J列) →1行目E列~J列のデータは都度変わっている AD 1300G A227550 000PA533(A列3行目)    データ抽出条件  ブック名A.XLS シート名 WORKの F列~K列の1行目の列データとブック名b.XLS シート名 SORTの  E列~J列の1行目の列データが同じで、ブック名A.XLS シート名 WORKのC列の2行目以降のコードと  ブック名b.XLS シート名 SORTのA列の2行目以降のコードが同じだったら  ブック名b.XLS シート名 WORKの E列~J列の同じ行にデータを入れる。違うときは、  ブック名b.XLS シート名 WORKのデータはそのままにする。 上記の条件を満たしたマクロの記述の仕方を教えてください。 以上よろしくお願いします。

noname#72697
noname#72697

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

質問の意味を完全に理解できない状態での回答です。モデル的な処理にしているつもりです。実情に合うように修正してみてください。 >1行目 『1行目』という記載がありますが、質問では2行目の横に書いてある? ブックAとブックBで1行目が異なれば、何もしない?何を意味するのだろう? >シート名WORKのC列の2行目以降のコードと・・・A列の2行目以降のコードが同じだったら・・・ シート名WORKのC列の値をA列の2行目と照合すればいい?複数は合致しない? >・・・同じだったら・・・同じ行にデータを入れる。・・・ 『同じ行』とは何と同じ行?(不明なので、下ではB.xlsのSORTとWORKを2回検索しています) 『データを入れる』の『データ』とは何?(下ではA.xlsの検索している行のF~K列のデータを転記) >ブック名b.xls シート名WORK・・・ ブック名A.xls シート名WORK←→ブック名b.xls シート名SORT の照合を行い、 ブック名b.xls シート名WORK に(何か)データを書き込むらしいが、 ブック名A.xls シート名WORK←→ブック名b.xls シート名WORK の照合を行い、 ブック名b.xls シート名WORK に書き込めば、ブック名b.xls シート名SORTは不要な気がするが・・・ 質問の通りに書いたつもりです、理解できてない箇所があると思いますので、修正してみてください。 基本的な流れは多分、同じではないでしょうか ここから(ブック名A.xlsの標準モジュールに貼り付け) ↓ Sub Abook_copy_ToBbook()   'ブック、シートの定義   '=== ブックA ===   Dim c As Integer, r As Integer 'カウンタ   Dim wbA As Workbook 'ブックA   Dim wsWORKa As Worksheet 'シートWORK   Dim keyA(6) As Variant '照合キー   Dim maxRowA As Long '最終行     Set wbA = Workbooks("A.xls")     Set wsWORKa = wbA.Worksheets("WORK")     For c = 1 To 6       keyA(c) = wsWORKa.Range("F1").Cells(1, c)     Next   '=== ブックB ===   Dim wbB As Workbook 'ブックB   Dim wsSORT As Worksheet 'シートSORT   Dim wsWORKb As Worksheet 'シートWORK   Dim keyB(6) As Variant '照合キー   Dim maxRowBsort As Long '最終行(シートSORT)   Dim maxRowBwork As Long '最終行(シートWORK)     Set wbB = Workbooks("B.xls")     Set wsSORT = wbB.Worksheets("SORT")     Set wsWORKb = wbB.Worksheets("WORK")     For c = 1 To 6       keyB(c) = wsSORT.Range("E1").Cells(1, c)     Next   '照合キーの付け合せ   For c = 1 To 6     If keyA(c) <> keyB(c) Then       Exit Sub '1行目が1つでも違っていたら何もしない     End If   Next   '最終行を決める   maxRowA = wsWORKa.Range("C65536").End(xlUp).Row   maxRowBsort = wsSORT.Range("A65536").End(xlUp).Row   maxRowBwork = wsWORKb.Range("A65536").End(xlUp).Row   'セル同士を照合するための設定   Dim FindAreaBsort As Range 'ブックBの照合する範囲(シートSORT)   Dim FindAreaBwork As Range 'ブックBの照合する範囲(シートWORK)   Dim fCellsort As Range 'ブックAと同じブックBのセル(シートSORT)   Dim fCellwork As Range 'ブックAと同じブックBのセル(シートWORK)   Dim matchV As Variant '照合する値   Set FindAreaBsort = wsSORT.Range("A2:A" & maxRowBsort)   Set FindAreaBwork = wsWORKb.Range("A2:A" & maxRowBwork)   'ブックAのC列を基準にブックBを検索する   For r = 2 To maxRowA     '検索する値     matchV = wsWORKa.Range("C" & r)     '検索     Set fCellsort = FindAreaBsort.Find(What:=matchV, LookAt:=xlWhole)     '一致するセルが見つかったら     If Not fCellsort Is Nothing Then       Set fCellwork = FindAreaBwork.Find(What:=matchV, LookAt:=xlWhole)       '当然、存在するだろうが安全を見てIFで判定       If Not fCellwork Is Nothing Then         'ブックBのEn~Jn列にブックAのF1~K1の値を書く         For c = 1 To 6           fCellwork.Offset(0, 3 + c) = wsWORKa.Range("C" & r).Offset(0, c + 2)         Next       End If     End If   Next   MsgBox "終了しました" End Sub

関連するQ&A

  • excel2000マクロ記述方法

    抽出条件方法のマクロ記述 1つのファイルのシートの中にデータがあります。 例ファイル名a.xlsシート名マスター     B列 C列   D列    E列 項目名 倉庫  翻訳  ソート  非表示項目     A057 レオナ工場  1     A870 セ新港    2    Y     A887 セ日向    3 もう1つのファイル 例ファイル名B.xlsシート名WORK     A列   B列   c列    d列    E列    連結コード  品名  倉庫 出荷1  加工1  AA 0G120 0G120  A870 0 0 0 AA 0H120 0H120  A057 0 0 0 AA 0S0100 0S010  A887 0 0 0 抽出条件方法 シート名WORKのデータの中のC列と、シート名マスターのB列の倉庫を参照して 非表示項目のYが入っていない、倉庫と同じデータをシート名WORKのデータを抽出したい 場合のマクロ記述の方法を教えてください。よろしくお願いします。 (抽出表示方法) AA 0H120 0H120  A057 0 0 0 AA 0S0100 0S010  A887 0 0 0     

  • エクセルのブック分割マクロを教えてください。

    すみません、教えていただきたいのですが。 ひとつのシートの膨大なデータを種類ごとに別ブックの別シートにわけるマクロです。 オリジナルのシートは1枚です。 1行目は項目行で A:地域名(北米、中南米、欧州、アジア、アフリカ、オセアニア) B:国名(アメリカ、カナダ、ブラジル等) C~J:その他各種項目 10000行程度のデータで、ソート済みです。 このシートを、A列の地域別にブック分割をして、それぞれのブックは中に国名別のシートを持ちます。 各シートの配置はオリジナルと同じく1行目に項目、2行以下がデータというならびにしたいのです。 全部で6ブックで、計50シートくらいになります。 各ブック名は地域名(北米等)とし、各シート名は国名となればありがたいです。 なにとぞよろしくお願いします。

  • Excel2000マクロ記述について

    下記の条件で下記のようなマスターを参照してマクロを作成したいのですが、どのように記述したら良いでしょうか シート名 滞留在庫表 条件 c列の5行目からdataが入っています。data例(AD1200S0110000000P)18桁 dataの頭8桁目がBの場合はL221をV列に表示 dataの頭8桁目が、A又はM又Pの場合はL222をV列に表示 dataの頭8桁目がB、A、M、P以外の場合は、ブランクをV列に表示 シート名 表示再設定マスタ             A列    B列 5行目****************** 6行目*******B********** L221 7行目*******A********** L222 8行目*******M********** L222 9行目*******P********** L222

  • excel2003 VBAマクロの作成

    すいません、下記のような条件を満たすマクロのサンプルコードをお願いします。 ■前提条件 ・「検索元データ」はマクロ.xlsの中にある ・「検索先ファイル」は管理ファイル.xlsである ・マクロ.xlsファイルのA列にはデータがn個ある(セル範囲A2:A(n+1)まで) ・C:\one\two\three\管理ファイル.xls のフォルダ位置である(絶対パスで指定する) ・管理ファイルの中にはSheet1,Sheet2,Sheet3・・・・Sheet10の10コのシートがある ■マクロでしたいこと (1)A列のデータが管理ファイル(ブック内)に記載されているかチェックする (2)A列のデータをチェックしたら、下記の通りに列にチェック情報を記載する B列 データがいくつあったか(管理ファイルに記載されていない場合は0と表示) C列 データが記載されているシート名(B列が0の場合は0と表示) (3)次のデータへ (4) (1)-(3)をA列のデータがなくなるまで繰り返す (5)データがなくなったら終了(保存せず閉じない) 以上です。 よろしくお願いします。

  • ブック間でデータの移植をしたい(Excel2000)

    関数なら少しわかるけど,マクロはさっぱりなので質問します。 ブックが2つあります。 BOOK1はそれぞれシート名に個人名が入っていて, 1行目には科目名,A列には日付が入っています。 入力されているデータはその科目の点数が数値で入っています。 BOOK2は,ファイル名が日付(例:030115.xls)で1シートで構成されており, ある日の試験の成績がA列に個人名,B列以降に科目毎の点数が入っています。 (シート名はsheet1のまま) 次から次へと提出されるBOOK2のデータを BOOK1の個別シートに集めていきたいのですが... 関数でできればそれに越したことはありませんが, マクロででもできれば嬉しいです。 急ぎなので勉強をしている時間がなく,助けて下さい! わからないことがあればなるべく早く補足します。

  • Excel2003 マクロでブックを開かずにコピペ

    Excel2003でC:\にあるブックBを開かずに、 開いているブックAの指定したセルをコピーしたいのですがうまくいきません。 具体的なイメージは 開いているコピー先のブックA:いろは.xls コピー先のシート:Sheet1 コピー元のブックB:らりるれろ.xls コピー元のシート:らりるれろ (ブックBの名前(らりるれろ.xls)とシート名が同じなのはシステム上の仕様です。) ブックBのC6をブックAのC5に、 ブックBのI6をブックAのC6に、 ブックBのK6をブックAのC7に、 ブックBのH6をブックAのC8にコピーしたいと考えています。 宜しくお願いします!

  • Excel 微妙に違う2つのシートのデータをリンクさせる

    ある程度 同じデータのブック1とブック2があり、 ブック1は祭日などデータが無い日も日付があり、行が確保されていますが、 ブック2は祭日などデータが無い日は行が抜いてあります。 A列:日付、B列:曜日 C列:データ1、D列:リンクを入れる 04.11.22 月 56  =[ブック2.xls]シート1!H2 04.11.23 火  04.11.24 水 50  =[ブック2.xls]シート1!H3 04.11.25 木 52  =[ブック2.xls]シート1!H4 04.11.26 金 49  =[ブック2.xls]シート1!H5 04.11.29 月      04.11.30 火 A~C列はブック1、2とも同じデータです。(現在ブック1は1400行、ブック2は1300行くらい) D列にブック2のH列のデータを表記したいのですが、ドラッグなどでは行がずれてしまいます。 関数かマクロなど、何か良い方法を教えて下さい。 下記のことにも対応できれば更に便利なのですが・・。 ブック2のH列は時々J列とか他の列(表範囲内)に移動します。 そしてたまにはブック2のシート1もブック1に移動したりブック2に戻したりもします。

  • エクセルのマクロで悩んでます

    はじめて投稿いたします。 現在、エクセル2000でマクロを組んでいるのですが、何日も悩んでそこから動けないので質問させていただきます。 やりたいことは、 (1)検索フォームの入力テキストに記載した数値を読んで検索ボタンを押すと、 (2)データブック.xls内の完全に一致した数値のセルの行をアクティブにして (3)その行のA列からO列の値をコピーして (4)入力ブック.xlsの入力シートのB4:B18に数値だけ貼り付け したいと考えています。 検索フォームは入力ブック.xls内で作成しています。 今のところ、(3)でA列の値を読んで、(4)でB4セルに貼りつけということはできているのですが、複数になるとできていません。 根気よく、同じプログラムを書くのが良いのでしょうか? かなり面倒なので、もっと簡単にかける方法があれば教えてください。

  • エクセルVBA、マクロについて教えてください。

    https://box.yahoo.co.jp/guest/viewer?sid=box-l-62itttdrrgzrvsaxkvu53tmg3a-1001&uniqid=d4c90186-7ae6-4c7a-8f04-a499509147fc&viewtype=detail サンプルブックを見て頂きたいのですが、シートに分けておりますが、それぞれ別ブックとなります。 エクセルブックAにはシート1-シート10まであります。 ブックAのデータをVBAを使って、ブックBに転記したいのですが、 今はVBAがわからないため、作業列、関数を使って読み取っているのですが、検索をかけると、とても遅いため、関数を消すと早く検索が出来たため、VBAでデータを転記出来たらいいなと思っております。 いくつか条件があるのですが、 ブックAのAQ-ATが作業列としており、 ブックBのG-Uまで関数を入れております。 G4==SUMIFS('[ブックA.xlsx]シート1'!$AD:$AD,'[ブックA.xlsx]シート1'!$AQ:$AQ,$A4,'[ブックA.xlsx]シート1'!$AS:$AS,$F$2,'[ブックA.xlsx]シート1'!$AT:$AT,G$2) H4==SUMIFS('[ブックA.xlsx]シート1'!$AD:$AD,'[ブックA.xlsx]シート1'!$AQ:$AQ,$A5,'[ブックA.xlsx]シート1'!$AS:$AS,$F$2,'[ブックA.xlsx]シート1'!$AT:$AT,H$2) I4==SUMIFS('[ブックA.xlsx]シート1'!$AD:$AD,'[ブックA.xlsx]シート1'!$AQ:$AQ,$A4,'[ブックA.xlsx]シート1'!$AS:$AS,$F$2,'[ブックA.xlsx]シート1'!$AT:$AT,I$2) 同じような関数をG-Uまで入れております。 このような関数を入れております。 E4==VLOOKUP(A4,'[ブックA.xlsx]シート1'!$B:$AC,28,FALSE) この関数をなくすとAdvancedFilterが早くなるので、ここの部分を転記出来たらと考えております。 ブックAとブックBはブックAのB列のコードとブックBのA列のコードが一致すれば、転記すると言った感じです。 決まっている部分は、商品コードは重複しないのと、ブックAのB列は結合されております。 結合セルのため、作業列を使用しておりました。 ブックAの基準をかえずに転記できる方法があればおしえてください。

  • 他ブックのセル参照するのに名前をセルで指定して参照させたい。

    他ブックのセル参照するのに名前をセルで指定して参照させたい。 題名が適当でないかもしれませんが、よろしくお願いします。 オフィス2000もしくは2002です。 200604.xls、200605.xlsという日付を基にした名称の規則的なブックがあります。 ファイル自体はネットワークの共通ドライブにあります。 それぞれsheet1に同様の形式で値のデータ(文字)が入っています。 その中のA1、B1、C1~・・・の値を 別ブック(仮にtest.xls)のA1に2006、A2に5と入力させることによって test.xlsの3行目に200605.xlsのA1、B1、C1~・・・の値を表示させたいです。 ブック名 test.xls    A列  B列  C列 ・・・・・・ 1行 2006 2行  5 3行 200605.xlsのA1、B1、C1~の値を表示させたいです。 4行 フォルダー名\[200605.xls]sheet1'!A1、次B1、次C1、と都度埋め込んでいけば値自体は出るのですが、 ブック名が手軽に変えられなくて困っています。 test.xlsのセルに埋め込んだ ='フォルダー名\[200605.xls]sheet1'!A1の [カッコ内]の文字をA1,A2セルに入れた値で参照させたいのですが、、、。 (A2は5ですが、参照したいのは2006の05というのも少々ミソです) 結果が同じなら手段はそんなには問いません。 よろしくお願いします。

専門家に質問してみよう