Formüldeki işlevi vba veya makro ile yapma (sıralı dolu hücre içeriği gelmesin)

Katılım
21 Şubat 2018
Mesajlar
59
Excel Vers. ve Dili
2010
Merhaba

Ekte gönderdiğim Örnek tabloya göre Sayfa1 de bulunan bilgilerde AD sütununda tarih olup olmadığını kontrol ederek, boş olması durumunda S sütunundaki makbuz numaralarını sırası ile Sayfa2 B sütununa getirmesini istiyorum. AD sütunu günlük olarak tarih girişi yapıldığından her tarih girişinde işlemi yapmasını istiyorum.

Kod:
=EĞERHATA(İNDİS(Sayfa1!$S$3:$S$10000;KÜÇÜK(EĞER(Sayfa1!$S$3:$S$10000<>"";EĞER(Sayfa1!$AD$3:$AD$10000="";SATIR(Sayfa1!$AD$3:$AD$10000)-2));SATIR($A1));1);"")
bu formül ile yapmak istediğim işlemi yapabilmekteyim fakat bunu bir hücreye tarih girilerek değişiklik olduğu takdirde 1dk gibi bekleme yapıyor bu formülü makro veya vba kodu ile yaptırma imkanımız var mı acaba ? Şuan 1200 satırlık veriyi kontrol ediyor, verilerin tamamını eklediğimde 50.000 satırın üstüne çıktığında bekleme süresi de artacak diye düşünüyorum.

https://dosya.co/pntnbnq4km95/örnek.xls.html]örnek.xls - 3.4 MB[/URL]
 
Katılım
21 Şubat 2018
Mesajlar
59
Excel Vers. ve Dili
2010
Koray hocamın formül ile yardımcı olduğu işlem hakkında vba kod ile yapabilmemi sağlamama yardımcı olurmusunuz ?
şimdiden teşekkür ederim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,731
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Dosya linki sıkıntılı sanırım. Tekrar paylaşınız.
 
Katılım
16 Aralık 2020
Mesajlar
5
Excel Vers. ve Dili
Excel 2019 İngilizce
Özür dilerim, kendi konum ile ilgili cevabı bu entry altında vermişim, silmeyi de bulamadım.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,731
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

Aşağıdaki kodu boş bir modüle uygulayınız.

C++:
Option Explicit

Sub Aktar()
    Dim Baglanti As Object, Kayit_Seti As Object, Sorgu As String, Zaman As Double
    
    Zaman = Timer
    
    Application.ScreenUpdating = 0
    Application.Calculation = -4105
    
    Set Baglanti = CreateObject("AdoDb.Connection")
    Set Kayit_Seti = CreateObject("AdoDb.Recordset")

    Sheets("Sayfa2").Range("B5:B" & Rows.Count).ClearContents

    Baglanti.Open "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & _
    ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;Hdr=No"""
    
    Sorgu = "Select F2 From [Sayfa1$R3:AD] Where Not Isnull(F2) And Isnull(F13)"
    
    Kayit_Seti.Open Sorgu, Baglanti, 1, 1
    
    If Kayit_Seti.RecordCount > 0 Then
        Sheets("Sayfa2").Range("B5").CopyFromRecordset Kayit_Seti
        Application.Calculation = -4135
        Application.ScreenUpdating = 1
        MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & _
               "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
    Else
        Application.Calculation = -4135
        Application.ScreenUpdating = 1
        MsgBox "Uygun veri bulunamadı!", vbInformation
    End If
    
    If Kayit_Seti.State <> 0 Then Kayit_Seti.Close
    If Baglanti.State <> 0 Then Baglanti.Close
    
    Set Kayit_Seti = Nothing
    Set Baglanti = Nothing
End Sub

Aşağıdaki kodu ise Sayfa2'nin kod bölümüne uygulayınız. Sayfa2'yi tıkladığınızda kod otomatik olarak çalışacaktır.

C++:
Option Explicit

Private Sub Worksheet_Activate()
    Call Module1.Aktar
End Sub
 
Katılım
21 Şubat 2018
Mesajlar
59
Excel Vers. ve Dili
2010
Koray hocam denedim ama AD sütununa tarih girilenleri de getiriyor.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,248
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Veri tabanı olarak (Access) kullanmanızı tavsiye ederim.Onda tarih sütununa string giremezsiniz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,731
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Paylaştığınız dosyada şimdi tekrar denedim. Bende sorun olmuyor. Tarih girilenler listelenmiyor.
 
Katılım
21 Şubat 2018
Mesajlar
59
Excel Vers. ve Dili
2010
Paylaştığınız dosyada şimdi tekrar denedim. Bende sorun olmuyor. Tarih girilenler listelenmiyor.
Özür dilerim hocam hata benden kaynaklanmış AD den önce sütun eklediğim için AE olmuş verdiğiniz kodda AD ve F13 kısmını değiştirince oldu. çok teşekkür ederim verdiğiniz kod istediğim gibi çalışıyor elinize sağlık.

son birşey daha sorayım hocam size ben bu sayfa2 yi şifreli olarak kullanıyorum. o zaman kod çalışmıyor debug hatası veriyor, bunun için birşey yapabilir miyim ? sadece B sütunun hücre kilidini açsam yeterli olur mu ?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,731
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyin bakalım olacak mı..
 
Üst