• Foruma hoş geldin 👋 Ziyaretçi

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Çözüldü Permütasyon Kombinasyon

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

strongsoul

Yeni Üye
Kullanıcı Bilgileri
Aktiflik
Çevrimdışı
Katılım
8 Şub 2025
Mesajlar
3
Aldığı beğeni
0
Excel V
Office 2019 TR
Konuyu Başlatan
Öncelikle forumdaki değerli hocalarıma saygılar ve selamlar. Başarılarınız daim olsun. Permütasyon ve Kombinasyonlarla ilgili bir çok yazı okudum kod denemeleri yaptım. Sonuca ulaşamadım. Sizlerden yardım istemeye karar verdim.

Excel'de ,300 ya da 500 farklı değerin 3'lü ya da 4'lü ya da 5'li permüstasyon/kombinasyonunu yazdırmak istiyorum. Bazıları milyonluk bazıları milyarlık sonuçlar veriyor. Küçük değerli olan işlemlerimi bu siteden halledebiliyorum. 600 binin üstündeki sonuçları bu site gerçekleştiremiyor. Sayfa zaman aşımına uğruyor ya da çöküyor.

Örneğin 500 farklı değerim var. Bunlar isim de olabilir sayı da olabilir. "Hale, Jale, Gaye, ...vs gibi. Ya da 1, 15, 368, 500, ...vs gibi.
A1 hücresinden A500 hücresine kadar bu değerleri gir.
Değerler arasında mutlaka bir ayırıcı olmalı. 500'ün 3'lü kombinasyonu 20.708.500 bu az oldu. :)

500'ün 4 lü Kombinasyonu (2.573.031.125) B1 hücresinden B1048576 hücresine kadar yazacak,
Sonra C1 den devam edecek C sütunu bittiğinde D sütunu geçecek, bu şekilde devam edecek,.
Tüm sütunlar dolduktan sonra yeni bir sayfa açıp A Sütunundan devam edecek, ta ki işlem bitene kadar.
Permütasyon için ayrı, kombinasyon için ayrı olacak. Yardımınız için şimdiden teşekkür eder, başarılar dilerim.
 
Çözüm
Tek kelimeyle Mükemmel. Emeğinize sağlık Hocam. Küçük aralıklı çalışmalar için net temiz ve hepsi bir arada çözüm olmuş.
(Ben istedim bir göz Allah verdi 2 göz gibi oldu :)) Bunun sadece 3'lü Kombinasyon versiyonu anlık işlem yükünü hafifletecektir ve daha geniş aralıklarla çalışmama olanak sağlayacaktır. Sadece 3'lü kombinasyonun çalıştığı şekilde yüklerseniz sonuca ulaşacağım gibi görünüyor. Her zaman orada olduğunuzu bilmek güzel...
Deneyiniz; 2, 3, 4, 5, 23, 34, 45, 24, 35, 234 VE 345 İçin ayrı ayrı kod düzenlendi.
Excel'de bu kadar büyük kombinasyonları ve permütasyonları hesaplamak ve yazdırmak çok zor ve genellikle Excel'in sınırlarını aşabilir
Aşağıda, örneğinizi ve isteğinizi göz önünde bulundurarak iki ayrı işlem (kombinasyon ve permütasyon) için örnek bir makrodur

Bu kodlar, 500 öğelik bir liste üzerinden kombinasyon ve permütasyon hesaplamaları yapacak ve sonuçları Excel'e yazdıracaktır. Ancak, 500 öğeden elde edilecek kombinasyon sayısı çok büyük olduğundan, işlem zaman alabilir ve Excel'in belleğini aşabilir.

Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

Açıklama:​

Bu kodda, N = 500 ve r = 3 (kombinasyon ve permütasyon için) belirlenmiş. Kombinasyon ve permütasyon için aynı işlem yapılacak.
Kombinasyon hesaplamak için seçilen r değeri kadar öğe birleştirilir (bu örnekte 3'lü kombinasyon).
Permütasyon da aynı şekilde hesaplanır, fakat permütasyonlarda öğe sırasının önemli olduğu unutulmamalıdır.
Sonuçlar B1 ve C1 hücrelerinden başlayarak yazdırılacaktır. Eğer yeterli hücre yoksa, yeni bir sayfa oluşturulabilir ve sonuçlar orada yazdırılabilir.

Excel'in hücre sınırları çok büyük hesaplamalarla sınırlıdır (Excel 2007 ve sonrasında 1.048.576 satır). Bu kadar büyük bir kombinasyon ve permütasyon sonucu yazdırmak ciddi bellek ve işlem gücü gerektirir. Kimi hesaplamalar Excel tarafından engellenebilir ya da işlem süreleri çok uzun olabilir.

Eğer çok büyük bir hesaplama yapmak istiyorsanız, VBA kodunu parçalara ayırarak her seferinde daha küçük kümeler üzerinde çalışmak iyi bir yaklaşım olabilir.
 
N:500 ve r=4 dersek kombinasyon sonucu 2.573.031.125 olmaktadır

Kombinasyon Formülünüz
C(n, r) = n! / (r! * (n - r)!)
n = 500 r = 500 . :
C(n, r) = ?
C(n, r) = C(500 , 4)
= 500! / ( 4! ( 500 - 4 )! )
= 500! / (4! x 496!)
= 2573031125

Misal:

Müdür, atletizmde yarışmak için toplam 30 öğrenciyle sınıftan 4 öğrenci seçer. 30 öğrenciden 4 öğrencinin kaç Kombinasyonunun oluşturulabileceğini belirlemek istiyor?

Çözüm:

Kombinasyon denklemi:

nCr = n! / r! (n-r)!

Buraya,
Toplam öğrenci sayısı (n) = 30
Seçilen öğrenciler (r) = 4

Yani,

30C4 = 30! / 4! (30-4)!
30C4 = 30! / 4! (26)!
30C4 = 30 * 29 * 28 * 27 * 26! / 4! (26)!
30C4 = 30 * 29 * 28 * 27/4!
30C4 = 30 * 29 * 28 * 27/4 * 3 * 2 * 1
30C4 = 657720/24
30C4 = 27405 sonuç
 
Excel'de bu kadar büyük kombinasyonları ve permütasyonları hesaplamak ve yazdırmak çok zor ve genellikle Excel'in sınırlarını aşabilir
Aşağıda, örneğinizi ve isteğinizi göz önünde bulundurarak iki ayrı işlem (kombinasyon ve permütasyon) için örnek bir makrodur

Bu kodlar, 500 öğelik bir liste üzerinden kombinasyon ve permütasyon hesaplamaları yapacak ve sonuçları Excel'e yazdıracaktır. Ancak, 500 öğeden elde edilecek kombinasyon sayısı çok büyük olduğundan, işlem zaman alabilir ve Excel'in belleğini aşabilir.

Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

Açıklama:​

Bu kodda, N = 500 ve r = 3 (kombinasyon ve permütasyon için) belirlenmiş. Kombinasyon ve permütasyon için aynı işlem yapılacak.
Kombinasyon hesaplamak için seçilen r değeri kadar öğe birleştirilir (bu örnekte 3'lü kombinasyon).
Permütasyon da aynı şekilde hesaplanır, fakat permütasyonlarda öğe sırasının önemli olduğu unutulmamalıdır.
Sonuçlar B1 ve C1 hücrelerinden başlayarak yazdırılacaktır. Eğer yeterli hücre yoksa, yeni bir sayfa oluşturulabilir ve sonuçlar orada yazdırılabilir.

Excel'in hücre sınırları çok büyük hesaplamalarla sınırlıdır (Excel 2007 ve sonrasında 1.048.576 satır). Bu kadar büyük bir kombinasyon ve permütasyon sonucu yazdırmak ciddi bellek ve işlem gücü gerektirir. Kimi hesaplamalar Excel tarafından engellenebilir ya da işlem süreleri çok uzun olabilir.

Eğer çok büyük bir hesaplama yapmak istiyorsanız, VBA kodunu parçalara ayırarak her seferinde daha küçük kümeler üzerinde çalışmak iyi bir yaklaşım olabilir.
İlginiz için teşekkür ederim Hocam. Kodu uyguladığımda B ve C sütununa 500'ün ikili kombinasyon değerlerini aynı şekilde yazdı. resimde görüldüğü gibi. Pc 1 milyon hücreyi gayet hızlı dolduruyor. sağa doğru devam edebilir diye düşünüyorum. 10 sütunda 10 milyon hücre. 20 sütunda 20 milyon hücre.... gibiUntitled-3 copy.jpg
 
Öncelikle forumdaki değerli hocalarıma saygılar ve selamlar. Başarılarınız daim olsun. Permütasyon ve Kombinasyonlarla ilgili bir çok yazı okudum kod denemeleri yaptım. Sonuca ulaşamadım. Sizlerden yardım istemeye karar verdim.

Excel'de ,300 ya da 500 farklı değerin 3'lü ya da 4'lü ya da 5'li permüstasyon/kombinasyonunu yazdırmak istiyorum. Bazıları milyonluk bazıları milyarlık sonuçlar veriyor. Küçük değerli olan işlemlerimi bu siteden halledebiliyorum. 600 binin üstündeki sonuçları bu site gerçekleştiremiyor. Sayfa zaman aşımına uğruyor ya da çöküyor.

Örneğin 500 farklı değerim var. Bunlar isim de olabilir sayı da olabilir. "Hale, Jale, Gaye, ...vs gibi. Ya da 1, 15, 368, 500, ...vs gibi.
A1 hücresinden A500 hücresine kadar bu değerleri gir.
Değerler arasında mutlaka bir ayırıcı olmalı. 500'ün 3'lü kombinasyonu 20.708.500 bu az oldu. :)

500'ün 4 lü Kombinasyonu (2.573.031.125) B1 hücresinden B1048576 hücresine kadar yazacak,
Sonra C1 den devam edecek C sütunu bittiğinde D sütunu geçecek, bu şekilde devam edecek,.
Tüm sütunlar dolduktan sonra yeni bir sayfa açıp A Sütunundan devam edecek, ta ki işlem bitene kadar.
Permütasyon için ayrı, kombinasyon için ayrı olacak. Yardımınız için şimdiden teşekkür eder, başarılar dilerim.
Deneyiniz; N=20 için hesaplama süresine bakınız eğer yeterince hızlı ise 50 için deneyiniz n=50 için deneme yapacaksanız Set dataRange = ws.Range("A1:A20") Aralığını A1:A50 yazınız, büyük ihtimalle Excel Yanıt Vermiyor hatası alacaksınız o yüzden belirlenmiş küçük aralıklarla çalışınız. Düzenlendi harf ve rakam kombinasyonları DAHİL EDİLDİ!
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 

Ekli dosyalar

  • KOMPER.xlsm
    23.9 KB · Gösterim: 4
Son düzenleme:
Deneyiniz; N=20 için hesaplama süresine bakınız eğer yeterince hızlı ise 50 için deneyiniz n=50 için deneme yapacaksanız Set dataRange = ws.Range("A1:A20") Aralığını A1:A50 yazınız, büyük ihtimalle Excel Yanıt Vermiyor hatası alacaksınız o yüzden belirlenmiş küçük aralıklarla çalışınız. Düzenlendi harf ve rakam kombinasyonları DAHİL EDİLDİ!
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Tek kelimeyle Mükemmel. Emeğinize sağlık Hocam. Küçük aralıklı çalışmalar için net temiz ve hepsi bir arada çözüm olmuş.
(Ben istedim bir göz Allah verdi 2 göz gibi oldu :)) Bunun sadece 3'lü Kombinasyon versiyonu anlık işlem yükünü hafifletecektir ve daha geniş aralıklarla çalışmama olanak sağlayacaktır. Sadece 3'lü kombinasyonun çalıştığı şekilde yüklerseniz sonuca ulaşacağım gibi görünüyor. Her zaman orada olduğunuzu bilmek güzel...
 
Tek kelimeyle Mükemmel. Emeğinize sağlık Hocam. Küçük aralıklı çalışmalar için net temiz ve hepsi bir arada çözüm olmuş.
(Ben istedim bir göz Allah verdi 2 göz gibi oldu :)) Bunun sadece 3'lü Kombinasyon versiyonu anlık işlem yükünü hafifletecektir ve daha geniş aralıklarla çalışmama olanak sağlayacaktır. Sadece 3'lü kombinasyonun çalıştığı şekilde yüklerseniz sonuca ulaşacağım gibi görünüyor. Her zaman orada olduğunuzu bilmek güzel...
Deneyiniz; 2, 3, 4, 5, 23, 34, 45, 24, 35, 234 VE 345 İçin ayrı ayrı kod düzenlendi.
 

Ekli dosyalar

  • KOMPER.xlsm
    58.1 KB · Gösterim: 3
Son düzenleme:
Çözüm
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst