2

4列と未定の行で構成されるリストがあります。私は、列Bにジャックポットという単語が含まれている列BとCのみを収集し、それらを新しいシートにコピーしようとしています。並べ替えるリストを取得しましたが、UsedRangeを使用して、すべての行をコピーします。BとCだけをコピーするにはどうすればよいですか?

Range("A1").Activate
ActiveCell.EntireRow.Insert
Rows("1:1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:="Jackpot"

ActiveSheet.UsedRange.Select

Col A | Col B |      Col C | Col D
1       Stuff          1       1
1       MoreStuff      2       1
1       Jackpot        3       1
1       Jackpot        4       1
1       SomeStuff      5       1
1       Jackpot        6       1
4

3 に答える 3

3

最初のカットですが、いくつか質問があります。

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Results")
ws.Rows(1).AutoFilter Field:=2, Criteria1:="Jackpot"
ws.Range("B2:C2", Range("B2:C2").End(xlDown)).Copy
ThisWorkbook.Worksheets("DestinationSheet").Range("A1").PasteSpecial

1) これは毎回同じシートで発生しますか (例Worksheets("Results"))?
2) ヘッダー行を含めますか? その場合は、両方のインスタンスで.Copy行をに変更します。B1:C1現在の実装は、ヘッダーなしでフィルタリングされたコンテンツを取得するだけです。

明らかに、実装に合わせてワークシート名を変更する必要があります。

于 2012-12-05T03:11:26.900 に答える
3

フィルター処理した後、範囲 B:C を選択して、目的の場所にコピーできます。例を示すためにコードを更新しました。また、常に VBA で何かを「選択」する必要はありません (そうしなければならないことは非常にまれです)。

お役に立てれば

Option Explicit

Sub doIt()
    Dim sh As Worksheet
    Set sh = ActiveSheet

    sh.Range("A1:D1").AutoFilter Field:=2, Criteria1:="Jackpot"

    ' make sure results were returned from the filter
    If (sh.Cells(sh.Rows.Count, 1).End(xlUp).Address <> "$A$1") Then

        Dim newSh As Worksheet
        Set newSh = Sheets.Add

        sh.Range("B:C").Copy newSh.Range("A1")

    End If
End Sub
于 2012-12-05T03:04:33.027 に答える
1

これは、オートフィルターに依存しない簡単な方法です。どちらが速いかはわかりませんが、あなたの問題に対する別の解決策を提供したかったのです。

Sub CopyJackpot()
Application.ScreenUpdating = False
Dim lastRow As Long, i As Long, j As Long

j = 1
lastRow = Range("B" & Rows.Count).End(xlUp).Row

For i = 1 To lastRow
    If InStr(Range("B" & i).Value, "Jackpot") Then
       Rows(i).Copy Destination:=Sheets(2).Rows(j)
       j = j + 1
    End If
Next

Application.ScreenUpdating = True
MsgBox j - 1 & " row(s) copied to Sheet2."

End Sub
于 2012-12-05T07:22:03.887 に答える