Araç Km Tahmin

gurbuzs

Altın Üye
Katılım
10 Kasım 2004
Mesajlar
195
Excel Vers. ve Dili
Office 360 Tr
Altın Üyelik Bitiş Tarihi
24-10-2024
Servise gelen araçlar var. bunlar birkaç defa gelen araçlar. bunların yıllık ve aylık kaç km yaptıklarını tahmin edeceğiz ve bir sonraki servise mesela 10bin km sonra hangi tarihte geleceğini tahmin etme konusunda yardıma ihtiyaç var.
Servise 1 defa geldiyse nasıl tahmin edilir onu da bilemedim251829
 

Ekli dosyalar

Son düzenleme:
Katılım
9 Şubat 2022
Mesajlar
203
Excel Vers. ve Dili
Office 2021 Türkçe (x64)
Altın Üyelik Bitiş Tarihi
09-02-2027
Her plakanın, ilk servis (ÇOKEĞERMİN) ve son servis tarihleri (ÇOKEĞERMAK) arasındaki gün hesaplanacak.
Bu sayı toplam o plakanin servise gelme sayısı -1'e bölünecek.
Sonra bulunan bu gün sayısı, her plakanın son servis tarihine eklenecek.

ÇOKEĞERSAY kullanmanız gerek, bir de tarihlerin güne çevrilerek hesaplanması gerekir.

Servise 1 defa geldiyse, bir tahmin yapılamaz.
 
Son düzenleme:

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,165
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Dosyanız ekte inceleyiniz.

Sadece bir defa servise gelmiş olan araç için bir sonraki servis tarihine 365 gün eklenmiştir. Diğerlerinin önceki servis aralıklarının ortalaması alınmıştır.
 

Ekli dosyalar

gurbuzs

Altın Üye
Katılım
10 Kasım 2004
Mesajlar
195
Excel Vers. ve Dili
Office 360 Tr
Altın Üyelik Bitiş Tarihi
24-10-2024
Merhaba.

Dosyanız ekte inceleyiniz.

Sadece bir defa servise gelmiş olan araç için bir sonraki servis tarihine 365 gün eklenmiştir. Diğerlerinin önceki servis aralıklarının ortalaması alınmıştır.
251837
Sanırım bi hata var. mesela 06YY2222 plakalı araç yaklaşık 11 ayda 10bin km yapmış. ama tahminde 4 ay sonra bakıma gelecek görünüyor.
35ZZ3333 için de aynı durum var
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,165
Excel Vers. ve Dili
2019 Türkçe
Kodları aşağıdakilerle değiştirin.
Kod:
Private Sub btnTahmin_Click()
    Dim Bak As Long
    Dim Plaka As Range
    Dim Ortalama() As Double
    Dim IlkAdres As String
    Dim Tarih As Date
    Dim Say As Integer
    ReDim Ortalama(0)
    For Bak = 2 To Cells(Rows.Count, "I").End(xlUp).Row
        With Range("C:C")
            Set Plaka = .Find(What:=Cells(Bak, "I").Value, LookAt:=xlWhole)
            IlkAdres = Plaka.Address
            If Not Plaka Is Nothing Then
                Tarih = Cells(Plaka.Row, "B")

                Do
                    Set Plaka = .FindNext(Plaka)
                    If IlkAdres = Plaka.Address Then Exit Do
                    ReDim Preserve Ortalama(Say)
                    Ortalama(UBound(Ortalama)) = Cells(Plaka.Row, "B") - Tarih
                    Tarih = Cells(Plaka.Row, "B")
                    Say = Say + 1
                Loop While Not Plaka Is Nothing
            End If
        End With
        If Ortalama(0) = 0 Then
            Cells(Bak, "J").Value = DateAdd("d", 365, Tarih)
        Else
            Cells(Bak, "J").Value = DateAdd("d", WorksheetFunction.Average(Ortalama), Tarih)
        End If
        Say = 0
        ReDim Ortalama(Say)
    Next
    MsgBox "Tamamlandı"
End Sub
 

gurbuzs

Altın Üye
Katılım
10 Kasım 2004
Mesajlar
195
Excel Vers. ve Dili
Office 360 Tr
Altın Üyelik Bitiş Tarihi
24-10-2024
Kodları aşağıdakilerle değiştirin.
Kod:
Private Sub btnTahmin_Click()
    Dim Bak As Long
    Dim Plaka As Range
    Dim Ortalama() As Double
    Dim IlkAdres As String
    Dim Tarih As Date
    Dim Say As Integer
    ReDim Ortalama(0)
    For Bak = 2 To Cells(Rows.Count, "I").End(xlUp).Row
        With Range("C:C")
            Set Plaka = .Find(What:=Cells(Bak, "I").Value, LookAt:=xlWhole)
            IlkAdres = Plaka.Address
            If Not Plaka Is Nothing Then
                Tarih = Cells(Plaka.Row, "B")

                Do
                    Set Plaka = .FindNext(Plaka)
                    If IlkAdres = Plaka.Address Then Exit Do
                    ReDim Preserve Ortalama(Say)
                    Ortalama(UBound(Ortalama)) = Cells(Plaka.Row, "B") - Tarih
                    Tarih = Cells(Plaka.Row, "B")
                    Say = Say + 1
                Loop While Not Plaka Is Nothing
            End If
        End With
        If Ortalama(0) = 0 Then
            Cells(Bak, "J").Value = DateAdd("d", 365, Tarih)
        Else
            Cells(Bak, "J").Value = DateAdd("d", WorksheetFunction.Average(Ortalama), Tarih)
        End If
        Say = 0
        ReDim Ortalama(Say)
    Next
    MsgBox "Tamamlandı"
End Sub
şimdi oldu ....
teşekkürler
 
Üst