Q:

Excel VBA - Compare two Columns in two different sheets then copy/paste - speed - It takes over an hour

Here an absolute beginner at any form of coding, this is the first time ever I try to use VBA. 
I have managed after a week and a half of searching and testing and learning to reach the below posted code and I have hit a WALL (and I'm not even done yet!) 
What I am trying to achieve:
Compare the data in sheet1 with the data in sheet2 found in Columns K respectively A (there are ca. 55.000 rows in K and 2500 in A) the data might repeat itself as these are product codes and it's ok as at the end of this I want to be able to see which ones have expired. 
so .. If K = A then it has to copy adjacent values found in Sheet2 - columns O, P & Q and Paste them in Sheet2 - Columns O, P & Q and if no match is found then right not found. In the Example below I have only tried to copy Q, it would probably take forever if I tried adding O & P.
(Note: I have found this code in one of the forms here and used it after trying different other ways with select/ Copy/ Paste etc. but none have worked)
Later I would like to try adding another column in Sheet1 and based on the Date which will be copied to Sheet1 and into column P populate it with Expired or Soon to be expired depending on the case, but this is an entire different story and I haven't even begun thinking how to do it. 
The problem is that my current code takes over an hour and it's still not finished yet while I am writing this!!! And I do not understand where have I gone wrong ....   
Dim lastRow1 As Long
Dim lastRow2 As Long
Dim tempVal As String

lastRow1 = Sheets("Sheet1").Range("K" & Rows.Count).End(xlUp).Row
lastRow2 = Sheets("Sheet2").Range("A" & Rows.Count).Row

For sRow = 2 To lastRow1
        tempVal = Sheets("MatCode").Cells(sRow, "A").Text
For tRow = 2 To lastRow2
            If Sheets("Sheet1").Cells(tRow, "K") = tempVal Then
            Sheets("Sheet1").Cells(tRow, "Q") = Sheets("Sheet2").Cells(sRow, "Q")
            End If

    Next tRow
    Next sRow

Dim match As Boolean
'now if no match was found, then put NO MATCH in cell
    For lRow = 2 To lastRow2
        match = False
        tempVal = Sheets("Sheet1").Cells(lRow, "K").Text

For sRow = 2 To lastRow1
            If Sheets("Sheet2").Cells(sRow, "A") = tempVal Then
                match = True
            End If
        Next sRow
If match = False Then
            Sheets("Sheet1").Cells(lRow, "Q") = "NO MATCH"
        End If
    Next lRow
End Sub

I have also used: 
With Application
    .AskToUpdateLinks = False
    .ScreenUpdating = False
    .DisplayAlerts = False
    .EnableEvents = False
End With

To make sure nothing stands in the way. 
Please Help! 

A:

This will loop through rows to match column A on Sheet1 with column K on sheet2.  On a non-match "No Match" will be put in Sheet1 column Q.
On a match Sheet2 columns O,P and Q will be copied to Sheet1 columns O,P and Q.
This took about 10 seconds to run for over 12k in column A and over 2500 in column K. 
Sub match_columns()
Dim I, total, fRow As Integer
Dim found As Range

total = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row

For I = 1 To total
    answer1 = Worksheets(1).Range("A" & I).Value
 Set found = Sheets(2).Columns("K:K").Find(what:=answer1) 'finds a match
If found Is Nothing Then   
    Worksheets(1).Range("Q" & I).Value = "NO MATCH"
Else
    fRow = Sheets(2).Columns("K:K").Find(what:=answer1).Row
    Worksheets(1).Range("O" & I).Value = Worksheets(2).Range("O" & fRow).Value
    Worksheets(1).Range("P" & I).Value = Worksheets(2).Range("P" & fRow).Value
    Worksheets(1).Range("Q" & I).Value = Worksheets(2).Range("Q" & fRow).Value
 End If
Next I

End Sub

