Bir formülü son sütuna kadar uygulama formülü

Katılım
19 Mayıs 2006
Mesajlar
32
Excel Vers. ve Dili
Microsoft Office Excel 2003 / 2007 /2016 Türkçe
Merhaba;

Sayın Korhan Ayhan Bey'in bir konuda verdiği cevap için yazdığı kodu kendi çalışmama nasıl uyarlayabilirim.?
Sub TEST()
Son = Cells(Rows.Count, "A").End(3).Row
Range("B2").FormulaR1C1 = "=VLOOKUP(RC[-1],Sayfa2!C1:C3,2,0)"
Range("C2").FormulaR1C1 = "=VLOOKUP(RC[-2],Sayfa2!C1:C3,3,0)"
Range("B2:C2").AutoFill Destination:=Range("B2:C" & Son)
End Sub



Bu formülü sadece bir sayfada yani başka sayfadan veri almadan formüllerin kendi sayfasında B hücresinde metin veya sayı olduğunda A,J,K,L sütünlarında bulunun formülleri aşağı doğru nasıl uygulatabiliriz.

Benim çalışmamda formüller A2;J2;K2;L2 sütünlarında bulunuyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Örnek dosya paylaşırsanız destek almanız kolaylaşır.
 
Katılım
19 Mayıs 2006
Mesajlar
32
Excel Vers. ve Dili
Microsoft Office Excel 2003 / 2007 /2016 Türkçe
Örnek dosya paylaşırsanız destek almanız kolaylaşır.
Korhan Bey Merhaba;

Üye olmadığım için dosyayı bu şekilde ekleyebildim. İki ayrı paylaşım platformuna yükledim.

Data sayfasının B hücresinde metin veya sayı olduğunda A,J,K,L sütünlarında bulunun formülleri aşağı doğru nasıl uygulatabiliriz.

Yardımınız için teşekkür ederim.

https://www.transfernow.net/dl/20221203O5P28yYY

 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu işin en kolay yöntemi belirttiğiniz hücre aralığını TABLO olarak biçimlendirmektir. Bu nesne formülleri tablodaki satır sayısı kadar otomatik çoğaltmaktadır. EKLE-TABLO menüsünden uygulayabilirsiniz.

Makro ile çözüm isterseniz aşağıdaki kodu DATA isimli sayfanızın kod bölümüne uygulayınız. Sayfa aktif olduğunda kod devreye girecektir. Ben formülleri değere çevirdim. Böylelikle dosyanız daha performanslı çalışacaktır.

Dilerseniz kodun içindeki aşağıdaki satırları silerek formül olarak kalmasını sağlayabilirsiniz.

Range("A4:A" & Last_Row).Value = Range("A4:A" & Last_Row).Value
Range("J4:J" & Last_Row).Value = Range("J4:J" & Last_Row).Value
Range("K4:K" & Last_Row).Value = Range("K4:K" & Last_Row).Value
Range("L4:L" & Last_Row).Value = Range("L4:L" & Last_Row).Value

C++:
Option Explicit

Private Sub Worksheet_Activate()
    Dim Last_Row As Long
   
    Last_Row = Cells(Rows.Count, 2).End(3).Row
    If Last_Row > 3 Then
        Range("A4:A" & Rows.Count).ClearContents
        Range("J4:L" & Rows.Count).ClearContents
       
        Range("A4:A" & Last_Row) = "=IF(B4="""","""",ROW()-3)"
        Range("J4:J" & Last_Row) = "=IF(F4="""",0,(F4*H4))"
        Range("K4:K" & Last_Row) = "=IF(G4="""",0,(G4*I4))"
        Range("L4:L" & Last_Row) = "=IFERROR(IF(B4=BANKA!$L$2,((J4+K4)*BANKA!$L$5)," & _
                                   "IF(B4=BANKA!$M$2,((J4+K4)*BANKA!$M$5)," & _
                                   "IF(B4=BANKA!$N$2,((J4+K4)*BANKA!$N$5)," & _
                                   "IF(B4=BANKA!$O$2,((J4+K4)*BANKA!$O$5)," & _
                                   "IF(B4=BANKA!$P$2,((J4+K4)*BANKA!$P$5)," & _
                                   "IF(B4=BANKA!$Q$2,((J4+K4)*BANKA!$Q$5),((J4+K4)*BANKA!$R$5))))))),"""")"
        Range("A4:A" & Last_Row).Value = Range("A4:A" & Last_Row).Value
        Range("J4:J" & Last_Row).Value = Range("J4:J" & Last_Row).Value
        Range("K4:K" & Last_Row).Value = Range("K4:K" & Last_Row).Value
        Range("L4:L" & Last_Row).Value = Range("L4:L" & Last_Row).Value
    End If
End Sub
 
Katılım
19 Mayıs 2006
Mesajlar
32
Excel Vers. ve Dili
Microsoft Office Excel 2003 / 2007 /2016 Türkçe
Korhan Bey Merhaba;

Elinize sağlık tam istediğim gibi olmuş.
Fakat küçük bir durum var. Veriyi giriş yaptıktan sonra Data sayfasından başka sayfaya geçiş yapıp tekrar Data sayfasına giriş yapınca kod çalışıyor.
Bunu veriyi girdikten sonra hemen çalışsın şekilde yapmanın bir yolu varmıdır.

Teşekkür ederim.
 
Üst