Soru Birden Fazla Koşul İle Arama

Katılım
1 Aralık 2008
Mesajlar
244
Excel Vers. ve Dili
Microsoft Excel 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
23/07/2020
Merhabalar ;

B E F sütununda aynı değerler olan veriler var N Sütununda Tarih O Sütununda da Saat var. Yapmak istediğim B E F sütunundaki değerler aynı ise ( birebir) N ve O Sütununu baz alarak en son tarih ve saat olan hücreye "ENSON" yazmasını istiyorum. Ancak bazı satırlarda O Sütunu boş burada sadece N Sütununu ( Tarih olan ) baz alsın. yardımlarınız için şimdiden tşk ederim
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
1,091
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Kod:
Sub EtiketleEnSon()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sayfa(1)

    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row

    Dim i As Long, j As Long
    Dim key As String
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
    
    For i = 2 To lastRow
        key = ws.Cells(i, "B").Value & "|" & ws.Cells(i, "E").Value & "|" & ws.Cells(i, "F").Value
        If Not dict.exists(key) Then
            Set dict(key) = CreateObject("Scripting.Dictionary")
        End If

        Dim tarih As Date
        Dim saat As Variant
        tarih = ws.Cells(i, "N").Value
        saat = ws.Cells(i, "O").Value

        Dim tamZaman As Date
        If IsEmpty(saat) Then
            tamZaman = tarih
        Else
            tamZaman = tarih + TimeValue(saat)
        End If

        dict(key)(i) = tamZaman
    Next i
    
    For Each key In dict.Keys
        Dim maxTime As Date
        Dim maxRow As Long
        maxTime = 0

        For Each j In dict(key).Keys
            If dict(key)(j) > maxTime Then
                maxTime = dict(key)(j)
                maxRow = j
            End If
        Next j

        ws.Cells(maxRow, "P").Value = "ENSON" ' Sonuç P sütununa yazılır
    Next key

    MsgBox "İşlem tamamlandı!"
End Sub
Yukardaki makroda B, E ve F sütunlarındaki değerleri karşılaştırarak aynı olan gruplar içinde N ve O sütunlarına göre en son tarih ve saat olan satıra "ENSON" yazacaktır.
  1. Excel'de Alt + F11 tuşuna basarak VBA editörünü aç.
  2. Insert > Module seçeneğiyle yeni bir modül ekle.
  3. Yukarıdaki kodu yapıştır.
  4. F5 tuşuna basarak çalıştır.
Bu kod, B, E ve F sütunlarındaki değerleri birleştirerek gruplar oluşturur. Her grup için N ve O sütunundaki tarih-saat bilgisine göre en son olanı bulur ve o satırın P sütununa "ENSON" yazar.
 
Katılım
1 Aralık 2008
Mesajlar
244
Excel Vers. ve Dili
Microsoft Excel 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
23/07/2020
tşk ederim emeğinize sağlık
 
Üst