• DİKKAT

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

eğer formülü makro yap

  • Konbuyu başlatan Konbuyu başlatan silka
  • Başlangıç tarihi Başlangıç tarihi
Katılım
3 Haziran 2005
Mesajlar
77
ARKADAŞLAR AŞAĞIDAKİ FORMÜL İÇİN Bİ MAKRO YAPILABİLİRMİ FORMÜL ÇOK KASIYO ÇÜNKÜ BEN USERFORMDA Bİ PROGRAM YAPTIM ONUN İÇİNE KOYMAYI DÜŞÜNÜYORUM YARDIMCI OLURSANIZ SEVİNİRİM.

=EĞER(TOPLA.ÇARPIM(--(Rapor!$E:$E=$F101);--(Rapor!$F:$F=T$1))>0;"ALDI";"")
 

Ekli dosyalar

  • 1.xls
    1.xls
    19 KB · Görüntüleme: 40
Son düzenleme:
Aşağıdaki kodlar işinizi görecektir. i değişkeninin üst sınırını değiştirerek uygulayabilirsiniz.
Kod:
Sub Makro1()
For k = 16 To 20
For i = 1 To [COLOR=red][B]10
[/B][/COLOR]a = Cells(i, "F")
b = Cells(1, k)
With Sheets("Sayfa1").Range("E:E")
    Set c = .Find(a, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
        If c.Offset(0, 1) = b Then say = say + 1
        Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With
Cells(i, k).Value = IIf(say > 0, "ALDI", "")
Next
Next
End Sub
 
arkadaşım eline sağlık ama bu şekilde değil sayfa 1 deki hem isim hemde ayı bulup sayfa 2 de isminin karşısındaki ay kısmına aldı yazacak
 
Bu makroyu sayfa2 de çalıştırırsanız dediğiniz şeyi yapıyor.
 
kusura bakmayın ama hayır üstadım örnekte olduğu gibi olmasını istiyorum sizin yapmış olduğunuz başka bir veri girdiğimde veya başka bir ay olduğunda olmuyor
 

Ekli dosyalar

yapıyor ancak tanımlı değerlerde hata olmuş,

Sub yu()
Sheets("sayfa2").Range("q2:t1000").Value = ""
For i = 2 To Sheets("sayfa2").Range("f65536").End(xlUp).Row
For k = 1 To Sheets("sayfa1").Range("e65536").End(xlUp).Row
If Sheets("sayfa2").Range("f" & i).Value = Sheets("sayfa1").Range("e" & k).Value And Sheets("sayfa2").Range("q1").Value = Sheets("sayfa1").Range("f" & k).Value Then Sheets("sayfa2").Range("q" & i).Value = "aldı"
If Sheets("sayfa2").Range("f" & i).Value = Sheets("sayfa1").Range("e" & k).Value And Sheets("sayfa2").Range("r1").Value = Sheets("sayfa1").Range("f" & k).Value Then Sheets("sayfa2").Range("r" & i).Value = "aldı"
If Sheets("sayfa2").Range("f" & i).Value = Sheets("sayfa1").Range("e" & k).Value And Sheets("sayfa2").Range("s1").Value = Sheets("sayfa1").Range("f" & k).Value Then Sheets("sayfa2").Range("s" & i).Value = "aldı"
If Sheets("sayfa2").Range("f" & i).Value = Sheets("sayfa1").Range("e" & k).Value And Sheets("sayfa2").Range("t1").Value = Sheets("sayfa1").Range("f" & k).Value Then Sheets("sayfa2").Range("t" & i).Value = "aldı"
Next
Next
End Sub

kırmızı kodlar son dolu satırı temsil ediyor orda a sütununun son satırına göre yazarsa ve siz a sütununu boş bırakırsanız calışmaz. bu hali çalışacaktır.
 
Sn. fedeal hocam şu noktada benim aklıma şu soru geliyor. Benim yazdığım kodla sizin yazdığınız kodu karşılaştırırsanız, hangisi daha hızlı çalışır?
 
Selamlar,
Farklı bir yöntem kullandım. Alternatif olarak düşünülebilir. Sayfa makrosu kullandım. Veriyi girdiğiniz anda kod çalışır.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [F3:F65536]) Is Nothing Then Exit Sub
Set s1 = Sheets("Sayfa1")
For x = 1 To s1.[e65536].End(3).Row
    If Target = s1.Cells(x, "e") Then
        For y = 16 To Cells(1, 256).End(1).Column
            If s1.Cells(x, "f") = Cells(1, y) Then
                Cells(Target.Row, y) = "Aldı"
            End If
        Next
    End If
Next
End Sub
 

Ekli dosyalar

Sn. fedeal hocam şu noktada benim aklıma şu soru geliyor. Benim yazdığım kodla sizin yazdığınız kodu karşılaştırırsanız, hangisi daha hızlı çalışır?

Sayın Janveljan kodlarınızı incelememiştim gerçekten güzel hatta bu kodları yazdıgımda sizin cevap verdiginizi görüp yazmamıştım sonra problem oldugunu düşünüp ekledim saygısızlık gibi algıladıysanız özürdilerim kod yazmayı yeni ögrenen biri olarak bunu yapmam. Saygılar.
 
Sayın Janveljan kodlarınızı incelememiştim gerçekten güzel hatta bu kodları yazdıgımda sizin cevap verdiginizi görüp yazmamıştım sonra problem oldugunu düşünüp ekledim saygısızlık gibi algıladıysanız özürdilerim kod yazmayı yeni ögrenen biri olarak bunu yapmam. Saygılar.
Estagfirullah saygısızlık olarak algılamadım kesinlikle. Bu konuyu gerçekten merak ettiğim için sormuştum soruyu. Örnek olarak 1000. satırda olan bir değeri Find işlemi mi daha çabuk bulur yoksa 1 den 1000 e kadar giden bir döngü mü?
 
Geri
Üst