• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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

Katılım
5 Mart 2010
Mesajlar
227
Excel Vers. ve Dili
Ofis 2010 TR 32 Bit
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.
 
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
 
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
 
Aşağıdaki gibi olmalı sanıyorum:

Sheets("Veri").Range("EB8").Formula = "=IF(W8=""tahsilat"",Z8,0)"
 
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
 
Merhaba,

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

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

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

.
 
Ö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

  • formül sonuçları.jpg
    formül sonuçları.jpg
    97.5 KB · Görüntüleme: 2
Ö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.
 
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:
Kullandığınız kodları yazar mısınız.
 
Ö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.
 
Basit bir dosya eklenseydi bu kadar mesajlaşma olmazdı diye düşünüyorum. Haklı mıyım?
 
Geri
Üst