2016-03-25 8 views
1

Akşam,Sepearte ws'de sütunlar nasıl bağlanır ve üçüncü satırda eksik satırları döndürür?

“Console” ws “A” sütunundan (“rom row 2)” sütunundan “OTL” ws “D” sütununa (17. satırdan başlayarak) gelen verileri karşılaştırmaya çalışıyorum. Her uyumsuzluk, yeni bir çizgi “Uzlaşma” adında üçüncü çalışma sayfasında oluşturulmalıdır (İdeal bütün çizgi kopyalanabilir olurdu ama sadece sayı ile mutlu olurdu)

Bu benim bugüne kadar ne var:

Bunu biliyorum
Sub Differentiation() 

Set RECsheet = ThisWorkbook.Sheets("Reconciliation") 
Set OTLsheet = ThisWorkbook.Sheets("OTL") 
Set CONsheet = ThisWorkbook.Sheets("Consolidation") 

lrREC = RECsheet.Cells(Sheets("RECsheet").Rows.Count, "A").End(xlUp).Row 
lrOTL = ORLsheet.Cells(Sheets("OTLsheet").Rows.Count, "D").End(xlUp).Row 
lrCON = CONsheet.Cells(Sheets("CONsheet").Rows.Count, "A").End(xlUp).Row 

For i = 2 To lrCON 
foundTrue = False 
For j = 17 To lrOTL 

If Sheets("CONSheet").Cells(i, 1).Value = Sheets("OTLsheet").Cells(j, 4).Value Then 
    foundTrue = True 
    Exit For 
End If 

Next j 

If Not foundTrue Then 
    Sheets("CONSheet").Rows(i).Copy Destination:= _ 
    Sheets("Consolidation").Rows(lrREC+ 1) 
    lrREC = lrREC + 1 

End If 

Next i 

'stop screen from updating to speed things up 
Application.ScreenUpdating = True 

End Sub 

muhtemelen size bir köpeğin kahvaltı gibi görünüyor ama ben (14 saat bu konuda !!! haha) çok sert denedin mi

yardımına isterdim!

cevap

0

Bunu iki bölüme ayırırdım. İlk olarak, uyumsuzlukları bulun: Bunu, iferror(vlookup(ThingToLookup,TableInOtherWS,1,0),"MISMATCH") gibi bir şeyle yapın. Bunu tam aralığınızda kopyalayın. Bu size uyumsuzlukların bir listesini verecektir. Sonra yavaşça ilerler nasıl olduğunu görmek için çizgi ile F8 hattını iterek

'start in the WS with the MISMATCH column, with the first range of that column selected 

dim arr(10000,2) 'assuming you want to copy over 3 fields... increase for more fields... and assuming 10000 rows 
i=0 
while activecell.value <>"" 
    if activecell.value ="MISMATCH" then 
     arr(i,0)=activecell.offset(0,-4).value 'change -4 to whatever u wanna copy 
     arr(i,1)=activecell.offset(0,-3).value 
     arr(i,2)=activecell.offset(0,-2).value 
    end if 
    i=i+1 
    activecell.offset(1,0).activate 
wend 

'now dump out results in a new book 
worksheet.add 
for i_ctr = 0 to i 
    activecell.offset(i_ctr ,0).value= arr(i_ctr,0) 
    activecell.offset(i_ctr ,1).value= arr(i_ctr,1) 
    activecell.offset(i_ctr ,2).value= arr(i_ctr,2) 
next 

koşmak bunu böyle bir şey yapmak (Bu test değilim, ama benim açımdan almalısınız). İyi şanslar!

+0

Hey - bu işe yaramaz ve düzeltmek için yeterince bilgili değilim: ( – PureD

İlgili konular