元のワークシートを変更せずに特定の条件に一致するデータをあるワークシートから別のワークシートにコピーします。元のワークシートを変更せずに、あるワークシートから別のワークシートにデータをコピーします。
ワークシート「見通し」から最後の行を探して、必要な条件を選択して、他のワークシート「結果」にコピーしますが、どちらのワークシートも同じに見えます。
フィルタ基準を満たさない行は、元のワークシート「見通し」から削除されます。
元のワークシートを変更しないでください。また、特定の列をキャプチャしているので、「結果」ワークシートに必要のない列が隠れてしまいます。
Sub ProspectList()
Dim r As Range
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Range("A1").AutoFilter
LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
LastCol = ActiveSheet.Cells(1, Columns.Count).End(xlUp).Column
With Sheets("Prospect List").Range([A2], [A2].SpecialCells(xlCellTypeLastCell))
ws.Range("A1").AutoFilter field:=13, Criteria1:="Pipeline"
[B:B].EntireColumn.Hidden = True
.Copy
[C:C].EntireColumn.Hidden = True
.Copy
[E:E].EntireColumn.Hidden = True
.Copy
[H:H].EntireColumn.Hidden = True
.Copy
[I:I].EntireColumn.Hidden = True
.Copy
[K:K].EntireColumn.Hidden = True
.Copy
[L:L].EntireColumn.Hidden = True
.Copy
[B:B].EntireColumn.Hidden = False
[C:C].EntireColumn.Hidden = False
[E:E].EntireColumn.Hidden = False
[H:H].EntireColumn.Hidden = False
[I:I].EntireColumn.Hidden = False
[K:K].EntireColumn.Hidden = False
[L:L].EntireColumn.Hidden = False
End With
With Sheets("Results")
If .Cells(Sheets(1).Rows.Count, 1).End(xlUp) = "" Then 'it's a clean sheet
.Cells(Sheets(1).Rows.Count, 1).End(xlUp).PasteSpecial Paste:=xlPasteValues
Else
.Cells(Sheets(1).Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
End If
End With
Application.CutCopyMode = False
End Sub
が問題である何、それはエラーを投げている?アクティブ化期待どおりに働いていない? – CallumDA
これは、意図したとおりに動作しないことはほとんどありません: 'ActiveSheet.Cells(1、Columns.Count).End(xlUp).Column'。私はあなたが 'xlToLeft'を使うべきだと思います。 – CallumDA
'Prospects'シートで範囲を指定します。上ですでに指摘したLastColumnを指定する際にエラーがありますが、その変数は使用しません。次に、そのシートの列を非表示にします。これらの列を '結果'シートに表示しないようにするには、なぜ「見通し」で非表示にするのですか?コードスニペットには 'Copy'コマンドがありません。したがって、あなたが「結果」シートに貼り付けるものは明らかではありません。しかし、後者の特定の列を省略する場合は、元のシートのデータではなく、「貼り付け」の後に隠すか削除する必要があります。 – Variatus