• DİKKAT

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

İf içinde birden fazla şart sorgulama.

Katılım
26 Kasım 2012
Mesajlar
67
Excel Vers. ve Dili
Office 2016 / Türkçe
Kod:
If (Cells(dongu, 3) >= tarih1 And Cells(dongu, 3) <= tarih2) Then Cells(dongu2, 32) = Cells(dongu, 3)

Herkese merhabalar.Benim sorum yukarıdaki kodda sadece iki şart konulmuş.3. sütundaki tari1 ve tarih2 aralığındaki şarta uyan veriler listeleniyor.
Benim istediğim bununla beraber 4. sütunda ve 5. sütunda şart arasın.Şöyle devam edeyim diyorum ama olmuyor. If (Cells(dongu, 3) >= tarih1 And Cells(dongu, 3) <= tarih2) and Cells(dongu,4) = ahmet )and Cells(dongu, 5) = manav) Then Cells(dongu2, 32) = Cells(dongu, 3)

4. sütunu Ahmet olan 5. sütunu manav olan ve iki tarih aralığındaki veriye uyumlu satırı bulsun ilgili yere yazsın.

Umarım anlatabilmişimdir. Yardımlarınızı bekliyorum.
 
Merhaba.

Aşağıdaki gibi deneyin.
Tırnak işaretlerine ve parantezlere dikkat.
.
Kod:
If Cells(dongu, 3) >= tarih1 And Cells(dongu, 3) <= tarih2 And Cells(dongu, 4) = "ahmet" And Cells(dongu, 5) = "manav" Then Cells(dongu2, 32) = Cells(dongu, 3)
 
Mümkündür

Örnek

Her iki şartın olması durumunda AND, herhangi biri için OR

=IF((AND(C2>=20, D2>=30)), "Başarılı", "Değil")
 
Sn Ömer bey sıkıntım şu ikinci bir and koyduğumda kod şöyle bir hata veriyor.
compile error.

Expected : Then or Go To


Bir daha deniyorum özür dilerim tam dikkatli bakamamışım mesajınıza..
 
Son düzenleme:
Koşulları parantez içine almayıp, AND ile birbirine bağlamanız (eşitlik için aradığınız kriterler belli bir metin ise çift tırnak arasında yazmanız, hücredeki veriye eşitlik arıyorsanız da hücre adresini belirtmeniz halinde sorun olmaması gerekir.

Aslında sorunuzu örnek belge ile destekleseydiniz, ilk cevap ile ihtiyacınız görülmüş olurdu diye düşünüyorum.
.
 
Çok teşekkür ederim Ömer bey Sorunumu çözdünüz. Parantezleri dikkate almamışım.Parantez içine yazdığımda AND leri çoğaltabildik.
Benim kredi kartı harcamalarımı tuttuğum bir dosyam var İki farklı kredi kartı kullanıyorum kendi hesap özetimle bankanınkini karşılaştırıyorum. 2 Adet kart kullanıyorum.Kart diye bir değişken tanımlayıp üçüncü koşulu da onu sorgulattım ve ve kart ismine göre tarih aralığını listeliyor. Kullanmak isteyenler için de kodu buraya ekliyorum.
Tekrar teşekkür ederim. Emeklerinize sağlık.
Kod:
Private Sub CommandButton1_Click()

Dim ilk
Dim son
Dim tarih1
Dim tarih2
Dim dongu
Dim dongu2
Dim kart
Calculate

kart = Cells(3, 34)
ilk = 7
son = 36565
tarih1 = Cells(3, 35)
tarih2 = Cells(3, 36)
For dongu = ilk To son
dongu2 = Range("af1000000").End(3).Row + 1
If (Cells(dongu, 3) >= tarih1 And Cells(dongu, 3) <= tarih2 And Cells(dongu, 6) = kart) Then Cells(dongu2, 32) = Cells(dongu, 3)
If (Cells(dongu, 3) >= tarih1 And Cells(dongu, 3) <= tarih2 And Cells(dongu, 6) = kart) Then Cells(dongu2, 33) = Cells(dongu, 4)
If (Cells(dongu, 3) >= tarih1 And Cells(dongu, 3) <= tarih2 And Cells(dongu, 6) = kart) Then Cells(dongu2, 34) = Cells(dongu, 5)
If (Cells(dongu, 3) >= tarih1 And Cells(dongu, 3) <= tarih2 And Cells(dongu, 6) = kart) Then Cells(dongu2, 35) = Cells(dongu, 6)
If (Cells(dongu, 3) >= tarih1 And Cells(dongu, 3) <= tarih2 And Cells(dongu, 6) = kart) Then Cells(dongu2, 36) = Cells(dongu, 7)
If (Cells(dongu, 3) >= tarih1 And Cells(dongu, 3) <= tarih2 And Cells(dongu, 6) = kart) Then Cells(dongu2, 37) = Cells(dongu, 8)
If (Cells(dongu, 3) >= tarih1 And Cells(dongu, 3) <= tarih2 And Cells(dongu, 6) = kart) Then Cells(dongu2, 38) = Cells(dongu, 9)
If (Cells(dongu, 3) >= tarih1 And Cells(dongu, 3) <= tarih2 And Cells(dongu, 6) = kart) Then Cells(dongu2, 39) = Cells(dongu, 10)
If (Cells(dongu, 3) >= tarih1 And Cells(dongu, 3) <= tarih2 And Cells(dongu, 6) = kart) Then Cells(dongu2, 40) = Cells(dongu, 11)
'If Cells(dongu, 3) >= tarih1 And Cells(dongu, 3) <= tarih2 And Cells(dongu, 4) = "ahmet" And Cells(dongu, 5) = "manav" Then Cells(dongu2, 32) = Cells(dongu, 3)



Next dongu
Calculate
MsgBox "İŞLEM TAMAM..."
End Sub
 
Merhaba.

son = 36565 şeklinde değil de son = [C65536].End(3).Row şeklinde kullanmanızı öneririm.
Böylece döngüyü, 36565'inci satıra kadar değil C sütunundaki son dolu satıra kadar çalıştırmış olursunuz.
 
Geri
Üst