• DİKKAT

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

Koşullu Düşeyarama yardımı

  • Konbuyu başlatan Konbuyu başlatan siar
  • Başlangıç tarihi Başlangıç tarihi
Katılım
11 Mart 2005
Mesajlar
201
Excel Vers. ve Dili
2007 TR
Herkese Merhabalar

Ekli dosyada da görülebileceği üzere, iki sayfadan oluşan bir belgem var. Bu belgede 1 numaralı sayfada müşterilerin isimleri ve telefon numaraları var. 2 numaralı sayfada müşterilerin arama bilgileri mevcut. Yapmak istediğim şey, 2 numaralı sayfaya müşterileri aradıktan sonra yazdığımız bilgilerden sadece o ismi en son hangi tarihte aradığımızın 1. sayfadaki listede ilgili ismin karşısına yazdırmak. Şimdiden teşekkürlerimle
 
Selamlar,

Örnek dosyanızda M sütununu tarih olarak biçimlendirdikten sonra, M3 hücresine aşağıdaki formülü "CTRL+SHIFT+ENTER" tuş kombinasyonu ile uygulayın.

Kod:
=DOLAYLI("AllCalls!A"&MAK(EĞER(AllCalls!$B$2:$B$9=B3;SATIR(AllCalls!$B$2:$B$9))))
 
Teşekkür ederim sn. Cost Control. Bu uygulama çok işime yaradı. Saygılarımla,
 
Son düzenleme:
Galiba bu sorunumun çözümü makrolarda olacak çünkü, 1300 satırdan oluşan Source sayfası ve 7000 satırdan oluşan AllCalls sayfasında formülü denediğimde çok güzel çalıştı lakin, herhangi bir işlem yapmaya çalıştığımda, HESAPLANAN HÜCRELER %5 ile başlayarak excel 10 dk. kadar listeyi güncellemeye çalışıyor. Bu kodu makro haline getirebilir miyiz acaba? Teşekkürlerimle,
 
Selamlar,

Bu durumda kod kullanmak daha mantıklı olacaktır. Aşağıdaki kodu kullanabilirsiniz.

Kod:
Sub SON_ARAMA_TARİHLERİNİ_LİSTELE()
    Set S1 = Sheets("Source")
    S1.[M3:M65536] = ""
    For X = 3 To S1.[B65536].End(3).Row
    Adres = S1.Cells(X, 2).Address
    Son_Arama_Tarihi = Evaluate("=INDIRECT(""AllCalls!A"" & MAX(IF(AllCalls!$B$2:$B$65536=" & Adres & ",ROW(AllCalls!$B$2:$B$65536))))")
    Cells(X, "M") = CDate(Son_Arama_Tarihi)
    Next
    Set S1 = Nothing
    MsgBox "MÜŞTERİLERİ SON ARAMA TARİHLERİ LİSTELENMİŞTİR.", vbInformation
End Sub
 
"Type mismatch" hatası veriyor. Bir yerde yanlış mı yapıyorum acaba?
 
Selamlar,

Ekte örnek dosyanızda gerekli düzenlemeyi yaptım ve kodu çalıştırdım. Eğer sizde yine çalışmazsa hata veren satırı belirtirseniz düzeltmeye çalışırım.
 
herkese selamlar
buna benzer bende birşey soracağım iş.xls sayfasında A sütunuda hücre değeri T olanların c sütunundaki karşığı olan sayıyı yani a1 de T varsa c1 deki sayıyı deneme.xls sayfasında B14 hücresine vede numaraların arasına - değeri koyarak örnek 3325-5666-65447-23564 şeklinde yapmak için nasıl bir fonksiyon kullanmak lazımdır.şimdiden tşk ler
 
Son düzenleme:
Herkese Merhabalar

Ekli dosyada da görülebileceği üzere, iki sayfadan oluşan bir belgem var. Bu belgede 1 numaralı sayfada müşterilerin isimleri ve telefon numaraları var. 2 numaralı sayfada müşterilerin arama bilgileri mevcut. Yapmak istediğim şey, 2 numaralı sayfaya müşterileri aradıktan sonra yazdığımız bilgilerden sadece o ismi en son hangi tarihte aradığımızın 1. sayfadaki listede ilgili ismin karşısına yazdırmak. Şimdiden teşekkürlerimle

Control+shift+enter...

Source, M3:

=MAX(IF(AllCalls!$B$2:$B$9=B3,AllCalls!$A$2:$A$9))

=MAK(EĞER(AllCalls!$B$2:$B$9=B3;AllCalls!$B$2:$B$9))
 
İlginize teşekkür ederim. Fakat formülle bu işi yapamıyorum. Çünkü çok fazla veri olduğu için formülerin hesaplanması 10 dk. yı buluyor. Makroyla bu işi çözmem lazım ama Sn. Cost Control'ün verdiği makroda hatayla karşılaşıyorum. Acaba nerede yanlış yapıyorum. Teşekkürlerimle,
 
Selamlar,

Ekte örnek dosyanızda gerekli düzenlemeyi yaptım ve kodu çalıştırdım. Eğer sizde yine çalışmazsa hata veren satırı belirtirseniz düzeltmeye çalışırım.

Selamlar,

Sanırım mesajım gözünüzden kaçtı. Kodu çalıştırdığınızda hangi satırda hata mesajı alıyorsunuz belirtirmisiniz.
 
Merhabalar evet mesajınız gözümden kaçmış, afedersiniz. Şöyle bir durum oluşuyor. Source sayfasına yeni isimler ilave edilmiş durumda ve bu isimler AllCalls sayfasında henüz yer almıyor. Bundan dolayı formül AllCalls sayfasında Source da okuduğu değeri bulamadığı için Type Mismatch hatası veriyor. O isimlerin karşılığı boş kalabilir. Örneği ekte bilgilerinize sunuyorum. Teşekkürlerimle.
 
Selamlar,

Dosyanızdaki kodu aşağıdaki ile değiştirip denermisiniz.

Kod:
Sub SON_ARAMA_TARİHLERİNİ_LİSTELE()
    Set S1 = Sheets("Source")
    S1.[M3:M65536] = ""
    For X = 3 To S1.[B65536].End(3).Row
    Adres = S1.Cells(X, 2).Address
    Son_Arama_Tarihi = Evaluate("=INDIRECT(""AllCalls!A"" & MAX(IF(AllCalls!$B$2:$B$65536=" & Adres & ",ROW(AllCalls!$B$2:$B$65536))))")
    If IsError(Son_Arama_Tarihi) Then
    Cells(X, "M") = "YENİ MÜŞTERİ"
    Else
    Cells(X, "M") = CDate(Son_Arama_Tarihi)
    End If
    Next
    Set S1 = Nothing
    MsgBox "MÜŞTERİLERİ SON ARAMA TARİHLERİ LİSTELENMİŞTİR.", vbInformation
End Sub
 
Çok fazla birşey söylemeye gerek yok. Süpersiniz!
Teşekkürler
 
Herkese Merhabalar

Ekli dosyada da görülebileceği üzere, iki sayfadan oluşan bir belgem var. Bu belgede 1 numaralı sayfada müşterilerin isimleri ve telefon numaraları var. 2 numaralı sayfada müşterilerin arama bilgileri mevcut. Yapmak istediğim şey, 2 numaralı sayfaya müşterileri aradıktan sonra yazdığımız bilgilerden sadece o ismi en son hangi tarihte aradığımızın 1. sayfadaki listede ilgili ismin karşısına yazdırmak. Şimdiden teşekkürlerimle

ARANDI'nın 1 olması arama koşullarından biri mi?

Ve...

=MAK(EĞER(AllCalls!$B$2:$B$9=B3;AllCalls!$B$2:$B$9))

çok zaman alan bir formül mü?
 
Geri
Üst