0

VBA for Excel でマクロを記述して、リスト内のデータの各行から特定の列の値を調べ、その値が「はい」の場合は、行全体をコピーして同じブックの別のシートに貼り付けます。 . 2 つのシートに「Data」と「Final」という名前を付けましょう。シートを参照したいので、コードを実行するときに開いているシートは関係ありません。ループを使用Doして 1 つのデータ シートの行を循環し、エントリがなくなるまで、if ステートメントで値を確認します。

あるシートから次のシートに切り替える方法について混乱しています。

異なるシートのセルを具体的に参照するにはどうすればよいですか?

これが私が念頭に置いていた疑似コードです:

Do while DataCells(x,1).Value <> " "
    for each DataCells(x,1).Value="NO"
        if DataCells(x,2).Value > DataCells(x,3).Value or _
        DataCells(x,4).Value < DataCells(x,5).Value 
            'Copy and paste/insert row x from Data to Final sheet adding a new 
            'row for each qualifying row
        else
            x=x+1
        end
    else if DataCells(x,1).Value="YES"   
Loop
'copy and paste entire row to a third sheet
'continue this cycle until all rows in the data sheet are examined
4

1 に答える 1

0
Sub FilterAndCopy()

Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

Dim sh As Worksheet, sh2 As Worksheet
Dim lastrow1 As Long
Dim lastcolumn1 As Long



Set sh = ThisWorkbook.Sheets("Data")
Set sh2 = ThisWorkbook.Sheets("Final")

lastrow1 = sh.Cells(Rows.Count, "A").End(xlUp).Row ' Replace "A" With column that has the most Rows
lastcolumn1 = sh.Cells(1, Columns.Count).End(xlToLeft).Column

With sh.Range(.Cells(1, 1), .Cells(lastrow1, lastcolumn1))

'Replace the number in the field section with your Columns number
    .AutoFilter , _
        Field:=1, _
        Criteria1:="yes"

    .Copy sh2.Range("A1")

End With

Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic

End Sub
于 2013-06-28T15:23:55.960 に答える