• DİKKAT

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

If ..... Then kod kısaltma

  • Konbuyu başlatan Konbuyu başlatan tamer42
  • Başlangıç tarihi Başlangıç tarihi

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,201
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
aşağıdaki kodda;
IF satırınında 6 tane AND bağlacı mevcut, bu şekilde kod çok kullanışlı olmuyor,
bu satırı daha kısa olarak yazmanın bir yöntemi olabilir mi?

Teşekkürler, iyi akşamlar.


Kod:
Dim WS As Worksheet
Dim arr As Variant
Dim LR As Long
Dim i As Long
Dim x As Double, k As Byte

 k = 2

    Set WS = ActiveSheet
    LR = WS.Cells(WS.Rows.Count, "B").End(xlUp).row
    arr = WS.Range("K2:M" & LR).Value
    
    deg1 = arr(1, 1)
    deg2 = arr(1, 2)
    deg3 = arr(1, 3)

For i = LBound(arr, 1) To UBound(arr, 1)

   If arr(i, 1) >= deg1 - k And arr(i, 1) <= deg1 + k _
                    And arr(i, 2) >= deg2 - k And arr(i, 2) <= deg2 _
                            And arr(i, 3) >= deg3 - k And arr(i, 3) <= deg3 + k Then
    
                   x = x + 1
    End If
Next i
 
IF satırını daha kısa bir şekilde yazmanız mümkündür. Aşağıda, AND bağlayıcıları kullanmadan IF satırını nasıl kısaltabileceğiniz örneklendirilmiştir:
If deg1 - k <= arr(i, 1) <= deg1 + k And deg2 - k <= arr(i, 2) <= deg2 And deg3 - k <= arr(i, 3) <= deg3 + k Then x = x + 1 End If
Bu şekilde IF satırını daha kısa ve okunabilir hale getirebilirsiniz.
Deneyin
 
IF satırını daha kısa bir şekilde yazmanız mümkündür. Aşağıda, AND bağlayıcıları kullanmadan IF satırını nasıl kısaltabileceğiniz örneklendirilmiştir:
If deg1 - k <= arr(i, 1) <= deg1 + k And deg2 - k <= arr(i, 2) <= deg2 And deg3 - k <= arr(i, 3) <= deg3 + k Then x = x + 1 End If
Bu şekilde IF satırını daha kısa ve okunabilir hale getirebilirsiniz.
Deneyin
Desteğiniz için teşekkürler,
iyi Çalışmalar
 
Hocam birde böyle denermisiniz.
Kod:
Dim WS As Worksheet
Dim arr As Variant
Dim LR As Long
Dim i As Long
Dim ii As Long
Dim x As Double, k As Byte

 k = 2

    Set WS = ActiveSheet
    LR = WS.Cells(WS.Rows.Count, "B").End(xlUp).Row
    arr = WS.Range("K2:M" & LR).Value
    
    deg1 = arr(1, 1)
    deg2 = arr(1, 2)
    deg3 = arr(1, 3)

For i = LBound(arr, 1) To UBound(arr, 1)
For ii = 1 To 3
   If arr(i, ii) >= deg & ii - k And arr(i, ii) <= deg & ii + k Then
    
                   x = x + 1
    End If
Next ii
Next i
 
Geri
Üst