抽出条件方法のマクロ記述
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 A870000
AA 0H120 0H120 A057000
AA 0S0100 0S010 A887000
抽出条件方法
シート名WORKのデータの中のC列と、シート名マスターのB列の倉庫を参照して
非表示項目のYが入っていない、倉庫と同じデータをシート名WORKのデータを抽出したい
場合のマクロ記述の方法を教えてください。よろしくお願いします。
(抽出表示方法)
AA 0H120 0H120 A057000
AA 0S0100 0S010 A887000
No.1ベストアンサー
- 回答日時:
質問の表がよく分からず、以下のようにしています。
2つのシートとも1行目は項目名、
ファイル名B.xlsシート名WORKの C列(倉庫) と
ファイル名a.xlsシート名マスター B列(倉庫) を照合して、
2つの項目内容が完全に一致した場合、
マスターE列(非表示項目)に『Y』(半角Y)が入っていなければ、
シート名WORKのA列からF列を抽出して、シート名PICKに書いています。
どう見ても私には6列分に見えたので6列取り出しています。
(『PICK』は勝手につけたシート名です。状況に合うように変更して下さい)
Book名やシート名の『 "a.xls"、"マスター"、"b.xls"、"WORK"、"PICK" 』については、状況に合うよう変更して下さい。
ブックやシートの定義部分が長くなってしまいました、実際プログラムらしいのはFindくらいでしょうか。
この例でいえば、Book"b.xls"に標準モジュールを挿入し、下記コードをコピーして貼り付けます。ご参考に。(当方、Excel2000です)
'抽出するシートの標準モジュールに貼り付け
Sub 抽出()
Dim bkMS As Workbook 'マスターのBookを定義
Dim wsMS As Worksheet 'マスターのシートを定義
Set bkMS = Workbooks("a.xls")
Set wsMS = bkMS.Worksheets("マスター")
Dim rgFind As Range '検索範囲を定義
Set rgFind = wsMS.Range("B2:B" & wsMS.Range("B65536").End(xlUp).Row)
'ワーク Bookとシートの定義
Dim bkWK As Workbook 'データのBookを定義
Dim wsWK As Worksheet 'データのシートを定義
Dim wsPK As Worksheet 'データの抽出結果の出力シートを定義
Set bkWK = Workbooks("b.xls")
Set wsWK = bkWK.Worksheets("WORK")
Set wsPK = bkWK.Worksheets("PICK")
Dim rgLook As Range '検索で見つかったセル(マスタのB列)
Dim rwWK As Long 'データ行カウンタ
Dim rwMS As Long 'マスタ行カウンタ
Dim rwPK As Long '抽出行カウンタ
Dim KMK As Integer '出力項目カウンタ
Const KMKnum = 6 '出力項目数
rwWK = 2: rwMS = 2: rwPK = 0
'出力シートをクリアする
wsPK.Cells.ClearContents
'データシートのC列がなくなるまで続ける
While wsWK.Cells(rwWK, 3) <> ""
'マスタを調べる
Set rgLook = rgFind.Find(What:=wsWK.Cells(rwWK, 3).Text, LookAt:=xlWhole)
'見つかったら
If Not rgLook Is Nothing Then
'『非表示項目』が『Y』でなかったら抽出
If rgLook.Offset(0, 3) <> "Y" Then
rwPK = rwPK + 1
For KMK = 1 To KMKnum
wsPK.Cells(rwPK, KMK) = wsWK.Cells(rwWK, KMK)
Next
End If
End If
rwWK = rwWK + 1
Wend
wsPK.Select
MsgBox "抽出が終了しました。"
End Sub
この回答への補足
ありがとうございました
実際やってみたのですが少し教えてください。
シート名workは列がA列からR列の18列あります。
ファイル名a.xlsシート名マスター B列(倉庫) は3行目から
データが入ってます。
マスターE列(非表示項目)に『Y』(半角Y)が入っている。
上記を踏まえて 下記の所を修正して動かしました。
Const KMKnum = 18 '出力項目数
Set rgFind = wsMS.Range("B3:B" & wsMS.Range("B65536").End(xlUp).Row)
PICKのシートに抽出されてきたのですが、マスターE列(非表示項目)に『Y』(半角Y)が入って
いる倉庫も出てきました。
後どこを修正すれば良いのでしょうか教えてください。
後 rwWK = 2: rwMS = 2: rwPK = 0 ここの意味がわかりません。
PICKのシートに抽出する行は2行目から出したいのですが。1行目はworkシートの項目名を入れたいのですが
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字の色も参照 VLOOKUP
-
エクセルの保護で、列の表示や...
-
Excel の複数シートの列幅を同...
-
ExcelのVlookup関数の制限について
-
VBAで繰り返しコピーしながら下...
-
エクセルVBAで、ある文字を含ん...
-
Excelでの並べ替えを全シートま...
-
エクセル複数シートのデータを...
-
エクセルの列の限界は255列以上...
-
エクセル マクロ 標準モジュー...
-
SUMPRODUCTにて別シートのデー...
-
VLOOKアップ関数の結果の...
-
エクセルで、チェックボックス...
-
EXCEL2010 VBAで空白行以外を...
-
エクセルで横並びの複数データ...
-
エクセルの複数シートにあるデ...
-
Excel 2段組み
-
エクセルの行が広がらない
-
【エクセル】1列のデータを交...
-
【条件付き書式】countifsで複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelのVlookup関数の制限について
-
エクセルの保護で、列の表示や...
-
文字の色も参照 VLOOKUP
-
Excel の複数シートの列幅を同...
-
VBAで繰り返しコピーしながら下...
-
【条件付き書式】countifsで複...
-
エクセル マクロ 標準モジュー...
-
エクセルの列の限界は255列以上...
-
Excelでの並べ替えを全シートま...
-
エクセルで、チェックボックス...
-
エクセルマクロを教えてほしい...
-
SUMPRODUCTにて別シートのデー...
-
Excel VBA ピボットテーブルに...
-
エクセルのブック分割マクロを...
-
【VBA】複数のシートの指定した...
-
excel 複数のシートの同じ場所...
-
Excelに自動で行の増減をしたい...
-
スプレッドシートでindexとIMPO...
-
エクセルで横並びの複数データ...
-
エクセル複数シートのデータを...
おすすめ情報