Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7016 / 13644 ツリー ←次へ | 前へ→

【41722】オートフィルタで抽出したデータ以外を削除 VBA二日目 06/8/21(月) 15:05 質問[未読]
【41727】Re:オートフィルタで抽出したデータ以外を... Jaka 06/8/21(月) 16:07 発言[未読]
【41729】Re:オートフィルタで抽出したデータ以外を... VBA二日目 06/8/21(月) 16:20 お礼[未読]
【41730】Re:オートフィルタで抽出したデータ以外を... Kein 06/8/21(月) 16:32 発言[未読]
【41732】Re:オートフィルタで抽出したデータ以外を... VBA二日目 06/8/21(月) 16:41 お礼[未読]
【41733】Re:オートフィルタで抽出したデータ以外を... Kein 06/8/21(月) 16:52 発言[未読]
【41734】Re:オートフィルタで抽出したデータ以外を... VBA二日目 06/8/21(月) 17:01 お礼[未読]

【41722】オートフィルタで抽出したデータ以外を削...
質問  VBA二日目  - 06/8/21(月) 15:05 -

引用なし
パスワード
   オートフィルタで抽出したデータを別シートにコピーする方法は過去ログから見つけることが出来たのですが、抽出した以外のデータを削除する方法がわかりません。

下記がコピーする方法ですが、これをどう直せばいいのかご教授いただけないでしょうか?よろしくお願いいたします。

前略
Set mySH1 = Worksheets("テスト")
Set myR = mySH1.Range("A1").CurrentRegion
myR.Columns(1).AdvancedFilter xlFilterCopy, copytorange:=mySH1.Range("Z1"), unique:=True
myVal = mySH1.Range("Z2", mySH1.Range("Z65536").End(xlUp)).Value

For i = 1 To UBound(myVal, 1)

Set mySH = Worksheets.Add(After:=Sheets(Sheets.Count))
mySH.Name = myVal(i, 1)

With myR
.AutoFilter field:=1, Criteria1:=myVal(i, 1)
.Copy mySH.Range("A65536").End(xlUp)
.AutoFilter
End With

Next i

【41727】Re:オートフィルタで抽出したデータ以外...
発言  Jaka  - 06/8/21(月) 16:07 -

引用なし
パスワード
   え〜と、簡単ですが、
逆に考えて抽出したくないデータをオートフィルタで抽出して、それを削除すればいいです。

【41729】Re:オートフィルタで抽出したデータ以外...
お礼  VBA二日目  - 06/8/21(月) 16:20 -

引用なし
パスワード
   ▼Jaka さん:
>え〜と、簡単ですが、
>逆に考えて抽出したくないデータをオートフィルタで抽出して、それを削除すればいいです。

ありがとうございます!
色々検索したのですが、検索ワードもうまく入れられない状態で困っておりました。無事、目当ての処理を書き込めました。
早速のレス感謝いたします。

【41730】Re:オートフィルタで抽出したデータ以外...
発言  Kein  - 06/8/21(月) 16:32 -

引用なし
パスワード
   ナンかあっさり解決しちゃったみたいですが、UPされたコードの内容は
「A列に入力されたデータ毎に個別のシートを作り、そこにオートフィルター
で抽出した当該データの全てを転記していく」というもののようですから、
フィルターをループ処理している最中に何らかのデータを削除する、のは
適切でないと思います。
もし削除するなら、データを全て転記した後に一括してクリアすれば良い、
のではないでしょーか ?

【41732】Re:オートフィルタで抽出したデータ以外...
お礼  VBA二日目  - 06/8/21(月) 16:41 -

引用なし
パスワード
   Kein さん
レスありがとうございます。

実は転記の必要はなく、オートフィルタで抽出したもの以外は削除してしまいたいのです(元ファイルのヘッダー・フッターなどそのまま使いたいので)。

非表示データを削除することは出来ました。
これを残る2シート(同一ファイル内)に繰り返し処理の記述方法でまたつまづいてしまいました。

初心者なので、時間はかかると思いますが、もう少し調べて何とか作ってみます。ありがとうございました。

【41733】Re:オートフィルタで抽出したデータ以外...
発言  Kein  - 06/8/21(月) 16:52 -

引用なし
パスワード
   >残る2シート(同一ファイル内)に繰り返し処理
最近もどこかで回答してますが、例えば3つのシートを特定して
ループ処理するなら

Dim WS As Worksheet

For Each WS In Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
  'WSを参照するコード
Next

などのように書きます。

【41734】Re:オートフィルタで抽出したデータ以外...
お礼  VBA二日目  - 06/8/21(月) 17:01 -

引用なし
パスワード
   Kein さん

何度もありがとうございます!お陰さまで解決しました。
今日、参考書も買ってきて、もう少し簡単な事例から入ってみようと思います。
今後ともよろしくお願いいたします。

7016 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free