Полагаю, вы хотите перебрать все использованные строки во всех ваших листах
и затем заполните следующую пустую строку в вашем «сумме».
Чтобы найти последнюю использованную строку в столбце "T",
Вы можете использовать .Cells(.Rows.Count, "T").End(xlUp).Row
Option Explicit
Sub All_N()
Dim wsSum As Worksheet
Dim ws As Worksheet
Dim a As Long, b As Long
Set wsSum = ActiveWorkbook.Sheets("sum")
With wsSum
.Range("A5:T" & .Rows.Count).ClearContents
b = 5
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> "sum" Then
For a = 2 To ws.Cells(ws.Rows.Count, "T").End(xlUp).Row
If ws.Cells(a, "T") = "N" Then
.Cells(b, 1) = ws.Cells(a, 1)
.Cells(b, 2) = ws.Cells(a, 2)
.Cells(b, 18) = ws.Cells(a, 18)
.Cells(b, 19) = ws.Cells(a, 19)
.Cells(b, 20) = ws.Cells(a, 20)
b = b + 1
End If
Next a
End If
Next
End With
End Sub
Нет необходимости Select
или Activate
, см. здесь .