indiste sıralama sorunu

Katılım
2 Temmuz 2009
Mesajlar
542
Excel Vers. ve Dili
office 2019 Türkçe
Altın Üyelik Bitiş Tarihi
28/12/2022
değerli üstadlarım günaydın. İndis formülü ile getirmiş olduğum değerlerin tarih sırasına göre gelmesini amaçlıyorum. formülde nasıl bir ek yapmam gerekiyor. yardımlarınız için şimdiden teşekkürler.
 

Ekli dosyalar

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Formülle nasıl düzeltilir bilemedim ama makroyla isterseniz aşağıdaki makroyu deneyiniz:

PHP:
Sub tarihler()
Set s1 = Sheets("Sheet1")
son = s1.Cells(Rows.Count, "D").End(3).Row
eski = s1.Cells(Rows.Count, "I").End(3).Row

If eski > 1 Then s1.Range("H2:I" & eski).ClearContents

Set con = VBA.CreateObject("adodb.Connection")
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""

sorgu = "select [Yapılması Gereken Ödeme],[Yapılacak Tarih] from [Sheet1$A1:D" & son & "] where [BGS]=1"
Set RS = con.Execute(sorgu)
s1.[H2].CopyFromRecordset RS

End Sub
 
Katılım
2 Temmuz 2009
Mesajlar
542
Excel Vers. ve Dili
office 2019 Türkçe
Altın Üyelik Bitiş Tarihi
28/12/2022
Yusuf bey teşekkür ederim ilginize. çalışmada formüllü çözüm daha uygun olacak. ayrıca bu kodlarda görevleri tarih sırasına göre vermemiş aynı formüldeki gibi geliyor.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
sorgu satırını aşağıdakiyle değiştirip deneyin:

sorgu = "select [Yapılması Gereken Ödeme],[Yapılacak Tarih] from [Sheet1$A1:D" & son & "] where BGS=1 order by BGS"
 
Katılım
2 Temmuz 2009
Mesajlar
542
Excel Vers. ve Dili
office 2019 Türkçe
Altın Üyelik Bitiş Tarihi
28/12/2022
olmadı üstad. tarih sıralamalı gelmiyor. teşekkür ederim ilginize.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Şunu dener misiniz:

sorgu = "select [Yapılması Gereken Ödeme],[Yapılacak Tarih] from [Sheet1$A1:D" & son & "] where BGS=1 order by [Yapılacak Tarih]"
 

Korhan Ayhan

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

D2;
C++:
=EĞER(YADA(VE(GÜN(C2)=GÜN($M$1);AY(C2)=AY($M$1));VE(GÜN(C2)=GÜN($M$2);AY(C2)=AY($M$2)));C2+SATIR()/1000;0)
Alttakiler dizi formüldür.

H2;
C++:
=EĞERHATA(İNDİS($B$2:$D$21;KAÇINCI(KÜÇÜK(EĞER($D$2:$D$21>0;$D$2:$D$21);SATIR(A1));$D$2:$D$21;0);1);"")
I2;
C++:
=EĞERHATA(İNDİS($B$2:$D$21;KAÇINCI(KÜÇÜK(EĞER($D$2:$D$21>0;$D$2:$D$21);SATIR(A1));$D$2:$D$21;0);2);"")
 
Katılım
2 Temmuz 2009
Mesajlar
542
Excel Vers. ve Dili
office 2019 Türkçe
Altın Üyelik Bitiş Tarihi
28/12/2022
tamam Yusuf44 üstad oldu sorunsuz çalışıyor. ellerinize sağlık. ama formüllü çözümü öğrenmek isterim.
 
Katılım
2 Temmuz 2009
Mesajlar
542
Excel Vers. ve Dili
office 2019 Türkçe
Altın Üyelik Bitiş Tarihi
28/12/2022
Alternatif;

D2;
C++:
=EĞER(YADA(VE(GÜN(C2)=GÜN($M$1);AY(C2)=AY($M$1));VE(GÜN(C2)=GÜN($M$2);AY(C2)=AY($M$2)));C2+SATIR()/1000;0)
Alttakiler dizi formüldür.

H2;
C++:
=EĞERHATA(İNDİS($B$2:$D$21;KAÇINCI(KÜÇÜK(EĞER($D$2:$D$21>0;$D$2:$D$21);SATIR(A1));$D$2:$D$21;0);1);"")
I2;
C++:
=EĞERHATA(İNDİS($B$2:$D$21;KAÇINCI(KÜÇÜK(EĞER($D$2:$D$21>0;$D$2:$D$21);SATIR(A1));$D$2:$D$21;0);2);"")
Korhan Bey üstad ellerinize sağlık mükemmel çalışıyor. teşekkür ederim. tüm üstadlara sağlıklı günler dilerim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu formüller D sütununa ihtiyaç duymuyor.

Dizi formüldür.

H2;
C++:
=EĞERHATA(İNDİS($B$2:$D$21;KAÇINCI(KÜÇÜK(EĞER(($C$2:$C$21>=$M$1)*($C$2:$C$21<=$M$2);$C$2:$C$21+SATIR($C$2:$C$21)/1000;"");SATIR(A1));$C$2:$C$21+SATIR($C$2:$C$21)/1000;0);1);"")
I2;
C++:
=EĞERHATA(İNDİS($B$2:$D$21;KAÇINCI(KÜÇÜK(EĞER(($C$2:$C$21>=$M$1)*($C$2:$C$21<=$M$2);$C$2:$C$21+SATIR($C$2:$C$21)/1000;"");SATIR(A1));$C$2:$C$21+SATIR($C$2:$C$21)/1000;0);2);"")
 
Katılım
2 Temmuz 2009
Mesajlar
542
Excel Vers. ve Dili
office 2019 Türkçe
Altın Üyelik Bitiş Tarihi
28/12/2022
Bu formüller D sütununa ihtiyaç duymuyor.

Dizi formüldür.

H2;
C++:
=EĞERHATA(İNDİS($B$2:$D$21;KAÇINCI(KÜÇÜK(EĞER(($C$2:$C$21>=$M$1)*($C$2:$C$21<=$M$2);$C$2:$C$21+SATIR($C$2:$C$21)/1000;"");SATIR(A1));$C$2:$C$21+SATIR($C$2:$C$21)/1000;0);1);"")
I2;
C++:
=EĞERHATA(İNDİS($B$2:$D$21;KAÇINCI(KÜÇÜK(EĞER(($C$2:$C$21>=$M$1)*($C$2:$C$21<=$M$2);$C$2:$C$21+SATIR($C$2:$C$21)/1000;"");SATIR(A1));$C$2:$C$21+SATIR($C$2:$C$21)/1000;0);2);"")
Korhan Bey bu çözüm daha mükemmel oldu. yardımcı sütuna gerek kalmadı. teşekkür ederim. ellerinize sağlık.
 
Katılım
2 Temmuz 2009
Mesajlar
542
Excel Vers. ve Dili
office 2019 Türkçe
Altın Üyelik Bitiş Tarihi
28/12/2022
Şunu dener misiniz:

sorgu = "select [Yapılması Gereken Ödeme],[Yapılacak Tarih] from [Sheet1$A1:D" & son & "] where BGS=1 order by [Yapılacak Tarih]"
@YUSUF44 Yusuf bey merhaba. çalışmayı formülle yapmayı düşünüyordum ama hem makrolu hem formüllü yapmaya karar verdim. Korhan Beyin formüllerini uyguladım. ona yazım düzenini ekledim. ancak kodda bunu yapamadım. sanırım Application.Proper(cell) kullanmamız gerekiyor. bunu kodların neresine eklememiz gerekiyor. teşekkür ederim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ek bir makro ile veriler üzerinde YAZIM.DÜZENİ fonksiyonunu uygulatabilirsiniz.

Kod içindeki Alan tanım adresini dilediğiniz gibi değiştirebilirsiniz.

C++:
Option Explicit

Sub Yazim_Duzeni_Uygula()
    Dim Alan As Range, Veri As Range
    
    Set Alan = Range("B2:B21")
    
    For Each Veri In Alan
        If Veri.Value <> "" Then
            Veri.Value = WorksheetFunction.Proper(Veri.Value)
        End If
    Next
    
    Set Alan = Nothing
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Katılım
2 Temmuz 2009
Mesajlar
542
Excel Vers. ve Dili
office 2019 Türkçe
Altın Üyelik Bitiş Tarihi
28/12/2022
Korhan Bey teşekkür ederim. ellerinize sağlık.
 
Üst