Macro solution for this post:
https://excelfox.com/forum/showthrea...ther-workbooks
Code:' https://excelfox.com/forum/showthread.php/2569-Copy-row-from-one-workbook-to-another-workbook-based-on-conditions-in-two-other-workbooks ' Copy row from one workbook to another workbook based on conditions in two other workbooks Sub CopyRowFromWb4ToWb3basedOnConditionsInWb1AndWb2() Rem 1 worksheets range info Dim Wb1 As Workbook, Wb2 As Workbook, Wb3 As Workbook, Wb4 As Workbook Set Wb1 = Workbooks("1.xls") Set Wb2 = Workbooks("ap.xls") Set Wb3 = Workbooks("BasketOrder.xlsx") Set Wb4 = Workbooks("OrderFormat.xlsx") Dim Ws1 As Worksheet, Ws2 As Worksheet, Ws3 As Worksheet, Ws4 As Worksheet Set Ws1 = Wb1.Worksheets.Item(1) Set Ws2 = Wb2.Worksheets.Item(1) Set Ws3 = Wb3.Worksheets.Item(1) Set Ws4 = Wb4.Worksheets.Item(1) Dim Lr1 As Long, Lr2 As Long, Lr3 As Long ', Lr4 As Long Let Lr1 = Ws1.Range("A" & Ws1.Rows.Count & "").End(xlUp).Row Let Lr2 = Ws2.Range("D" & Ws2.Rows.Count & "").End(xlUp).Row Dim Rng1 As Range, Rng2 As Range ', Rng3 As Range, Rng4 As Range Set Rng1 = Ws1.Range("A1:I" & Lr1 & "") Set Rng2 = Ws2.Range("A1:Z" & Lr2 & "") '1b) data ranges for conditions Dim arr1() As Variant: Let arr1() = Rng1.Value2 Dim arr1I() As Variant: Let arr1I() = Rng1.Columns(9).Value2 Dim arr2() As Variant: Let arr2() = Rng2.Value2 Dim arr2Z() As Variant: Let arr2Z() = Rng2.Columns("Z").Value2 Rem 2 Do it Dim Cnt For Cnt = 2 To Lr1 Step 1 If arr1I(Cnt, 1) <> "" Then Dim MtchRes As Variant Let MtchRes = Application.Match(arr1I(Cnt, 1), arr2Z(), 0) If IsError(MtchRes) Then ' column I 1.xls value is not in column Z of ap.xls Else ' column I of 1.xls matches with column Z of ap.xls ' if column K of ap.xls is equals to column L of ap.xls If arr2(MtchRes, 11) = arr2(MtchRes, 12) Then ' If column H of 1.xls is greater than column D of 1.xls then If arr1(Cnt, 8) > arr1(Cnt, 4) Then 'copy the first row of OrderFormat.xlsx & paste it to BasketOrder.xlsx Let Ws3.Range("A1:U1").Value2 = Ws4.Range("A1:U1").Value2 ElseIf arr1(Cnt, 8) < arr1(Cnt, 4) Then ' If column H of 1.xls is less than column D of 1.xls then 'copy the third row of OrderFormat.xlsx & pate it to BasketOrder.xlsx Else Let Ws3.Range("A1:U1").Value2 = Ws4.Range("A3:U3").Value2 End If Else ' column K of ap.xls is not equal to column L of ap.xls End If End If Else ' empty column I in 1.xls End If Next Cnt End Sub




Reply With Quote
Bookmarks