Что-то вроде ниже, может быть? где «ws» - лист, из которого берутся данные, а «sh» - лист, на который собираются данные. Обратите внимание, что в качестве чисел используются нули.
Sub test()
Dim nc As Long, a, b, ws As Worksheet, sh As Worksheet
Set ws = ThisWorkbook.Sheets(1)
Set sh = ThisWorkbook.Sheets(2)
nc = ws.Cells.Find(What:="*", After:=ws.Cells(1, 1), LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, SearchFormat:=False).Column + 1
a = ws.Range("K1", Range("K" & Rows.Count).End(xlUp)).Value
ReDim b(1 To UBound(a), 1 To 1)
For i = 2 To UBound(a)
If a(i, 1) <> 0 Then b(i, 1) = 1
Next i
Application.ScreenUpdating = False
With ws.Range("A1").Resize(UBound(a), nc)
.Columns(nc).Value = b
On Error Resume Next
.Columns(nc).SpecialCells(xlConstants).EntireRow.Copy
On Error GoTo 0
End With
sh.Range("A" & sh.Range("A" & Rows.Count).End(xlUp).Row + 1).PasteSpecial
Application.ScreenUpdating = True
Application.CutCopyMode = False
End Sub