• DİKKAT

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

algoritması verilmiş macro yazılacak??

Katılım
27 Mayıs 2009
Mesajlar
4
Excel Vers. ve Dili
2007
arkdaşlar merhaba vb bilgim yok denecek kadar az heleki birde excel ile birleşince kafam iyice mahfoldu:( size göstermeye çalıştığım resimdeki algoritmasının macrosunu yazmam istendi ama birtürlü yazamadım:( lütfen bana yardımcı olur musunuz?? yanlış anlamayın bu bir ödev yada sınav sorusu değil yani işin içinde herhangibir hile yok... ilgileriniz için şimideden teşekkür ederim

gldnclksoru.jpg
 
yani buna şöle başlıyoruz falan ama gerisi gelmiyor karıştırıp duruyorum...

dim bos,i,j as integer , adet as integer=adet kadar

adet= range (" "&5).value

dim s(adet) as integer

for i = 1 to adet.... diyoruz ve gerisinde neler yapıcam hangileri iç içe döngü olacak falan hani amacımız en büyük yada en küçük sayıyı bulmak olsa bunu nasıl bulucaz:( lütfen yardm arkdaşlar yarına gerekiyor bu macro:(
 
Algoritmanın kodları aşağıdaki gibi olabilir.
Kod:
Sub DENE()
    Dim s(1 To 5) As Integer
    Dim adet As Integer, bos As Integer
    adet = 5
    s(1) = 8: s(2) = 13: s(3) = 25: s(4) = 20: s(5) = 4
    i = 1

5
    j = i + 1

10
    If s(i) < s(j) Then
        GoTo 20
    Else
        bos = s(i)
        s(i) = s(j)
        s(j) = bos
    End If

20
    If j < adet Then
        j = j + 1
        GoTo 10
    End If

    If i < adet - 1 Then
        i = i + 1
        GoTo 5
    End If

    i = 1

30
    If i <= adet Then
        MsgBox s(i)
        i = i + 1
        GoTo 30
    End If

    End

End Sub
 
teşekkür ederim bunu yazdım yani sizin verdiğinizi denedim sayıları küçük bi pencerede tamam tamam butonuna basacak şekilde sıraladı en son 25i gösterdi:)
bide bnim range kullanmam istendi şimdi peki o nasıl olucak bende bir yandan deniyorumda mesela
s [j] = bos yaptığımda bunu kabul ediyor fakat
if s > s[j] than şu ifadeyi bi türlü kabul etmedi hep kırmızı ve hata veriyo yani benim yazmaya çalıştığımda şöleydi buna bi bakar mısın rica etsem neresi hatalıdır yada bu doğrumdur düzeltilebilir mi acaba??

Dim bos, i, j As Integer
Dim adet As Integer
adet = Range("r" & 5).Value
Dim s(adet) As Integer
For i = 1 To adet
s = Range("d" & 4).Value
Next i
For i = 1 To adet - 1
For j = i + 1 To adet
if s > s[j] than
bos = s
s=s[j]
s [j] = bos
Next j
Next i
 
1. Köşeli parantez vb de kullanılmaz, başka programlama dillerinde olabilir.

2. Kodlarda
Adet R5 hücresinden okunur.
Veriler D5 hücresinden aşağı doğru adet kadar okunur.
Kod:
Sub DENE()
    Dim adet As Integer, bos As Integer
    adet = Range("r" & 5).Value
    ReDim s(1 To adet) As Integer

    For i = 1 To adet
        s(i) = Range("d" & i + 4).Value
    Next i

    i = 1

5
    j = i + 1

10
    If s(i) < s(j) Then
        GoTo 20
    Else
        bos = s(i)
        s(i) = s(j)
        s(j) = bos
    End If

20
    If j < adet Then
        j = j + 1
        GoTo 10
    End If

    If i < adet - 1 Then
        i = i + 1
        GoTo 5
    End If

    i = 1

30
    If i <= adet Then
        MsgBox s(i)
        i = i + 1
        GoTo 30
    End If

    End

End Sub
 
gerçekten çok teşekkür ederim veysel emre arkadaşım:):) inşallah bende birgün sizlere yardımcı olabilirim:) minnettarım:)
 
Geri
Üst