Excel Forum

Excel Forum (http://www.excel.web.tr/index.php)
-   Fonksiyonlar (http://www.excel.web.tr/forumdisplay.php?f=47)
-   -   Kombinasyon ile Toplama (http://www.excel.web.tr/showthread.php?t=169688)

ReaLioN 11-01-2018 07:30

Kombinasyon ile Toplama
 
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-P...LAMA.xlsx.html


ÖRNEK RESİM

http://oi67.tinypic.com/15y6e4p.jpg

ReaLioN 12-01-2018 13:23

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

asri 13-01-2018 08:48

Alıntı:

ReaLioN tarafından gönderildi (Mesaj 925804)
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 13-01-2018 10:55

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.

ReaLioN 13-01-2018 14:33

@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 :))


Saat 17:47

Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.