Önceki makalede bahsettiğim gibi (bkz: Excel'de Kelimenin Harflerini Alfabetik Sıralamak (Excel VBA)) bir youtube videosunun altına gelen bir excel sorusunu buradan çözmek için bu makaleyi hazırlıyorum.
Önceli makalede nasıl yeni bir modül ekleyebileceğimizi ve bu modül içerisinde fonksiyon yazarak excel arayüzünden bu fonksiyonu çağırıp kullanabileceğimizi gördük. Bu yazıda da yeni bir VBA fonksiyonu yazacağız ve yazdığımız fonksiyonun görevi, referans aldığı hücredeki yazının harflerini rastgele olarak sıralamak olacak. Ek olarak önceki çözümde küçük büyük harf ayrımına girmemiştim ama bu fonksiyonda yeniden sıralanmış tüm harfler aynı zamanda küçük harfe dönüştürülmüş olacak.
Function siralaRastgele(yazi)
On Error Resume Next
n = Len(yazi)
yaziYeni = ""
Do
i = Int(Rnd() * n) + 1
c = Mid(yazi, i, 1)
If c <> "*" Then
yaziYeni = yaziYeni & c
yazi = Replace(yazi, c, "*", , 1)
End If
Loop Until Len(yaziYeni) = n
siralaRastgele = LCase(yaziYeni)
End Function
Not: B sütununda önceki makalede paylaştığım alfabetik sıralama fonksiyonunu kullandım. D sütununda ise harfleri rastgele sıralaması amacıyla kodladığımız siralaRastgele fonksiyonunu kullandım. Beklendiği gibi B sütunundaki tüm sıralamalar aynı olurken D sütunundaki sıralamalar rassal oldukları için her seferinde farklı bir sonuç aldık. C sütununda B sütununda kullandığım formülleri; E sütununda da D sütununda kullandığım formülleri görebilirsiniz (bkz: Excel'de Formülleri Toplu Olarak Görüntülemek).
VBA ekranı görüntüsü: