Sql = "SELECT t2.aa, t1.bb " & _
"FROM [Sayfa1$] as t1 RIGHT JOIN [Sayfa2$] as t2 ON t1.aa = t2.aa;"
rs.Open sql, con, 1, 1
Sayfa2.[B:B].Clear
Sayfa2.Range("A2").CopyFromRecordset rs
sorguyu yukardaki gibi değiştirirseniz sonuç doğru bir şekilde geliyor ama belirtiiğim gibi distinct/group by olmadan sayfa1deki her tekrarlı kayıt sayfa2ye olduğu gibi aktarılır
sonuç için neden hatalı dediğiniz anlamadım sonuçta A4 değeri 1. sayfada 2 defa var, biz de verileri sayfa1'den aldığımıza göre 2 sonucun olması normal o nedenle de b sütununda verileri bir aşağı kaydırıyor. bu durumda ya 2 sütunu birden alıp recordset copy için A2 olacak yada yine 2 sütunu başka yere aktaracaksınız ama tekrar belirteyim sayfa1'tekrarlayan veri varken distinct/group by gibi sorgular olmadan sayfa1deki çift kaydı teke düşürüp sayfa2ye aktaramazsınız