[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データを抽出するマクロ』(Cngcng)
VBA初めてのため、
説明不足な点があるかもしれませんが、ご助力頂きたいです。宜しくお願いします。
シートにあるデータ中から、除外データに該当するものとしないものを、それぞれ別のシートに出力することを目的とします。
シート1:除外データ(A列)
C2セル 数式:=COUNTIF(A:A,入力データ!F2)
シート2:入力データ(A〜Z列(出力したい列はADEFGIKMWZの10列))
シート3:出力A
シート4:出力B
以下が自分で考えている途中のマクロになり、
とりあえず除外するものを出力するまでの文になります。
Option Explicit
Sub AdvancedFilter00()
Dim ws1 As Worksheet Set ws1 = Worksheets("除外データ")
Dim ws2 As Worksheet Set ws2 = Worksheets ("入力データ")
Dim ws3 As Worksheet Set ws3 = Worksheets("出力A")
Dim ws4 As Worksheet Set ws4 = Worksheets("出力B")
Dim rngl As Range Set rng1 = ws1.Range("C2")
Dim rng2 As Range Set rng2 = ws2.Range("A:A,D:G,I:I,K:K,M:M,W:W.Z:Z")
ws3.Cells.Clear ws4.Cells.Clear
rng2.AdvancedFilter _ Action := xIFilterCopy, _ CriteriaRange := rng1, _ CopyToRange := ws3.Range("A1"), _ Unique = False
End Sub
このマクロで実行すると、
rng2.AdvancedFilter _
の行から構文エラーとなってしまいます。
どこを直したらよいのでしょうか。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
(白茶) 2022/06/09(木) 09:40
フィルター範囲は、入力データ全範囲
CopyToRangeに、抽出したい列の見出しをコピーしておきます
(マナ) 2022/06/09(木) 09:43
マナ様 初心者質問で申し訳ないのですが、CopyToRangeに見出しをコピーとはどういうことなのでしょうか?
(Cngcng) 2022/06/09(木) 10:13
(マナ) 2022/06/09(木) 12:17
抽出まで一応することができました。
白茶様、マナ様ありがとうございます。
下記に作成したマクロを記載させていただきます。
ありがとうございました。
シート1:除外データ(A列)
C1セル 条件A,C2セル 数式:=COUNTIF(A:A,入力データ!F2)=0 D1セル 条件B,D2セル 数式:=COUNTIF(A:A,入力データ!F2)=0 シート2:入力データ(A〜Z列(出力したい列はADEFGIKMWZの10列)) シート3:出力A(1行目を出力するデータ見出し) シート4:出力B(1行目を出力するデータ見出し)
Option Explicit
Sub AdvancedFilter00()
Dim ws1 As Worksheet Set ws1 = Worksheets("除外データ") Dim ws2 As Worksheet Set ws2 = Worksheets ("入力データ") Dim ws3 As Worksheet Set ws3 = Worksheets("出力A") Dim ws4 As Worksheet Set ws4 = Worksheets("出力B") Dim rngl As Range Set rng1 = ws1.Range("C1:C2") Dim rng2 As Range Set rng2 = ws1.Range("D1:D2")
ws3.Rows("2:" & Rows.Count).Clear ws4.Rows("2:" & Rows.Count).Clear
ws2.Range("A1").CurrentRegion.AdvancedFilter _ Action:=xIFilterCopy, _ CriteriaRange:=rng1, _ CopyToRange:=ws3.Range("A1:J1"), _ Unique:=False
ws2.Range("A1").CurrentRegion.AdvancedFilter _ Action:=xIFilterCopy, _ CriteriaRange:=rng2, _ CopyToRange:=ws4.Range("A1:J1"), _ Unique:=False
End Sub
(Cngcng) 2022/06/09(木) 20:24
> ws3.Rows("2:" & Rows.Count).Clear > ws4.Rows("2:" & Rows.Count).Clear
(マナ) 2022/06/09(木) 20:47
Sub test01() With Worksheets("入力データ").Range("A1").CurrentRegion .AdvancedFilter , Action:=xIFilterCopy, CriteriaRange:=Worksheets("除外データ").Range("C1:C2"), CopyToRange:=Worksheets("出力A").Range("A1:J1"), Unique:=False .AdvancedFilter , Action:=xIFilterCopy, CriteriaRange:=Worksheets("除外データ").Range("D1:D2"), CopyToRange:=Worksheets("出力B").Range("A1:J1"), Unique:=False End With End Sub
上記は極端だとしても、本当に変数に格納する必要があるのか検討されてみてはどうでしょうか?
(変数を多用することによりかえって見づらくなってるような気がします)
(もこな2) 2022/06/10(金) 03:23
>たぶん、この2行は不要だと思います。
もこな2様
初マクロでしたので、とりあえず学んだことを試してみました。
今後は格納の有無も考えて作成していきます。
アドバイスありがとうございます。
(Cngcng) 2022/06/10(金) 10:13
>初マクロでしたので、とりあえず学んだことを試してみました。
>今後は格納の有無も考えて作成していきます。
言ってることと矛盾してしまうかもですが、ご自身が理解できる(理解しやすい)方法が一番です。
是非、いろいろ検討してみてください。
(もこな2) 2022/06/10(金) 12:21
>言ってることと矛盾してしまうかもですが、ご自身が理解できる(理解しやすい)方法が一番です。
>是非、いろいろ検討してみてください。
色々と挑戦して自分のやり方を見つけていきたいと思います。
アドバイスをしていただいた皆様ありがとうございました。
(Cngcng) 2022/06/10(金) 20:36
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.