AccessTr.neT

Tam Versiyon: Userform Dan Excel Hücresindeki Değeri Belirli Bir Aralığa Göre Hesaplatma.
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2 3 4
Normalde bende kod yazmıştım ve silmiştim berduş hocanın kodu kısa olduğu için ve kafa karışmasın diye.

Mantıken kod ile fitil sayı birer birer artırınca 400-450 aralığı varsa çözülüyordu yoksa ikinci şart aranıyordu.Yani bence fitil sayısını 2 den başltıp artırarak uygun değeri bulmak daha iyi gibi geliyor fikir açısından.
(20/09/2021, 23:23)berduş yazdı: [ -> ]14. mesajdaki kodu yeniden düzenlemiştim deneyebildiniz mi?

@berduş hocam 5000 cephe * açılır 2600 değerlerini girdiğimde kod 6 fitil sayısı (458) hesaplaması gerekiyorken 7 fitil sayısı ( 381 ) olarak sonucunu veriyor. 14. mesajı düzenlemiştiniz diye hatırlıyorum. Yedekten kontrol ettim, yanlış yedeği silmediysem 14.mesajdaki kod değişmemiş gözüküyor. Velhasıl kelam 400-450 aralığı olmazsa 450 - 480 aralığından 450 ye en yakın değeri getirsin diye konuşmuştuk. Maalesef şu anda çok farklı bir sonuç getirdi.
If xDgr = 0 Then xDgr = xMin
If xDgr > 480 Then xDgr = xMax
galiba bu 2 satırların yerlerini karıştırmışım)

Set S1 = Sheets("Pergole")
yC8 = S1.Range("C8").Value
xB21 = Int((yC8 + 225) / 450) - 1 '<== eklenen
xB22 = Int((yC8 + 225) / 400) + 1
For xB = xB21 To xB22
xSon = (yC8 - 175) / (xB - 1)
If xSon > 450 Then
xMin = xB
ElseIf xSon < 400 Then
xMax = xB
Else
xDgr = xB
Exit For
End If
Next xB
If xDgr = 0 Then xDgr = xMin
If xDgr > 480 Then xDgr = xMax
S1.Range("B21").Value = xDgr
@berduş hocam çok teşekkür ederim.
rica ederim
iyi çalışmalar
Alternatif olabilir abey.

Function R21Bul() As Integer
    Dim i As Long, sonuc As Integer
    Dim rg21 As Range, rg22 As Range
   
    Const donguSayisi As Integer = 2000
   
    With ThisWorkbook.Worksheets("Pergole")
        Set rg21 = .Range("B21"): Set rg22 = .Range("B22")
        For i = 2 To donguSayisi
            rg21.Value = i
            If rg22.Value >= 400 And rg22.Value <= 450 Then
                sonuc = i: GoTo var
            ElseIf rg22.Value < 400 Then
                sonuc = i - 1: Exit For
            End If
        Next i
       
        For i = sonuc To donguSayisi
            rg21.Value = i
            If rg22.Value > 450 Then
              sonuc = i: Exit For
            End If
        Next i
       
var:
        R21Bul = sonuc
    End With
End Function
Sayfalar: 1 2 3 4