Eşleşen satırdan veri al

Katılım
17 Mart 2014
Mesajlar
14
Excel Vers. ve Dili
2013 - En
Derdimi yazmak bile 1 saat sürdü
Çözümü düşünemiyorum


1111 sayfasındaki A sütunundaki "TARİH" i; 2222 sayfasındaki A sütunu ile eşleştirecek

1111 sayfasındaki B sütunundaki "RAKAM" ı; 2222 sayfasındaki B sütunu ile eşleştirecek

2222 sayfasında eşleşme satırında bulunan C stundaki veriyi ("GECE" / "GÜNDÜZ");

1111 sayfasındaki C stununa sorgulamanın yapıldığı satıra işleyecek


İlgilenen herkese şimdiden teşekkürler
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,196
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

C2: Dizi formülüdür. Girişini ctrl+shift+enter tuş kombinasyonu ile yapınız.

Kod:
=EĞER(YADA(A2="";B2="");"";EĞERHATA(İNDİS('2222'!$C$2:$C$100
;MİN(EĞER('2222'!$A$2:$A$100=A2;EĞER('2222'!$B$2:$B$100=B2;SATIR('2222'!$C$2:$C$100)-SATIR('2222'!$C$2)+1;-1))));""))
 
Katılım
17 Mart 2014
Mesajlar
14
Excel Vers. ve Dili
2013 - En
Ömer Bey çok teşekkürler ama çalışmadı. Ya da ben uyarlamayı yapamadım... Çalışmama göre tam olarak şu:

(Her şey tek çalışma kitabında)


2018 sayfasındaki B sütunundaki veriyi; Shift sayfasındaki A sütununda arayacak

2018 sayfasındaki E sütunundaki veriyi; Shift sayfasındaki B sütununda arayacak

Shift sayfasında iki eşleşmenin sağlandığı satırda bulunan C stundaki veriyi

2018 sayfasındaki G stununa sorgulamanın yapıldığı satıra işleyecek


Zahmet veriyorum...:oops:
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,196
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Formülü dizi formülüne çevirdiniz mi?
Formülü hücreye yazdıktan sonra entera basmadan ctrl+shift+enter tuş kombinasyonu ile girişini yapmanız gerekir. Bu işlemden sonra formülün başına ve sonuna { } ayraçlarının otomatik eklenmesi gerekir.

Yine olmazsa örnek bir dosyanızı paylaşım sitesini ekleyip linki paylaşmanızı rica ederim.
 
Katılım
17 Mart 2014
Mesajlar
14
Excel Vers. ve Dili
2013 - En
Formülü dizi formülüne çevirdiniz mi?
Formülü hücreye yazdıktan sonra entera basmadan ctrl+shift+enter tuş kombinasyonu ile girişini yapmanız gerekir. Bu işlemden sonra formülün başına ve sonuna { } ayraçlarının otomatik eklenmesi gerekir.

Yine olmazsa örnek bir dosyanızı paylaşım sitesini ekleyip linki paylaşmanızı rica ederim.
En iyisi dosyayı göndermek. Daha kolay olur sizin için

şifresi 01907


Teşekkürler
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,196
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Satır sayısı fazla olduğu için makro ile çözüme gitmek daha mantıklı olacak.
Kod:
Sub Veri_Al()

    Dim Ss As Worksheet, i As Long, c As Range, Adr As String
   
    Set Ss = Sheets("Shift")
   
    Application.ScreenUpdating = False
    Application.Calculation = xlManual
    Sheets("2018").Select
    Range("G4:G" & Rows.Count).ClearContents

    For i = 4 To Cells(Rows.Count, "B").End(xlUp).Row
        Set c = Ss.[A:A].Find(Cells(i, "B"), , xlValues, xlWhole)
        If Not c Is Nothing Then
            Adr = c.Address
            Do
                If Cells(i, "E") = Ss.Cells(c.Row, "B") Then
                    Cells(i, "G") = Ss.Cells(c.Row, "C")
                    Exit Do
                End If
                Set c = Ss.[A:A].FindNext(c)
            Loop While Not c Is Nothing And c.Address <> Adr
        End If
    Next i
   
    MsgBox "İşlem Tamam", , "excel.web.tr"
    Application.Calculation = xlAutomatic
    Application.ScreenUpdating = True
   
End Sub
Not: Detaylı deneme yapmadım.
 
Katılım
17 Mart 2014
Mesajlar
14
Excel Vers. ve Dili
2013 - En
Satır sayısı fazla olduğu için makro ile çözüme gitmek daha mantıklı olacak.
Kod:
Sub Veri_Al()

    Dim Ss As Worksheet, i As Long, c As Range, Adr As String
  
    Set Ss = Sheets("Shift")
  
    Application.ScreenUpdating = False
    Application.Calculation = xlManual
    Sheets("2018").Select
    Range("G4:G" & Rows.Count).ClearContents

    For i = 4 To Cells(Rows.Count, "B").End(xlUp).Row
        Set c = Ss.[A:A].Find(Cells(i, "B"), , xlValues, xlWhole)
        If Not c Is Nothing Then
            Adr = c.Address
            Do
                If Cells(i, "E") = Ss.Cells(c.Row, "B") Then
                    Cells(i, "G") = Ss.Cells(c.Row, "C")
                    Exit Do
                End If
                Set c = Ss.[A:A].FindNext(c)
            Loop While Not c Is Nothing And c.Address <> Adr
        End If
    Next i
  
    MsgBox "İşlem Tamam", , "excel.web.tr"
    Application.Calculation = xlAutomatic
    Application.ScreenUpdating = True
  
End Sub
Not: Detaylı deneme yapmadım.

Deneme için Temmuz ayından bir kaç vardiya denedim, Çalıştı
Ellerinize sağlık
Allah razı olsun
 
Üst