Son dolu hücreye göre satırlara sıralı formül yazdırma

Gold_Savt

Altın Üye
Katılım
5 Mart 2010
Mesajlar
227
Excel Vers. ve Dili
Ofis 2010 TR 32 Bit
Altın Üyelik Bitiş Tarihi
01-02-2025
Merhaba arkadaşlar;
8 . satırdan başlayan
Sheets("Veri").Range("EA8:EA1000").FormulaLocal = "=D8+C8"
Sheets("Veri").Range("EE8:EE1000").FormulaLocal = "=F8+G8"
Sheets("Veri").Range("EZ8:EZ1000").FormulaLocal = "=AB8+AC8"
..
..
Formüller dizisini VBA olarak oluşturdum.

Her seferinde 8.satırdan 1000. satıra kadar bu hücrelerini yazdırmak yerine
B sütundaki doluluk durumuna göre sınırlandırabilir miyim.

Örneğin son dolu hücre B50 ise orada forül kopyalamayı sonlandırabilir miyim?
B sütunundaki son dolu hücrenin satırına kadar formül yazsın kısaca.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Aşağıdaki kod A sütununda en son dolu hücreyi bularak B sütununun 8. satırdan itibaren 1 den başlayarak formül yazdırır.
Siz kendinize göre gerekli değişiklikleri yapınız.

Kod:
Sub Makro1()
    
    Dim i   As Long
    
    i = Cells(Rows.Count, "A").End(3).Row
    
    Range("B8").Formula = "=ROW(A1)"
    Range("B8:B" & i).FillDown
    
End Sub
 

Gold_Savt

Altın Üye
Katılım
5 Mart 2010
Mesajlar
227
Excel Vers. ve Dili
Ofis 2010 TR 32 Bit
Altın Üyelik Bitiş Tarihi
01-02-2025
Bu hatanın kaynağı ne olabilir? Birinci formülüm kopyalandı. İkincisi kopyalanmadı.
Kod:
'Çalıştı
    Sheets("Veri").Range("EA8").Formula = "=D8+C8 "
    Sheets("Veri").Range("EA8:EA" & i).FillDown

    'Çalışmadı:
    Sheets("Veri").Range("EB8").Formula = "=EĞER(W8=""tahsilat"";Z8;0)"
    Sheets("Veri").Range("EB8:EB" & i).FillDown
 

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
Aşağıdaki gibi olmalı sanıyorum:

Sheets("Veri").Range("EB8").Formula = "=IF(W8=""tahsilat"",Z8,0)"
 

Gold_Savt

Altın Üye
Katılım
5 Mart 2010
Mesajlar
227
Excel Vers. ve Dili
Ofis 2010 TR 32 Bit
Altın Üyelik Bitiş Tarihi
01-02-2025
Bir türlü çalıştıramadım hocam malesef.
Kod:
    Dim f As Long       '(i harfi aynı makro içinde vardı. o yüzden f yazdım)
    f = Sheets("Veri").Cells(Rows.Count, "B").End(3).Row
    'Çalışıyor'
    Sheets("Veri").Range("EA8").Formula = "=D8+C8 "
    Sheets("Veri").Range("EA8:EA" & f).FillDown
    
    'Çalışmıyor'
    Sheets("Veri").Range("EB8").Formula = "=IF(W8=""tahsilat"";Z8;IF(W8=""makbuz"";AA8;0)"
    Sheets("Veri").Range("EB8:EB" & f).FillDown
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Formülü aşağıdaki gibi yazarak deneyin.

Sheets("Veri").Range("EB8").Formula = "=IF(W8=""tahsilat"",Z8,IF(W8=""makbuz"",AA8,0))"

.
 

Gold_Savt

Altın Üye
Katılım
5 Mart 2010
Mesajlar
227
Excel Vers. ve Dili
Ofis 2010 TR 32 Bit
Altın Üyelik Bitiş Tarihi
01-02-2025
Teşekkür ederim Ömer Bey;
Şu haliyle çalışan bir kodumuz var. Her seferinde, her satırın altına aşağıdaki ifadeyi yazmak zorunda mıyım.
Yazılacak satır sayısı fazla olduğu için soruyorum.
"Sheets("Veri").Range("EB8:EB" & f).FillDown"
 

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
Bir önceki mesajımdaki formülle sizin verdiğiniz formülü karşılaştırırsanız nerede hata yaptığınızı göreceksiniz ;)
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Teşekkür ederim Ömer Bey;
Şu haliyle çalışan bir kodumuz var. Her seferinde, her satırın altına aşağıdaki ifadeyi yazmak zorunda mıyım.
Yazılacak satır sayısı fazla olduğu için soruyorum.
"Sheets("Veri").Range("EB8:EB" & f).FillDown"
FillDown kullanmadan aşağıdaki gibi de yazılabilir.

Sheets("Veri").Range("EB8:EB" & f).Formula = "=IF(W8=""tahsilat"",Z8,IF(W8=""makbuz"",AA8,0))"

.
 

Gold_Savt

Altın Üye
Katılım
5 Mart 2010
Mesajlar
227
Excel Vers. ve Dili
Ofis 2010 TR 32 Bit
Altın Üyelik Bitiş Tarihi
01-02-2025
Ömer Bey; bazı yerlerde formül yerine Ekte belirttiğim gibi " #AD? " şeklinde hatalı ifadeler geliyor. Hücre içine girip çıkınca formülü düzeltiyor kendi kendine. Bunu nasıl aşabiliriz.


Yusuf Bey; "Bir nokta, gözü kör eder" diye bir darbı mesel vardır eskilrden. Hatamı farkedince aklıma o geldi :)
 

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
Ömer Bey; bazı yerlerde formül yerine Ekte belirttiğim gibi " #AD? " şeklinde hatalı ifadeler geliyor. Hücre içine girip çıkınca formülü düzeltiyor kendi kendine. Bunu nasıl aşabiliriz.


Yusuf Bey; "Bir nokta, gözü kör eder" diye bir darbı mesel vardır eskilrden. Hatamı farkedince aklıma o geldi :)
Birinci paragrafın cevabı ikinci paragrafınızda gizli ;)

Bu vesileyle öğrendiğim şey formülü makroda tamamen ingilizce terim ve dizilimle yazmak gerektiği. İngilizcesi düzgün olunca Türkçesi de düzgün luyor.
 

Gold_Savt

Altın Üye
Katılım
5 Mart 2010
Mesajlar
227
Excel Vers. ve Dili
Ofis 2010 TR 32 Bit
Altın Üyelik Bitiş Tarihi
01-02-2025
Yusuf Bey; haklısınız, "ve" bağlacını türkçe kullandığımdan kaynaklanıyormuş.
Demek ki bu gün "VBA da asla türkçe formül kullanma" dersini öğrenmiş oldum.
 
Son düzenleme:

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Kullandığınız kodları yazar mısınız.
 

Gold_Savt

Altın Üye
Katılım
5 Mart 2010
Mesajlar
227
Excel Vers. ve Dili
Ofis 2010 TR 32 Bit
Altın Üyelik Bitiş Tarihi
01-02-2025
Ömer Bey;
Sheets("Veri").Range("EM8").Formula = "=IF(VE(L8>0,EC8>0),L8,IF(VE(L8>0,ED8>0),4,0))" şeklinde yazmıştım. #AD? hatası geliyordu.
Sheets("Veri").Range("EM8").Formula = "=IF(and(L8>0,EC8>0),L8,IF(and(L8>0,ED8>0),4,0))" şeklinde yazınca düzeldi.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Basit bir dosya eklenseydi bu kadar mesajlaşma olmazdı diye düşünüyorum. Haklı mıyım?
 
Üst