セルに0より大きい値があり、その行をシート2にコピーすると、ワークブック内のセルをどのように見えるかを調べようとしていました。次に列内の次のセルを調べます。Excelセルが空白でない場合、シート2に行をコピーします。
誰でも知っていますか?
I10> 0の場合、I10> 0の場合はA10からデータをコピーします。それ以外の場合はI11を見て繰り返し、次にI12 ...は750+のすべての行がコピーされるかどうかです。
ありがとうございました。
セルに0より大きい値があり、その行をシート2にコピーすると、ワークブック内のセルをどのように見えるかを調べようとしていました。次に列内の次のセルを調べます。Excelセルが空白でない場合、シート2に行をコピーします。
誰でも知っていますか?
I10> 0の場合、I10> 0の場合はA10からデータをコピーします。それ以外の場合はI11を見て繰り返し、次にI12 ...は750+のすべての行がコピーされるかどうかです。
ありがとうございました。
Option Explicit
Sub Macro1()
Dim cell As Range
Dim lastRow As Long, i As Long
lastRow = Range("I" & Rows.Count).End(xlUp).Row
i = 10 ' change this to the wanted starting row in sheet2
For Each cell In Sheets(1).Range("I10:I" & lastRow)
If cell.Value > 0 Then
cell.EntireRow.Copy Sheets(2).Cells(i, 1)
i = i + 1
End If
Next
End Sub
あなたがRange
オブジェクトのAutoFilter()
メソッドを使用して細胞をループを回避することができます
Sub Main()
With Worksheets("OriginWs") '<--| change "OriginWs" to your actual data worksheet name
With .Range("I9", .Cells(.Rows.Count, "I").End(xlUp))
If IsEmpty(.Cells(1, 1)) Then .Cells(1, 1) = "dummyheader"
.AutoFilter Field:=1, Criteria1:=">0"
If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then .Offset(1, -8).Resize(.Rows.Count - 1, 11).SpecialCells(xlCellTypeVisible).Copy Worksheets("TargetWs").Cells(1, 1) '<--| change "TargetWs" to your actual destination worksheet name
If .Cells(1, 1).Value = "dummyheader" Then .Cells(1, 1).ClearContents
End With
.AutoFilterMode = False
End With
End Sub
ところで、文:
If IsEmpty(.Cells(1, 1)) Then .Cells(1, 1) = "dummyheader"
と
If .Cells(1, 1).Value = "dummyheader" Then .Cells(1, 1).ClearContents
が可能アボあなたのセルI9に何らかのテキストがある場合は片側
@TimothyWinkler、それを乗り越えましたか? – user3598756
何を試しましたか?この要件はとても簡単です。オンラインのExcel VBAチュートリアルでは、知っておく必要があるすべてをカバーします。このサイトはプログラマーが互いに助け合うためのサイトです。あなたは「750+行」と言います。列の最後の行を見つける方法を調べてください。あなたはI10、I11、I12、... Innnを見たいと思います。ここで、nnnは最後の行番号です。 Forループが何であるか知っていますか?変数を使ってセルにアクセスする方法を知っていますか?このチュートリアルでは、このすべてを教えてくれるでしょう。 1時間か2つの研究では、この問題と次の問題を解決することができます。 –