エクセルVBA初心者です。
どうかご指導お願いします。
シート1に入力されたデータベースの
j列から特定のコードで絞り込んで新しいシートに貼り付け作業を22回(特定のコードが22個あるため)行う方法を教えて下さい。
下記コードは「特定のコードで絞り込んで、シート2に貼り付け」だけをしたものですが、このコードを応用して作りたいです。
ご指導お願いします。
Sub test01()
With sheets("sheet1").Range("A1")
.AutoFilter Field:10, Criterial:"1126"
.CurrentRegion.Copy Sheets("sheet2").Range("A1")
可能ならば、シートではなく、別ブックに抽出されると尚嬉しいです。
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
こんにちは。
ご希望条件を実装するためには、特定のコードを配列変数に格納する必要があります。
しかしながら、配列変数に格納した場合、Autofilterを繰り返し行う必要はなくなります。
それを踏まえて、以下のようなコードを書いてみました。
Sub sample()
Application.DisplayAlerts = False
Dim s1 As Worksheet, s2 As Worksheet, nbook As Workbook
Set s1 = ThisWorkbook.Sheets("sheet1")
Set s2 = ThisWorkbook.Sheets.Add(After:=Sheets(Sheets.Count))
s2.Name = "抽出シート"
Set nbook = Workbooks.Add
Dim list As Range, cls As Range
Set list = Range("「特定のコード」をリスト化している範囲")
ReDim codeary(1 To 1) As String
For Each cls In list
If codeary(UBound(codeary)) = "" Then
codeary(UBound(codeary)) = CStr(cls.Value)
Else
ReDim Preserve codeary(1 To UBound(codeary) + 1)
codeary(UBound(codeary)) = CStr(cls.Value)
End If
Next cls
With s1.Range("A1")
.AutoFilter Field:=10, Criteria1:=Array(codeary), Operator:=xlFilterValues
.CurrentRegion.Copy s2.Range("A1")
End With
s2.Copy before:=nbook.Sheets(1)
nbook.Sheets(Sheets.Count).Delete
nbook.SaveAs Filename:=ThisWorkbook.Path & "\抽出.xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
nbook.Close savechanges:=False
s1.Range("A1").AutoFilter
s2.Delete
Application.DisplayAlerts = True
End Sub
もし「特定のコード」をリスト化していないのであれば、
1. ReDim codeary(1 To 1) As String → ReDim codeary(1 To 22) As String
2. For Each ~ Nextを削除し、
codeary(1) = コード1個目
codeary(2) = コード2個目
・・・・・・
codeary(22) = コード22個目
としてください。
なお、新規ブックとしての保存は同じフォルダ内に「抽出.xlsx」としました。
変えたい場合は、「nbook.SaveAs Filename:=」以下を適宜変更してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Visual Basic(VBA) 別ブックからシートのコピー 3 2022/04/01 20:07
- Excel(エクセル) vbaで列幅について 1 2022/11/15 08:31
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
access2003 クエリSQL文に...
-
1日に1人がこなせるプログラム...
-
Exel VBA 別ブックから該当デ...
-
VBAでファイルオープン後にコー...
-
ExcelのVBAコードについて教え...
-
JANコードとPOSコードは同じ?
-
sinカーブの表示のさせ方
-
ExcelのVBAコードについて教え...
-
コンボボックス3つを連動させたい
-
pythonにてseleniumを使うも、...
-
エクセル VBA 同じ内容のセル...
-
chatgptでつくってもらったコー...
-
コンソールアプリケーションの...
-
CheckBoxのコントロール配列に...
-
エクセルに見えない文字(JISX0...
-
MessageBoxで表示される文字列...
-
WSH動作しない!!(WScript.Sle...
-
先ほど、回答者様によって教え...
-
◾️Excel VBA 統合について Cons...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
pythonにてseleniumを使うも、...
-
ExcelのVBAコードについて教え...
-
access2003 クエリSQL文に...
-
1日に1人がこなせるプログラム...
-
ExcelのVBAコードについて教え...
-
Exel VBA 別ブックから該当デ...
-
chatgptでつくってもらったコー...
-
PreviewKeyDownイベントが2回...
-
JavaScriptの定数名が取り消し...
-
1、Rstudioで回帰直線を求める...
-
JANコードとPOSコードは同じ?
-
JavaScript|特定URLだった時、...
-
ACCESSユニオンクエリでORDER B...
-
特定行の背景色を変えたいのですが
-
変数名「cur」について
-
エクセルに見えない文字(JISX0...
-
COBOLの文法
-
Gitのクローンについて
-
Outlook VBAについて
おすすめ情報