• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Toplam Sayıya Göre Kombinasyon

Katılım
5 Kasım 2007
Mesajlar
4,727
Excel Vers. ve Dili
64 Bit TR - Microsoft Office 365 - Win11 Home
Merhaba,

1 nci Şart ; A1'e bir sayı girilecek,
2 nci Şart ; M2 ve N2 ye sayılar girilecek,

İstenen ;

1) A1'deki sayıya erişen M2-N2 aralığındaki sayıların listelenmesi (kombinasyonu),

2) EĞER İlk sayı 0 (sıfır) ise ; son sayı (x) kadar ( 54' e kadar herhangi bir sayı ) tüm kombinasyonu hesaplamalı,

AÇIKLAMA ;

1) İlk sayı (M2) en az 1, Son Sayı (N2) en fazla 54' tür.

2) A1 hücresindeki sayı en az 21, en fazla 309' dur.

Teşekkür ederim.
 

Ekli dosyalar

Merhaba,
Aşağıdaki kodları dener misiniz?
Kod:
Sub kod()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Range("B:G").ClearContents

hdf = Range("A1").Value
ilk = Range("M2").Value
son = Range("N2").Value
If son > hdf Then son = hdf
sat = 2
For a = ilk To son
    For b = a + 1 To son
        For c = b + 1 To son
            For d = c + 1 To son
                For e = d + 1 To son
                    For f = e + 1 To son
                        If a + b + c + d + e + f = hdf Then
                            Cells(sat, "B") = a
                            Cells(sat, "C") = b
                            Cells(sat, "D") = c
                            Cells(sat, "E") = d
                            Cells(sat, "F") = e
                            Cells(sat, "G") = f
                            sat = sat + 1
                        End If
                    Next
                Next
            Next
        Next
    Next
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
 
Sayın mucit77, merhaba,

Öncelikle ilginiz için teşekkür ederim,

Kod, ilk sayıdan (M2) itibaren tüm kombinasyonu hesaplıyor,

Ekli örneğe göre kodun 1-54 arası ve 246 sayısı için üretmesi gereken aralık B2:G85 olmalı,

Ne zaman ki M2=0 N2=54 olur, bu durumda tüm seçenekleri içeren kombinasyon hesaplamalı, kod şu an başlangıç sayısını baz alıp tüm kombinasyonu hesaplıyor (B2:G24150)

Örneğin M2=2 N2=54 seçildiğinde A1 (246 sayısı) için, aralık ; B2:G102 olmalı, yani daha fazla hesaplamamalı.

Teşekkür ederim.
 
M2 = 0 ise tüm seçenekler, onu anladım ama değilse;
1-54 arası ve 246 sayısı için üretmesi gereken aralık B2:G85
M2=2 N2=54 seçildiğinde A1 (246 sayısı) için, aralık ; B2:G102
Buradaki aralık nasıl belirleniyor? Onu anlayamadım.

Bir de kod hepsini hesaplıyor zaten, İhtiyacınızın fazlasını sildirebilirsiniz.
 
Sayın mucit77, tekrar merhaba,

İhtiyacım dışındaki satırları elbette silebilirim, ancak anılan sayıları hesaplaması, hesaplama zamanını kısaltabilir,

Kodunuz 1-54 arasını B2:G85, 2-54 arasını ise B2:G102 aralığına yazmalıydı, yani aralık, seçilen M2 ve N2 hücrelerine göre oluyor, fazladan sayı üretmemesi için sadece M2 ve N2 arasındaki sayının kombinasyonunu bulmak istemiştim,

Olmadı dediğiniz gibi, fazla satırları silebilirim,

Emeğiniz ve duyarlığınız için teşekkür ederim.

Saygılarımla.
 
Son düzenleme:
Sanırım şimdi anladım. Peki M2 = 0 olduğu durumda sol tarafa 0 sayısı da dahil olacak mı? (0,36,51,52,53,54 gibi)
Yoksa yine 1' den mi başlayacak?
 
Merhaba,

1'den başlayacak ve eğer olabiliyor ise hesaplanmış son satır sayısını O1'e yazabilir mi ? Örneğin 123 sayısının 1-54 aralığı B2:G29576. O1'e 29576 yazarsa iyi olur ?

Teşekkür ederim.
 
Merhaba,
Deneyiniz...
Kod:
Sub kod()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Range("B:G").ClearContents

hdf = Range("A1").Value
ilk = Range("M2").Value
son = Range("N2").Value
[COLOR="Red"]If ilk = 0 Then son1 = son: ilk = 1 Else son1 = ilk[/COLOR]
If son > hdf Then son = hdf
sat = 2
For a = ilk To [COLOR="red"]son1[/COLOR]
    For b = a + 1 To son
        For c = b + 1 To son
            For d = c + 1 To son
                For e = d + 1 To son
                    For f = e + 1 To son
                        If a + b + c + d + e + f = hdf Then
                            Cells(sat, "B") = a
                            Cells(sat, "C") = b
                            Cells(sat, "D") = c
                            Cells(sat, "E") = d
                            Cells(sat, "F") = e
                            Cells(sat, "G") = f
                            sat = sat + 1
                        End If
                    Next
                Next
            Next
        Next
    Next
Next
[COLOR="red"]Range("O1") = sat - 1[/COLOR]
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
 
Sayın mucit77, tekrar merhaba,

Çok çok teşekkür ederim, son derece işlevsel oldu, elinize sağlık.

Saygılarımla.
 
Rica eder, iyi çalışmalar dilerim...
 
Geri
Üst