• Merhaba Ziyaretçi,
    Microsoft 365 Uygulamaları ile ilgili yeni haberler, dikkat çekici konular, ilgi ile takip edeceğiniz yazılar için.

    Abone Olun
  • ESTE - Microsoft Office Eğitimleri

    Yeni yıl Microsoft Office Eğitim planlarınız için bütçenizi oluşturmadan önce ESTE eğitim kalitesi ile tanışın. 🙌
    Kullanıcıların ihtiyacı olan yazılı materyal, dosya ve video kaynağı desteğimiz ile tüm ofis çalışanlarının iş süreçlerini rahatlatacak eğitimler planlayın. 🎯
    Microsoft Office eğitimlerimiz hakkında detaylı bilgi için bize ulaşın.

    👉 Microsoft Office Eğitim Talebi

Çözüldü Permütasyon Hesabı

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

chris

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
17
En iyi yanıt
0
Puanları
3
Yaş
42
Konum
İzmir
Merhaba,

İngilizce alfabedeki harflerden ve rakamlardan oluşan 3 karakterli kaç adet sözcük yazılır? 125 12b 11a aae aj8 vs gibi. Tüm listeyi alabileceğimiz bir makro yazılabilir mi?
Şimdiden teşekkürler.
 

Ali Kırksekiz

Yeni Üye
Katılım
28 May 2018
Mesajlar
13
En iyi yanıt
0
Puanları
3
Konum
Sivas
Ad Soyad
Ali Kırksekiz
Office Vers.
Office 2013
3 harfli olarak kodlardan uyarladım.

Kod:
Sub GetString()
    Dim xStr As String
    Dim FRow As Long
    Dim xScreen As Boolean
    xScreen = Application.ScreenUpdating
    Application.ScreenUpdating = False
    xStr = Application.InputBox("Metni giriniz.:", "Hesaplama", , , , , , 2)
    If Len(xStr) < 2 Then Exit Sub
    If Len(xStr) >= 4 Then
        MsgBox "Çok fazla permütasyon var!", vbInformation, "Hesaplama"
        Exit Sub
    Else
        ActiveSheet.Columns(1).Clear
        FRow = 1
        Call GetPermutation("", xStr, FRow)
    End If
    Application.ScreenUpdating = xScreen
End Sub
Sub GetPermutation(Str1 As String, Str2 As String, ByRef xRow As Long)
    Dim i As Integer, xLen As Integer
    xLen = Len(Str2)
    If xLen < 2 Then
        Range("A" & xRow) = Str1 & Str2
        xRow = xRow + 1
    Else
        For i = 1 To xLen
            Call GetPermutation(Str1 + Mid(Str2, i, 1), Left(Str2, i - 1) + Right(Str2, xLen - i), xRow)
        Next
    End If
End Sub
 

chris

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
17
En iyi yanıt
0
Puanları
3
Yaş
42
Konum
İzmir
@Ali Kırksekiz, Merhaba Ali Bey,

Öncelikle cevabınız için teşekkürler. Kod doğru bir şekilde çalışıyor ancak belirttiğiniz gibi sadece 3 lü permütasyon yapabiliyor.
a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, r, s, t, u, v, y, z, w, x harflerinin ve 0 1 2 3 4 5 6 7 8 9 rakamlarının oluşturduğu 3 karakterli kelimelerin listesine ihtiyacım var.
Bunun için çok mu uzun kod yazımı gerekiyor bilemediğim için soruyorum. Eğer yapılabiletesi varsa çok memnun olurum.

Teşekkürler.
 

Ali Kırksekiz

Yeni Üye
Katılım
28 May 2018
Mesajlar
13
En iyi yanıt
0
Puanları
3
Konum
Sivas
Ad Soyad
Ali Kırksekiz
Office Vers.
Office 2013
Aşağıdaki kodları dener misiniz.
Kod:
Option Explicit
Sub Permutation()
    Dim harflersayılar() As String
    Dim Sonuclar() As String
    Dim olasıklar As Long
    Dim i As Long, j As Long
    Dim duzenle As Range
Set duzenle = Range("A1")
olasıklar = 26 * 26 * 9
ReDim harflersayılar(1 To olasıklar, 1 To 3)
ReDim Sonuclar(1 To olasıklar * 3, 1 To 2)
For i = 1 To olasıklar Step olasıklar / 26
    For j = 1 To olasıklar / 26
        harflersayılar(i - 1 + j, 1) = Chr(Int(i / (olasıklar / 26)) + 65)
    Next j
Next i
For i = 1 To olasıklar Step 9
    For j = 1 To 9
        harflersayılar(i - 1 + j, 2) = Chr(Int(i / 9) Mod 26 + 65)
    Next j
Next i
For i = 1 To olasıklar
    harflersayılar(i, 3) = (i - 1) Mod 9 + 1
Next i
For i = 1 To olasıklar
    Sonuclar(i, 1) = harflersayılar(i, 1) & harflersayılar(i, 2) & harflersayılar(i, 3)
Next i
For i = 1 + olasıklar To olasıklar * 2
    Sonuclar(i, 1) = harflersayılar(i - olasıklar, 1) & harflersayılar(i - olasıklar, 3) & harflersayılar(i - olasıklar, 2)
Next i
For i = 1 + olasıklar * 2 To olasıklar * 3
    Sonuclar(i, 1) = harflersayılar(i - olasıklar * 2, 3) & harflersayılar(i - olasıklar * 2, 1) & harflersayılar(i - olasıklar * 2, 2)
Next i
duzenle.EntireColumn.Clear
Set duzenle = duzenle.Resize(rowsize:=UBound(Sonuclar, 1))
duzenle = Sonuclar
End Sub
 

chris

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
17
En iyi yanıt
0
Puanları
3
Yaş
42
Konum
İzmir
@Ali Kırksekiz,
P(35,3): 39270 sonuç çıkması lazım ama 18252 çıkıyor. a91 veya aaz gibi sonuçlar listeye yansımamış.
 

Ali Kırksekiz

Yeni Üye
Katılım
28 May 2018
Mesajlar
13
En iyi yanıt
0
Puanları
3
Konum
Sivas
Ad Soyad
Ali Kırksekiz
Office Vers.
Office 2013
Murat Bey'in dosyasını indirip bakar mısınız.
 

Ekli dosyalar

  • Permütasyon ve Kombinasyon.xls
    128 KB · Görüntüleme: 34

chris

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
17
En iyi yanıt
0
Puanları
3
Yaş
42
Konum
İzmir
Dosya çok güzel. Murat Bey'in ellerine sağlık.
Ancak metin girişi bölümüne 35 karakter giriş yapabilir miyiz acaba?
 

Murat OSMA

Yönetici
Site Yöneticisi
Katılım
25 May 2018
Mesajlar
1,504
En iyi yanıt
13
Puanları
113
Konum
İstanbul
Web sitesi
excelarsivi.com
Ad Soyad
Murat OSMA
Office Vers.
Office 365 TR+EN
TextBox'ı seçin Properties penceresinin MaxLength özelliği vardır, yanlış hatırlamıyorsam 20 yazıyor olması lazım, onu 35 yapabilirsiniz.
 

chris

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
17
En iyi yanıt
0
Puanları
3
Yaş
42
Konum
İzmir
@Admin, Merhaba,

İnanır mısınız 1 saattir arıyorum ama dediğiniz bölümü bulamadım :( Rica etsem degişikliği yapılmamış dosyayı ekleseniz çok makbule geçer.
 

chris

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
17
En iyi yanıt
0
Puanları
3
Yaş
42
Konum
İzmir
Olur tabi ki iyi geceler diliyorum.

Teşekkürler.
 

Murat OSMA

Yönetici
Site Yöneticisi
Katılım
25 May 2018
Mesajlar
1,504
En iyi yanıt
13
Puanları
113
Konum
İstanbul
Web sitesi
excelarsivi.com
Ad Soyad
Murat OSMA
Office Vers.
Office 365 TR+EN
@chris, resimde görebilirsiniz.
Eğer soldaki Properties penceresi görünmüyor ise, F4 tuşuna basabilir ya da View menüsüden Properties Window'u seçebilirsiniz.

maxlength-min.png
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst Alt