• DİKKAT

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

KAÇINCI fonksiyonun VBasic 6 karşılığı Hk.

  • Konbuyu başlatan Konbuyu başlatan axion
  • Başlangıç tarihi Başlangıç tarihi
Katılım
21 Şubat 2006
Mesajlar
44
Excel Vers. ve Dili
2010 Türkçe
Merhaba Arkadaşlar.
dim Dizi(6) as double
Dizi(0)=-20.07
Dizi(1)=-10.08
Dizi(2)=-0.05
Dizi(3)=30.11
Dizi(4)=50.13
Dizi(5)=100.21
Dizi(6)=141.1

şeklinde bir dizimiz var. Benim istediğim bu dizide aradığım değere en yakın alt ve üst değerleri bulmak.

Mesala 14.95 sayısını dizide arattığımda bana
AltDeger=-0.05
ÜstDeger=30.11
olarak bulsun

Kısacası aradığım deger hangi iki deger aralığında yada hangi degere eşit

Bu işlemi Excel kullanmadan Visual Basic 6 ile hazırladığım paket programda kullanacağım. Excelde KAÇINCI (ingilizcesi MATCH) fonksiyonu ile enyakın Alt ve enyakın ÜST değerleri bulabiliyorum. Fakat Visual Basic 6.0 da MATCH fonksiyonunun karşılığı yada fonksiyonun içeriği ile ilgili bilgi bulamadım.

Bana bu konuda yardım edermisiniz.

EXCEL ile alakalı olmadığını düşünebillirsiniz. Fakat umuyorum ki excel deki bu fonksiyonu başka program dilinde uygun bir fonksiyon vardır diye düşünüyorum.

Yardımlarınız için şimdiden teşekkürler...
 
Kod:
Dim Temp As Variant, X As Integer
Sub EnYakinDegerleriBul()
b = InputBox("Sayıyı Gir")
Dim Dizi(7) As Double
Dizi(0) = -20.07
Dizi(1) = -10.08
Dizi(2) = -0.05
Dizi(3) = 30.11
Dizi(4) = 50.13
Dizi(5) = 100.21
Dizi(6) = 141.1
Dizi(7) = b
SortArray Dizi
For i = 0 To UBound(Dizi)
If Dizi(i) = b Then
MsgBox b & " Rakamından Önceki Değer= " & Dizi(i - 1) & "'dir."
MsgBox b & " Rakamından Sonraki Değer= " & Dizi(i + 1) & "'dir."
End If
Next
End Sub

Aşağıdaki kod alıntıdır.
http://www.freevbcode.com/ShowCode.asp?ID=3197
Kod:
Public Function SortArray(ByRef TheArray As Variant)
Sorted = False
Do While Not Sorted
    Sorted = True
For X = 0 To UBound(TheArray) - 1
    If TheArray(X) > TheArray(X + 1) Then
        Temp = TheArray(X + 1)
        TheArray(X + 1) = TheArray(X)
        TheArray(X) = Temp
        Sorted = False
    End If
Next X
Loop
End Function
 
Arkadaşım tek kelimeyle harikasın.

İnan bana bu çözümü gördükten sonra kafamı duvarlara vurasım geldi. Böylesine basit bir yöntemi nasıl olurda düşenemedim diye hayıflandım durdum. Nasıldır bilirsin "Kaçak Balık Hep Büyük Olur."

Neyse yardımın için sana çok teşekkür ederim. Umarım bu yönteme ihtiyacı olanların fydalanmasına vesile olmuşumdur.
 
Geri
Üst