Kombinasyon ile Toplama

Katılım
1 Aralık 2017
Mesajlar
11
Excel Vers. ve Dili
2013 Türkçe
Merhabalar,
Arkadaşlar anlatım biraz karışık olabilir kusura bakmayın. Resimle ve ekte ki dosya ile daha açıklayıcı kendimi ifade etmeye çalıştım yardımcı olabilir misiniz.


Ekte ki dosya da C3:C15 hücreleri arasında ki rakamların kendi içlerinde kombinasyon denemesi yaparak 2.5 sayısına en yakın olanı seçmesi ve sonra sırada ki rakamı denemesi gerekli.
Örnek olarak : C3'de ki 2.4 sayısı sıra ile C4-C5-C6...C15'e kadar bakacak ve kendisi ile toplayıp 2.5 sayısına en yakın ikili ya da üçlü toplamı bularak bunu 1 sayacak.
Sonra C4 hücresi yukarıda ki ilk denemede seçilmedi ise cünkü ilk rakamla toplamı 2.5'dan fazla olmuş ise seçilmemiş durumda olacak. Daha sonra C4 hücresi ilk denemede seçilmemiş rakamlara bakarak yine kendisi ile toplamı 2.5 sayısına en yakın veya tam 2.5 olan toplamı alacak ve bunu da 1 sayacak.

ve bu saydığı 1'leri G hücresinde alt alta yazacak.

Bunu nasıl yapabilirim yardımcı olabilirmisiniz.

Dosya Linki:
http://dosya.co/8kq2aw21fafl/DİREK-PANEL_HESAPLAMA.xlsx.html


ÖRNEK RESİM

 
Katılım
1 Aralık 2017
Mesajlar
11
Excel Vers. ve Dili
2013 Türkçe
Yardımcı olabilecek biri yok mu bu konuda bana : (

Karışık ise anlatımım lütfen belirtin daha açıklayıcı olmaya calışayım çözümü elde etmek için
 
Katılım
24 Nisan 2005
Mesajlar
3,669
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Yardımcı olabilecek biri yok mu bu konuda bana : (

Karışık ise anlatımım lütfen belirtin daha açıklayıcı olmaya calışayım çözümü elde etmek için
C kolonunda en fazla kaç satır veri olabiliyor?
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Konuyla ilgili aşağıdaki kodları hazırladım ancak maalesef istediğim işlevi görmüyor:

Kod:
Sub panel()
son = Cells(Rows.Count, "C").End(3).Row
Range("G3:G" & son) = ""
For i = 3 To son
    If Cells(i, "C") > 0 And Cells(i, "G") = "" Then
        For j = i + 1 To son
            If Cells(j, "C") > 0 Then
                If Cells(i, "C") + Cells(j, "C") <= 2.5 Then
                    Cells(j, "H") = 2.5 - (Cells(i, "C") + Cells(j, "C"))
                End If
            End If
        Next
        For k = 3 To son
            If Cells(k, "H") = WorksheetFunction.Min(Range("H3:H" & son)) Then
                Cells(i, "G") = WorksheetFunction.Max(Range("G3:G" & son)) + 1
                Cells(k, "G") = Cells(i, "G")
                Range("H3:H" & son) = ""
                k = son
            End If
        Next
    End If
Next
End Sub
Kodla 3. satırdan itibaren C sütunu boş olmayıp 0'dan büyük olan ve aynı zamanda G sütunu boş olan hücreleri kontrol ediyorum.
Bu satırın c sütunu değerine a diyelim. Şarta uyuyorsa (a >0 ise) bu sefer sonraki satırdan itibaren aşağı doğru kontrol ediyorum.
Bu kontrolde de yine C sütununun dolu ve 0'dan büyük olmasına bakıyorum. bu değere de b diyelim.
Eğer a+b değeri 2,5'e küçük ya da eşitse
2,5-a-b değerini H sütununa yazdırıyorum.
Aşağı doğru satırların kontrolü bitince bu sefer yeni bir döngüyle H sütunundaki en küçük değeri buluyorum.
H sütunundaki en küçük değer olan satırla ilk kontrol ettiğimiz satıra (a'nın olduğu satır) G sütunundaki en büyük sayının 1 fazlasını veriyorum. Böylece bu iki satırın bir panel oluşturduğunu kabul ediyorum.
Sonra H sütununu boşaltıp, ikinci i değeri için aynı işlemleri yapıyorum.

Ancak kod nedense 2,5 değerini bir türlü kabul etmiyor. Örneğin 2,4 ve 0,1 değerleri için 2,5-2,4-0,1 sonucunu 22,5 buluyor. Bu da yanlış sonuca yol açıyor.

2,5'u 2.5, "2.5"*1, 5/2, "2,5" şekillerinde kullandım ama hepsinde de hatalı sonuç veriyor.
 
Katılım
1 Aralık 2017
Mesajlar
11
Excel Vers. ve Dili
2013 Türkçe
@asri "C sütunun da maksimum 150 satır olabilir bu şekilde değerlendirebilirsiniz.

@YUSUF44

Normal de burada ki amacım şu;

Standart olarak matematikle gitsek "c" Sütununun toplamını 2,5"a bölsek 6,96 oluyor yani benim müşteriye yuvarlarsak 2.5 metre boyunda toplam da 7 parça ürün vermem gerekecek.

Bura da 2,5"a tamamlatma isteğim şu yüzden. Benim müşteriye verdiğim ürünün toplam boyu 2.5 metre. Müşteri diyelim ki ürünün 2 metresini kullandı. Kalan 50cm"lik yeri de parça olarak kullanıyor ora da sorun yok ama diyelik 2.4 kullandı ve geri 10cm kaldı orada zorlanıyor. Dolayısı ile manuel olarak ele aldığım da 8 parça ürüne ihtiyacım buradan doğuyor.

Yani formül öyle bir çalışmalı ki 1mt +0,5mt+ 1mt yi yakaladığın da demeli ki tamam siz 2.5 oldunuz sizin toplamınızı 1 adet ürün olarak sayıyorum. sonra kalanları yeniden toplayıp en uygun toplamı alarak sizi de 1 adet ürün daha sayıyorum demeli.

Karışık oldu yine ama en sade şekliyle böyle anlatabiliyorum :))
 
Üst