Dim sheet1_name As String
Dim sheet1_start_pos_row As Integer
Dim sheet1_start_pos_col As Integer
Dim sheet1_copy_col_count As Integer
Dim sheet2_name As String
Dim sheet2_start_pos_row As Integer
Dim sheet2_start_pos_col As Integer
Dim sheet2_copy_col_count As Integer
Dim des_sheet_name As String
sheet1_name = Sheets("Sheet3").Range("B4").Value
sheet1_start_pos_col = Sheets("Sheet3").Range("C4").Value
sheet1_start_pos_row = Sheets("Sheet3").Range("D4").Value
sheet1_copy_col_count = Sheets("Sheet3").Range("E4").Value
sheet2_name = Sheets("Sheet3").Range("B8").Value
sheet2_start_pos_col = Sheets("Sheet3").Range("C8").Value
sheet2_start_pos_row = Sheets("Sheet3").Range("D8").Value
sheet2_copy_col_count = Sheets("Sheet3").Range("E8").Value
des_sheet_name = Sheets("Sheet3").Range("B12").Value
'clear
Sheets(des_sheet_name).Select
Cells.Select
Selection.ClearContents
Dim current_row As Integer
Dim sheet1 As Worksheet
Dim sheet2 As Worksheet
Dim sheet3 As Worksheet
Dim temp_result As Integer
Dim sheet2_loop As Integer
Dim first As Boolean
Dim des_current_row As Integer
sheet2_loop = sheet2_start_pos_row
current_row = sheet1_start_pos_row
Set sheet1 = Worksheets(sheet1_name)
Set sheet2 = Worksheets(sheet2_name)
Set sheet3 = Worksheets(des_sheet_name)
' Sheet1 copy title row
Sheets(sheet1_name).Select
Range(Cells(sheet1_start_pos_row - 1, sheet1_start_pos_col), _
Cells(sheet1_start_pos_row - 1, CInt(sheet1_start_pos_col) + CInt(sheet1_copy_col_count))).Select
Selection.Copy
Sheets(des_sheet_name).Select
sheet3.Cells(current_row - 1, 1).Select
ActiveSheet.Paste
Sheets(sheet2_name).Select
Range(Cells(sheet2_start_pos_row - 1, sheet2_start_pos_col), _
Cells(sheet2_start_pos_row - 1, CInt(sheet2_start_pos_col) + CInt(sheet2_copy_col_count))).Select
Selection.Copy
Sheets(des_sheet_name).Select
sheet3.Cells(current_row - 1, 2 + CInt(sheet1_copy_col_count)).Select
ActiveSheet.Paste
des_current_row = current_row
While Sheets(sheet1_name).Cells(current_row, sheet1_start_pos_col).Value <> ""
' Sheet1 copy key row
sheet1.Select
sheet1.Range(Cells(current_row, sheet1_start_pos_col), _
Cells(current_row, CInt(sheet1_start_pos_col) + CInt(sheet1_copy_col_count))).Select
Selection.Copy
sheet3.Select
sheet3.Cells(des_current_row, 1).Select
ActiveSheet.Paste
first = True
sheet2_loop = sheet2_start_pos_row
'sheet2 loop, ->copy
Do While sheet2_loop < 10000
If sheet2.Cells(sheet2_loop, sheet2_start_pos_col) = "" Then
Exit Do
ElseIf sheet2.Cells(sheet2_loop, sheet2_start_pos_col) = Sheets(sheet1_name).Cells(current_row, sheet1_start_pos_col).Value Then
If first Then
first = False
Else
' Sheet1 copy key row
des_current_row = des_current_row + 1
sheet1.Select
sheet1.Range(Cells(current_row, sheet1_start_pos_col), _
Cells(current_row, CInt(sheet1_start_pos_col) + CInt(sheet1_copy_col_count))).Select
Selection.Copy
sheet3.Select
sheet3.Cells(des_current_row, 1).Select
ActiveSheet.Paste
End If
sheet2.Select
sheet2.Range(Cells(sheet2_loop, sheet2_start_pos_col), _
Cells(sheet2_loop, CInt(sheet2_start_pos_col) + CInt(sheet2_copy_col_count))).Select
Selection.Copy
sheet3.Select
sheet3.Cells(des_current_row, 2 + CInt(sheet1_copy_col_count)).Select
ActiveSheet.Paste
End If
sheet2_loop = sheet2_loop + 1
Loop
des_current_row = des_current_row + 1
current_row = current_row + 1
Wend