DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
=DÜŞEYARA(Sayfa2!B3;Sayfa1!A1:D8;2;YANLIŞ)
çözüm bula bilen var mı ?Tahsinarat kardeşim;
Ben aynı işlevi ek'te ki dosya içinde yapmak istiyorum. Sayfa3 de firma numaralarının altına, sayfa2nin b sütunundaki numaralardan birini yazınca bilgiler çıkıyor.Ben önceki ekte olduğu gibi aynı olanların alt alta sıralanmasını ve kaldığım yerden kod girmeye devam etmesini istiyorum.Sabahdan beri önceki verdiğiniz kodlar üzerinde uğraştım beynim sulandı yapamadım sayenizde bunu da yaparsanız az çok mantığı kapmış olacam teşekkürler.
Dosya eki:
Ekli dosyayı görüntüle 136476
..
Merhaba,Merhaba,
Sonuç olarak görmek istediğiniz tabloyu örnek dosyanıza ekleyip paylaşırsanız yanıt almanız daha da hızlanacaktır.
Her kişi için maksimum 7 satır olmasını istiyorum.Paylaştığınız örnek dosyada ALİ DEMİR kişisi 6 satırda geçiyor. Siz 5 satırlık bilgiyi diğer sayfada göstermişsiniz.
Her kişi için maksimum 5 satır mı göstermek istiyorsunuz?
Option Explicit
Sub Tablolari_Birlestir()
Dim S1 As Worksheet, S2 As Worksheet
Dim Veri As Variant, X As Long, Say As Long
Dim Bul As Range, Adres As String
Dim WF As WorksheetFunction, Sayac As Long
Dim Say_1 As Long, Say_2 As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set S1 = Sheets("veri")
Set S2 = Sheets("ağaç")
Set WF = WorksheetFunction
Veri = S1.Range("A2:E" & S1.Cells(S1.Rows.Count, 1).End(3).Row).Value
ReDim Liste(1 To S1.Rows.Count, 1 To 5)
For X = LBound(Veri, 1) To UBound(Veri, 1)
If Veri(X, 1) <> "" Then
Say_1 = WF.CountIf(S1.Range("C:C"), Veri(X, 3))
Say_2 = WF.CountIf(S2.Range("C:C"), Veri(X, 3))
If Say_1 > 0 And Say_2 > 0 Then
Set Bul = S2.Range("C:C").Find(Veri(X, 3), , , xlWhole)
If Not Bul Is Nothing Then
Adres = Bul.Address
Do
If Bul.Offset(, 3) = "" Then
10 Say = Say + 1
Sayac = Sayac + 1
Liste(Say, 1) = Veri(X, 1)
Liste(Say, 2) = Veri(X, 2)
Liste(Say, 3) = Veri(X, 3)
If Not Bul Is Nothing Then
Liste(Say, 4) = Bul.Offset(, 1)
Liste(Say, 5) = Bul.Offset(, 2)
Bul.Offset(, 3) = "X"
End If
End If
If Bul Is Nothing Then Exit Do
Set Bul = S2.Range("C:C").FindNext(Bul)
Loop While Not Bul Is Nothing And Bul.Address <> Adres
If Sayac < Say_1 And Say_2 < Say_1 Then
Set Bul = Nothing
GoTo 10
End If
Sayac = 0
X = X + Say_1 - 1
End If
Else
Say = Say + 1
Liste(Say, 1) = Veri(X, 1)
Liste(Say, 2) = Veri(X, 2)
Liste(Say, 3) = Veri(X, 3)
Liste(Say, 4) = "YOK"
Liste(Say, 5) = "YOK"
End If
End If
Next
S1.Range("A2:E" & S1.Rows.Count).ClearContents
S1.Range("A2").Resize(Say, 5) = Liste
S2.Range("F:F").ClearContents
Set S1 = Nothing
Set S2 = Nothing
Set WF = Nothing
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
MsgBox "Aktarım işlemi tamamlanmıştır.", vbInformation
End Sub
Maksimum 5 satır olacak şekilde yapmışsınız sanırım.Deneyiniz.
C++:Option Explicit Sub Tablolari_Birlestir() Dim S1 As Worksheet, S2 As Worksheet Dim Veri As Variant, X As Long, Say As Long Dim Bul As Range, Adres As String Dim WF As WorksheetFunction, Sayac As Long Dim Say_1 As Long, Say_2 As Long Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Set S1 = Sheets("veri") Set S2 = Sheets("ağaç") Set WF = WorksheetFunction Veri = S1.Range("A2:E" & S1.Cells(S1.Rows.Count, 1).End(3).Row).Value ReDim Liste(1 To S1.Rows.Count, 1 To 5) For X = LBound(Veri, 1) To UBound(Veri, 1) If Veri(X, 1) <> "" Then Say_1 = WF.CountIf(S1.Range("C:C"), Veri(X, 3)) Say_2 = WF.CountIf(S2.Range("C:C"), Veri(X, 3)) If Say_1 > 0 And Say_2 > 0 Then Set Bul = S2.Range("C:C").Find(Veri(X, 3), , , xlWhole) If Not Bul Is Nothing Then Adres = Bul.Address Do If Bul.Offset(, 3) = "" Then 10 Say = Say + 1 Sayac = Sayac + 1 Liste(Say, 1) = Veri(X, 1) Liste(Say, 2) = Veri(X, 2) Liste(Say, 3) = Veri(X, 3) If Not Bul Is Nothing Then Liste(Say, 4) = Bul.Offset(, 1) Liste(Say, 5) = Bul.Offset(, 2) Bul.Offset(, 3) = "X" End If End If If Bul Is Nothing Then Exit Do Set Bul = S2.Range("C:C").FindNext(Bul) Loop While Not Bul Is Nothing And Bul.Address <> Adres If Sayac < Say_1 And Say_2 < Say_1 Then Set Bul = Nothing GoTo 10 End If Sayac = 0 X = X + Say_1 - 1 End If Else Say = Say + 1 Liste(Say, 1) = Veri(X, 1) Liste(Say, 2) = Veri(X, 2) Liste(Say, 3) = Veri(X, 3) Liste(Say, 4) = "YOK" Liste(Say, 5) = "YOK" End If End If Next S1.Range("A2:E" & S1.Rows.Count).ClearContents S1.Range("A2").Resize(Say, 5) = Liste S2.Range("F:F").ClearContents Set S1 = Nothing Set S2 = Nothing Set WF = Nothing Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True MsgBox "Aktarım işlemi tamamlanmıştır.", vbInformation End Sub