spacebar
Altın Üye
- Katılım
- 2 Temmuz 2009
- Mesajlar
- 545
- Excel Vers. ve Dili
- office 2019 Türkçe
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
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
sorgu = "select [Yapılması Gereken Ödeme],[Yapılacak Tarih] from [Sheet1$A1:D" & son & "] where BGS=1 order by BGS"=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)
=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);"")
=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);"")
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);"")
=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);"")
=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.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);"")
@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.Ş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]"
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