eğer formülü makro yap

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

  • 19 KB Görüntüleme: 40
Son düzenleme:
Katılım
27 Temmuz 2004
Mesajlar
719
Excel Vers. ve Dili
Excel 2003 Tr
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
 
Katılım
3 Haziran 2005
Mesajlar
77
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
 
Katılım
27 Temmuz 2004
Mesajlar
719
Excel Vers. ve Dili
Excel 2003 Tr
Bu makroyu sayfa2 de çalıştırırsanız dediğiniz şeyi yapıyor.
 
Katılım
3 Haziran 2005
Mesajlar
77
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

fedeal

Banned
Katılım
29 Mayıs 2008
Mesajlar
1,985
Excel Vers. ve Dili
2003 tr
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.
 
Katılım
27 Temmuz 2004
Mesajlar
719
Excel Vers. ve Dili
Excel 2003 Tr
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?
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,472
Excel Vers. ve Dili
Office 2010 & 2013 tr
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

fedeal

Banned
Katılım
29 Mayıs 2008
Mesajlar
1,985
Excel Vers. ve Dili
2003 tr
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.
 
Katılım
27 Temmuz 2004
Mesajlar
719
Excel Vers. ve Dili
Excel 2003 Tr
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ü?
 
Üst