Requirement:
The user has a workbook with sheets transaction and check.
The user need to copy column of H of transaction sheet to M of check sheet and column I transaction sheet to K check sheet based on header 5 of transaction sheet.
All data column are dynamic .
The format is always the same.
The issue is that are blank cells in both column to be copied.
Solution:
Try the attached, click the button on "TRANSACTION MERGER" sheet to run the macros
In Worksheet Object Module for "TRANSACTION MERGER" sheet
Sub btnCopy_Click()
    CopyColumns
End Sub
and in a standard module
Sub CopyColumns()
    Dim x, y, z, IDs, i As Long, ii As Long
    
    x = Sheets("TRANSACTION MERGER").Cells(1).CurrentRegion
    IDs = Sheets("CHECK").Cells(1).CurrentRegion.Columns(5)
    ReDim y(1 To UBound(x, 1) - 1, 1 To 1): ReDim z(1 To UBound(x, 1) - 1, 1 To 1)
    
    For i = 2 To UBound(x, 1)
        ii = Application.Match(x(i, 5), IDs, 0)
        y(i - 1, 1) = x(i, 8): z(i - 1, 1) = x(i, 9)
    Next
    With Sheets("CHECK")
        .[m2].Resize(UBound(y, 1)) = y
        .[i2].Resize(UBound(z, 1)) = z
    End With
    MsgBox "Columns successfully copied", , "Completed"
    
End Sub
Obtained from the OzGrid Help Forum.
Solution provided by KjBox.
See also: Index to Excel VBA Code and Index to Excel Freebies and Lesson 1 - Excel Fundamentals and Index to how to… providing a range of solutions and Index to new resources and reference sheets
See also:
| How to use VBA code to generate report based on criteria | 
| How to use Excel VBA code to hide based on criteria | 
| How to protect VBA source code from view | 
| How to use VBA to turn columns into rows | 
| How to turn one operation into a loop in VBA | 
Click here to visit our Free 24/7 Excel/VBA Help Forum where there are thousands of posts you can get information from, or you can join the Forum and post your own questions.