• DİKKAT

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

Excel Makro "Veya Fonksiyonu"

Katılım
18 Kasım 2012
Mesajlar
33
Excel Vers. ve Dili
Excel 2010 - İngilizce
Düzeltme:

Merhaba,

Aşağıdaki kodun işaretli bölümüne E sütundaki değerler 10, 15, 22, 73 veya 79 ise ifadesini nasıl ekleyebilirim?

Kod:
Sub Listele()
 
    Dim Sd As Worksheet, i As Byte, c As Range, Adr As Variant, sat As Long
 
    Set Sd = Sheets("Sheet1")
    
    Application.ScreenUpdating = False
    Sheets("Sheet2").Select
    Range("A2:B" & Rows.Count).Clear
 
    For i = 1 To 10
        sat = 2
        With Sd.Range("I:I")
            Set c = .Find(Cells(1, i), , xlValues, xlWhole)
            If Not c Is Nothing Then
              Adr = c.Address
                Do
                    If Sd.Cells(c.Row, "C") & "|" & Sd.Cells(c.Row, "D") = "3|2013" Then
                        Cells(sat, i) = Sd.Cells(c.Row, "A")
                        sat = sat + 1
                    End If
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> Adr
            End If
        End With
        Next i
        
        
        For j = 11 To 11
        sat = 2
        With Sd.Range("F:F")
            Set c = .Find(Cells(1, j), , xlValues, xlWhole)
            If Not c Is Nothing Then
              Adr = c.Address
                Do
[COLOR="Red"]                    If Sd.Cells(c.Row, "C") & "|" & Sd.Cells(c.Row, "D") & "|" & Sd.Cells(c.Row, "E") = "3|2013|1" Then[/COLOR]
                        Cells(sat, i) = Sd.Cells(c.Row, "A")
                        sat = sat + 1
                    End If
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> Adr
            End If
        End With
  
    Next j
 
Son düzenleme:
Benim hatam. yanlış anlattım. Şöyle düzelteyim. istedğim değerleri nasıl yazarım. yani diyelim ki 1,2,3 veya 4 değil de. 10, 15, 22, 73 veya 79 ise
 
Önemli olan değişkenlerin sayısı. Değişken sayısı fazla ise rakamları diziye alıp döngü yardımıyla çağırmak en doğrusu. Ama değişken sayısı az ise if yada select case yapıları ile de bu iş yapılabilir.
 
Önemli olan değişkenlerin sayısı. Değişken sayısı fazla ise rakamları diziye alıp döngü yardımıyla çağırmak en doğrusu. Ama değişken sayısı az ise if yada select case yapıları ile de bu iş yapılabilir.

Anladım ama işte ben o yazımı yapamadığımdan soruyorum. Değişken 4 tane olacak.
 
Kodunuzu aşağıdaki gibi düzenleyiniz.
Kod:
If [a1] = 1 Or [a1] = 2 Or [a1] = 3 Or [a1] = 4 Then
 
Merhaba, deneme yanılma yoluyla şu şekilde çözdüm :)

Kod:
For j = 11 To 11
        sat = 2
        With Sd.Range("F:F")
            Set c = .Find(Cells(1, j), , xlValues, xlWhole)
            If Not c Is Nothing Then
              Adr = c.Address
                Do
                   [COLOR="Red"] If Sd.Cells(c.Row, "C") & "|" & Sd.Cells(c.Row, "D") = "3|2013" And Sd.Cells(c.Row, "E") = "5" Or Sd.Cells(c.Row, "C") & "|" & Sd.Cells(c.Row, "D") = "3|2013" And Sd.Cells(c.Row, "E") = "11" Or Sd.Cells(c.Row, "C") & "|" & Sd.Cells(c.Row, "D") = "3|2013" And Sd.Cells(c.Row, "E") = "75" Or Sd.Cells(c.Row, "C") & "|" & Sd.Cells(c.Row, "D") = "3|2013" And Sd.Cells(c.Row, "E") = "24" Then[/COLOR]
                        Cells(sat, i) = Sd.Cells(c.Row, "A")
                        sat = sat + 1
                    End If
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> Adr
            End If
        End With
 
Geri
Üst