I have annotated the code with comments which I hope will help you,
The code included an error the variable i was used before it was defined
Sub test()
' This selects column J
Columns("J:J").Select
' initialisation of I which was missing
i = 10
' This searches for the character 1 in the selects (columnj) and it will look in any part of the line
Selection.Find(What:="1", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
' this line pus the row number where the search found the first ocurence of 1 into the variable N
N = ActiveCell.Row
' this copies the value in N into another variable N1, so at this point they both have the same number in them
N1 = N
' This statement will cause an error because i is not defined at this point, what this statement is trying to do is copy the value in
' column B in the same row as the find statement above found into Column K wiht the row given by the variable i ( which you haven't defined so it is empty0
' this is solved by initalising I at the top which I have done ( i set it to 10)
Cells(i, 11).Value = Cells(N, 2).Value
' This increment the row number
i = i + 1
' this does the find again
Selection.FindNext(After:=ActiveCell).Activate
' as above
N = ActiveCell.Row
' this now does a loop and keeps on doing a find until eventually the find gets back to the beginning and finds the first row again
' when this happens N equals N1 which was the first row we found "1" on and so the loop exits exits
Do While N <> N1
' copy as above
Cells(i, 11).Value = Cells(N, 2).Value
' find again
Selection.FindNext(After:=ActiveCell).Activate
N = ActiveCell.Row
' increment the row to copy to
i = i + 1
Loop
End Sub