• DİKKAT

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

Sayfadaki hücrelere farklı değer atama

Katılım
18 Kasım 2011
Mesajlar
406
Excel Vers. ve Dili
excel 2016 türkçe
iyi günler aşağıda verdiğim kodla istediğim sayıları rastgele çekiyorum.Benim istediğim bu sayıları bir sayfada farklı yerlerde rastgele çekerken aynı sayfada aynı rastgele sayılar gelmesin istiyorum nasıl yapabilirim acaba?



Kod:
=İNDİS(B3:B28;RASTGELEARADA(1;BAĞ_DEĞ_DOLU_SAY(B3:B28));1)
 
Aynı sayfadaki belirli yerler sabit midir? Formülle olur mu bilmiyorum ama makroyla bir döngü içine sokulup önceden kullanılanların seçilmemesi sağlanabilir. Bunun için de hangi hücrelere sayı verileceğinin önceden bilinmesi gerekir.
 
Hangi 15 hücre?
 
A10-A30 arasındaki sayılar C6,F6,I6,L6,C12,F12,I12,L12,C18,F18,I18,L18 örneğin
 
Aşağıdaki kodları bir modüle kopyalayıp deneyiniz:

Kod:
Sub rastgele()
Dim x1 As Variant
x1 = Array("C6", "F6", "I6", "L6", "C12", "F12", "I12", "L12", "C18", "F18", "I18", "L18")

For j = 6 To 18 Step 6
    For k = 3 To 12 Step 3
10:
    sayı = WorksheetFunction.RandBetween(1, WorksheetFunction.CountA([A10:A30]))
        For bak = 0 To UBound(x1)
            If Range(x1(bak)) = sayı Then
            GoTo 10
            Else
            Cells(j, k) = sayı
            bak = UBound(x1)
            End If
        Next
    Next
Next
    
End Sub
 
hocam kod olarak yapamaz mıyız?Eğitim programı hazırlıyorum orada kullanıcam ve hiç modül kullanmadım.Kod ile belirttiğim şekilde benzersiz dağıtma olmaz mı?
 
E bu kod zaten? Kod derken başka bir şey mi kastediyorsunuz?

Modül denilen (ya da benim kastettiğim) şey Alt+F11 ile ya da sayfa ismine sağ tıklayıp Kod görüntüle diyerek açtığınız kod sayfasında Insert Menusunden Module'yi seçerseniz açılan sayfadır. Makroların genellikle modüllerde olması istenir. Özellikle birden fazla sayfada çalışacak makroların modülde olması daha iyi oluyor.
 
Yani direk hücreye yapıştırıp kullanabildiğimiz bir formülü kastetmiştim hocam ,öyle olabilir mi bu işlem?
 
Daha önce başka başlıklarda da belirtmiştim: "Bu sitede imkansız diye bir şey olmadığını öğrendim". Bana kalsa formülle yapılamaz ama böyle olduğunu düşündüğüm bir çok problemin çözüldüğünü gördüm. Çözüm var mıdır bilemem, varsa da benim bulmam için kırk fırın ekmek yemem gerekir (ki son zamanlarda ekmeği bayağı azalttım :) )
 
Kullanıcı tanımlı fonksiyon şeklinde yapılabilir diye düşünüyorum.
 
Fonksiyonu sayfada, başında eşittir "=" olmadan,x(b3:b28;c3:c50) şeklinde kullanın.
Aşağıdaki kodu sayfanın kod kısmına;
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim VAlani As String
Dim FAlani As String
    If Left(Target.Text, 1) = "x" Then
    a = Target.Text
    b = InStr(1, a, ";")
    c = Len(a)
    VAlani = Replace(Split(a, ";")(0), "x(", "")
    FAlani = Replace(Split(a, ";")(1), ")", "")
    Target = x(VAlani, FAlani)
    End If
End Sub
Aşağıdaki kodu bir Module içine ekleyin.
Kod:
Function x(VeriAlani As String, FormulAlani As String)
    sutun = Split(Split(Range("" & VeriAlani & "").Address, ":")(0), "$")(1)
    b = Split(Split(Range("" & VeriAlani & "").Address, ":")(0), "$")(2)
    s = Split(Split(Range("" & VeriAlani & "").Address, ":")(1), "$")(2)
10

    Randomize

    x0 = Cells(Int((s - b + 1) * Rnd + b), sutun)
    x1 = WorksheetFunction.CountIf(Range(CStr(FormulAlani)), x0)
    If x1 = 0 Then x = x0 Else GoTo 10
    x = x0
End Function
 

Ekli dosyalar

Geri
Üst