Soru Birden çok excel dosyasında bulunan tarih aralığı dışında kalan tarihleri listeleme

schlecht

Altın Üye
Katılım
13 Kasım 2009
Mesajlar
337
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Merhaba, elimde 100 e yakın excel dosyası var. Her excelin içinde ortalama 20 sayfa bulunmakta. Excel dosyaları aynı klasörün içinde. Excelin içindeki verilerde tarihler var.
Belirli bir tarih aralığı dışında kalan tarihlerin dosya ve sayfa numaraları rapor çeklinde almam gerekiyor. Ekteki dosyalar ile anlatmaya çalıştım.

İyi günler, iyi çalışmalar.
 

Ekli dosyalar

schlecht

Altın Üye
Katılım
13 Kasım 2009
Mesajlar
337
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
İyi akşamlar, fikri olan var mı? Yapılabilir bir şey mi ?
 

schlecht

Altın Üye
Katılım
13 Kasım 2009
Mesajlar
337
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Herkese iyi günler, formda aramalarım sonucunda biraz gelişme kaydettim. Bir kaç sorum olacak.
Ektedi örnekte,

strPath = "c:\MyFolder"
dosya yolu belirtilitor. Bunu seçimli hale getirebilirmiyiz. Dosya yolu sabit değil.

strSearch = "Specific text"
aranacak kelime, konu başlığında da belirttiğim üzere 2 tarih arasında olmayan tarihleri bulmam gerekiyor ancak aramalarım sonucunda bununla ilgili bir sonuç elde edemedim. (Tarihler belirli bir sütün ya da satırda değil. )
 

Ekli dosyalar

schlecht

Altın Üye
Katılım
13 Kasım 2009
Mesajlar
337
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
İyi günler,
Tarih aralığı listeleme ile ilgili bir gelişme kaydedemedim.

strSearch = "Specific text" sadece kelime buluyor. Tarih aralığı değilde sadece tüm tarihleri bulması konusunda yardımlarınızı rica ediyor. Tarih formatı gg.aa.yyyy
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Merhaba.

3 numaralı mesajda yer alan;
"strPath = "c:\MyFolder"
dosya yolu belirtilitor. Bunu seçimli hale getirebilirmiyiz.
"
şeklinde, sonunda soru işareti olmayan sorunuzu cevaplamak için bu mesajı yazıyorum.

Bu isteğiniz için; dosyanızda mevcut kod'daki strPath = "c:\MyFolder" satırının yerine aşağıdaki iki satırı ekleyin.
Rich (BB code):
Set ObjFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Klasör seçin !!!", &H100)
    strPath = ObjFolder.Items.Item.Path
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Önce bundan önceki mesajımı okuyunuz.

Bir konuda fikrimi belirteyim:
-- konu açılış mesajına eklediğiniz örnek belgelerde tarihlerin bulunduğu sütunlar aynı
-- ancak 3 numaralı cevabınızda tarihlerin belirli bir satır veya sütunda olmadığını belirtmişsiniz.
-- alan belli olmayınca ve koşulunuz da "verilen tarih aralığında olmayan tarihler" olduğuna göre burada şöyle bir sıkıntı var;
>> diyelim küçük tarih (H2) 01.01.2018, bu durumda 01.01.1900'den başalanarak her bir günün tarihinin,
herbir dosya, herbir dosyadaki herbir sayfada tek tek aranmasını istiyorsunuz anlamı çıkıyor.
>> diyelim büyük tarih (I2) 31.01.2018, bu durumda 01.02.2018'den Ms.Excel versiyonuna göre 31.12.9999 tarihine kadarki herbir günün tarihinin,
herbir dosya, herbir dosyadaki herbir sayfada tek tek aranmasını istiyorsunuz anlamı çıkıyor.
Çünkü CTRL+F yöntemiyle bildiğim kadarıyla ...'den küçük veya büyük diye arama yapılamıyor, aramanın belli bir tarihe göre yapılması gerekiyor.

>> Oysa tarihler sabit bir sütunda olmasa bile "başlığı şu olan sütun" gibi başlık sınırlaması olsa işlem biraz daha kolaylaşır.
Tarihlerin yer aldığı sütunun başlığı (hangi satırda olduğunun önem yok elbette) belli olsa, tek tek tarih aramak yerine bu başlığı taşıyan sütunda FİLTRE uygulanıp sonuca daha hızlı ulaşılabilir diye düşünüyorum.
Kanaatimce bir başlangıç tarihi (mümkün olduğunca H2 hücresindeki tarihe yakın) ve bir de bitiş tarihi (mümkün olduğunca I2 hücresindeki tarihe yakın) sınırlaması eklenmelidir.

Yoksa, H2 ve I2'de olduğunu varsaydığım, yukarı belirttiğim tarihlere göre; aranması gereken tarih adeti 3 Milyona yakın oluyor.
Yaklaşık 3 Milyon adet değer için, seçeceğiniz klasörde olduğunu belirttiğiniz 20'şer sayfalık 100 adet belgede bu arama
yaklaşık 6 Milyar arama yapar.

Bence soruyu biraz daha makul hale getirmek için yukarıda belirttiğim sınırlamaları eklemelisiniz.
Yoksa "oluşturdum" diyebileceğim kodu vermenin bir anlamı yok bence.
Kolay gelsin.
.
 
Son düzenleme:

schlecht

Altın Üye
Katılım
13 Kasım 2009
Mesajlar
337
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Ömer Bey cevabınız için teşekkür ederim, strSearch = "Specific text" koduyla klasör içindeki tüm excellerde aranan kelimeyi bulabiliyorum. Tarih aralığı aratmak yerine tüm gg.aa.yyyy formatlı tarihleri bulup daha sonra süzmenin daha kolay olabileceği düşüncesi ile 4 numaralı mesajımı yazdım. Sanırım kelime bulmak tarih bulmaktan daha kolay ve basit. Aranan kelime gibi tarih olan hücre 20 sayfalık 100 excel dosyasının herhangi bir hücresinde olabiliyor sabit değil maselsef.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Sanırım anlatamadım; strSearch = "Specific text" şeklinde aramada belli bir kelimeyi arıyorsunuz.
Oysa sorunuzda aranacak tarih/tarihler belli değil.

Sorunuz, şu iki tarih arasında olan tarihleri içeren belge/sayfa/hücre adresi bulunsun şeklinde olsaydı halledilebilir bir soru sormuş olurdunuz.
Oysa siz şu iki tarih arasında olmayan tarihler dediğinizde başı ve sonu belli olmayan milyonlarca sayıda tarih için ilgili belge/sayfa/hücre adresi bulunsun istiyorsunuz.
Bir önceki mesajımı bir kez daha okumanızı ve üstünde düşünmenizi söylemekten başka bir şey yazamıyorum.
.
 

schlecht

Altın Üye
Katılım
13 Kasım 2009
Mesajlar
337
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Ömer Hocam soruyu ilk sorduğumda başlıktaki gibiydi evet ama araştırmalarım sonucu dediğiniz gibi başı sonu olmayan tarihler olduğunu az çok anladım. 4. mesajda "Tarih aralığı değilde sadece tüm tarihleri bulması " diye bir fikir geldi aklıma sanırım olmadı. Peki sizinde dediğiniz gibi tarih aralığı olsa ve tarih aralığını geniş tutsak 01.01.1900 - 01.01.2030 gibi olabilir mi? İnanın 7. mesajı dikkatlice okudum. Son yazdıklarımda mantıksız ise kusura bakmayın, Saygılar.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Estağfurullah, "kusur"luk bir durum yok.
Aranacak tarih adeti arttığında makronun verimliliği düşecektir diye düşünüyorum.
Şimdilik iki tarih arasında kalan ve arama alanına ilişkin satır/sütun sınırlaması olmayan makro kod'u içeren belgeyi göndereyim.

Ekli belgedeki makronun performansına bakıp;
daha önce başlangıç ve bitiş tarih sınırlaması ve/veya BAŞLIK kriteri ile ilgili önerilerimi bir kez daha düşünün derim.
 

Ekli dosyalar

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Önce bu cevaptan önceki cevabımı ve ekindeki belgeyi (iki tarih arasında olanlar listeleniyor) deneyiniz.
Bir deneme de bu cevaba eklediğim belgede var.
Bu cevaba eklediğim belgede ise asıl istediğiniz duruma uygun (iki tarih arasında olmayanlar listeleniyor) bir kodlama var.

Bu cevabımın ekindeki belgede; seçilen klasördeki herbir belgenin, herbir sayfasındaki dolu alandaki herbir hücre için, tarih biçiminden hareketle ve büyük/küçük kontrolü yapılarak istediğiniz gibi iki tarih arasında olmayanlar listeleniyor.

Belgedeki kod'a bakarsanız iki adet sınırlama ekledim (kilitlenme/aşırı bekleme durumuna tedbir olarak);
-- bunlardan biri klasörde kontrol edilen belge adetine ilişkin kontrol (kod'da kitapadet >=100)
-- ikincisi de ana belgeye yazılan satır adeti (kod'da sat>=1000)ile ilgili sınırlama.
Bu sayıları, gerçek işlemlerinizdeki veri yoğunluğuna ve makronun performansına göre değiştirebilirsiniz
Ekteki belgeyi deneyiniz.

NOT: Eklediğim belgedeki bir sorun nedeniyle eki sildim, gün içerisinde yenisini yüklerim.
 
Son düzenleme:
Üst