Toplam Sayıya Göre Kombinasyon

1Al2Ver

Altın Üye
Katılım
5 Kasım 2007
Mesajlar
4,712
Excel Vers. ve Dili
64 Bit TR - Microsoft Office 365 - Win11 Home
Altın Üyelik Bitiş Tarihi
04-01-2026
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

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,324
Excel Vers. ve Dili
2007 Türkçe
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
 

1Al2Ver

Altın Üye
Katılım
5 Kasım 2007
Mesajlar
4,712
Excel Vers. ve Dili
64 Bit TR - Microsoft Office 365 - Win11 Home
Altın Üyelik Bitiş Tarihi
04-01-2026
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.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,324
Excel Vers. ve Dili
2007 Türkçe
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.
 

1Al2Ver

Altın Üye
Katılım
5 Kasım 2007
Mesajlar
4,712
Excel Vers. ve Dili
64 Bit TR - Microsoft Office 365 - Win11 Home
Altın Üyelik Bitiş Tarihi
04-01-2026
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:

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,324
Excel Vers. ve Dili
2007 Türkçe
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?
 

1Al2Ver

Altın Üye
Katılım
5 Kasım 2007
Mesajlar
4,712
Excel Vers. ve Dili
64 Bit TR - Microsoft Office 365 - Win11 Home
Altın Üyelik Bitiş Tarihi
04-01-2026
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.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,324
Excel Vers. ve Dili
2007 Türkçe
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
 

1Al2Ver

Altın Üye
Katılım
5 Kasım 2007
Mesajlar
4,712
Excel Vers. ve Dili
64 Bit TR - Microsoft Office 365 - Win11 Home
Altın Üyelik Bitiş Tarihi
04-01-2026
Sayın mucit77, tekrar merhaba,

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

Saygılarımla.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,324
Excel Vers. ve Dili
2007 Türkçe
Rica eder, iyi çalışmalar dilerim...
 
Üst