Yes, it was only an example, because I didn't know how many lines / rows of data you have got. So I created a simple table with only 10 lines of data.

Now I need to know a little bit more about your data.

- Does your data set have a fixed number of entries? Or is it dynamic?
- You need to know how the code works. How deep is your knowledge of VBA and programming?

What I have done is a nested FOR-LOOP which iterates two times from 2 to 99.

That means 98 x 98 = 9604 calculation steps.

The bigger your list, the more calculation steps are needed (obviously)

Let's say you have 9999 entries, that makes max. 9999 x 9999 = 99 980 001 calculations.

VBA takes the name in the first line and compares it to ALL entries until a match is found (max 9999).

Then it takes the name in the second line and also compares it to ALL entries except the one that was already found.

The math behind this would be:

1. line: 1 x 9999

2. line: 1 x 9998

3. line: 1 x 9997

and so on...

That actually makes 9999 + 9998 + 9997 + ... = 49 995 000 calculations

The problem is that you don't know the difference between data set 1 and data set 2.

There may be only a few more entries in data set 2 or there may be a lot more.

That is why I have chosen this coding method

Excel has certain limits:

Excel specifications and limits.

Now, if you have the maximum possible amount of data, that would be:

1. line: 1 x 1,048,576

2. line: 1 x 1,048,575

3. line: 1 x 1,048,574

and so on...

This would sum up to: 1,048,576 x 1,048,575 x 1,048,574 x ... = 549 756 338 176

I think you get the picture.

Now let us just assume the data does not exceed 9999 lines.

The VBA code would then look like this:

VBA Code:

```
Private Sub DataCopy()
Dim i, j As Integer
For i = 2 To 999
For j = 2 To 999
If Sheet2.Cells(j, 2).Value <> "checked" Then
If Sheet1.Cells(i, 1).Value <> "" Then
If Sheet1.Cells(i, 1).Value = Sheet2.Cells(j, 1).Value Then
Sheet2.Cells(j, 2).Value = "checked"
Sheet1.Cells(i, 2).Value = "found"
Sheet1.Cells(i, 3).Value = Sheet2.Cells(j, 3).Value
Sheet1.Cells(i, 4).Value = Sheet2.Cells(j, 4).Value
Exit For
Else
Sheet1.Cells(i, 2).Value = "N/A"
End If
End If
End If
Next j
Next i
End Sub
```

The downside of this code is that it could take like forever to iterate through all these lines and depending on your machine Excel could hang itself.

I am currently thinking of something different to solve the problem, but until that you'll have to deal with it.