![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_08.png?5a7ff87)
抽出条件方法のマクロ記述
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) マクロか関数で処理したいのですが、教えて頂けませんか。 8 2022/10/31 15:18
- Excel(エクセル) Excelの関数でこんな処理ができますか 1 2023/02/08 13:46
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) AdvancedFilterについての質問 2 2022/07/02 22:58
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのVlookup関数の制限について
-
文字の色も参照 VLOOKUP
-
VBAで繰り返しコピーしながら下...
-
エクセルの保護で、列の表示や...
-
【条件付き書式】countifsで複...
-
Excel の複数シートの列幅を同...
-
エクセル マクロ 標準モジュー...
-
VLOOKアップ関数の結果の...
-
【VBA】ピボットテーブルを既存...
-
Excelでの並べ替えを全シートま...
-
オートフィルタ使用時にCOUNTIF...
-
Excelで全てのシートに一気に列...
-
【エクセル】1列のデータを交...
-
エクセルの列の限界は255列以上...
-
Excel VBA ピボットテーブルに...
-
エクセルで、チェックボックス...
-
【エクセルで特定の行だけ別シ...
-
【マクロ】あいうえお順のシー...
-
excel 複数のシートの同じ場所...
-
Excelに自動で行の増減をしたい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字の色も参照 VLOOKUP
-
ExcelのVlookup関数の制限について
-
エクセルの保護で、列の表示や...
-
VBAで繰り返しコピーしながら下...
-
Excel の複数シートの列幅を同...
-
エクセルで横並びの複数データ...
-
エクセルの列の限界は255列以上...
-
【条件付き書式】countifsで複...
-
Excelでの並べ替えを全シートま...
-
SUMPRODUCTにて別シートのデー...
-
エクセル マクロ 標準モジュー...
-
VLOOKアップ関数の結果の...
-
エクセルで、チェックボックス...
-
Excel VBA ピボットテーブルに...
-
オートフィルタ使用時にCOUNTIF...
-
スプレッドシートでindexとIMPO...
-
エクセルVBAで、ある文字を含ん...
-
エクセルのブック分割マクロを...
-
【VBA】複数のシートの指定した...
-
Excel複数シートにあるデータを...
おすすめ情報