Yazdırılan Formulü Son Satıra Kadar Uygulama ?

Katılım
13 Temmuz 2013
Mesajlar
121
Excel Vers. ve Dili
2013 excel
Cümleten kolay gelsin, Ben düşeyara formulünü macro ile tabloda belirttiğim yere yazdırıp tablo boyunca uygulamasını istiyorum. Sabit aynı tablolarda yani satır boyu aynı olan tablolarda sorunsuz belirttiğim arada yazıyor ve aşağıya doğru uygulayarak iniyor.
Sıkıntı şurada başlıyor satır sayısı değişken tablolarda da uygulamak sitiyorum fakat macronun komutu ("B2:C21") 21. satıra kadar olduğu için 21. satırda formül duruyor. Ben tablonun solundaki en son yazan veriye kadara uygulasın istiyorum farklı tablolardada uygulayabilmek için. Umarım açıklayıcı olmuştur şimdiden teşekkür ederim.

Kod:
Sub deneme()
'
' deneme Makro
'

'
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sayfa2!C1:C3,2,0)"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],Sayfa2!C1:C3,3,0)"
    Range("B2:C2").Select
    Selection.AutoFill Destination:=Range("B2:C21")
    Range("B2:C21").Select
End Sub
Örnek:
http://s3.dosya.tc/server10/zdie24/deneme.xlsx.html
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Aşağıdaki şekilde deneyin.
Kod:
Sub deneme()
'
' deneme Makro
'

'
sonsat = Cells(65536, "B").End(xlUp).Row
For i = 2 To sonsat
    Range("B" & i).Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sayfa2!C1:C3,2,0)"
    Range("C" & i).Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],Sayfa2!C1:C3,3,0)"
    Range("B" & i & ":C" & i).Select
    Selection.AutoFill Destination:=Range("B2:C21")
Next
    'Range("B2:C21").Select
End Sub
 
Katılım
13 Temmuz 2013
Mesajlar
121
Excel Vers. ve Dili
2013 excel
Denedim fakat herhangi bir sonuç alamadım herhangi birşey yazmadı
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Eğer sadece c21 satır ile sınırlı ise For i = 2 To sonsat yerine For i = 2 To 21 yazın. Örnek dosyanızı antivirüs engellemesinden dolayı indiremiyorum.
 
Katılım
13 Temmuz 2013
Mesajlar
121
Excel Vers. ve Dili
2013 excel
Eğer sadece c21 satır ile sınırlı ise For i = 2 To sonsat yerine For i = 2 To 21 yazın. Örnek dosyanızı antivirüs engellemesinden dolayı indiremiyorum.
Dediğinizi yaptım fakat sonuca ulaşamadım

http://hizliresim.com/r67VGm
http://hizliresim.com/yNXlQn

Resimdeki gibi bir tabloda sayfa1 e yazdırıyorum formulü veriyide sayfa2 den çektiriyorum. yazdırılan formulü belirlediğim satıra kadar uygulatıyorum fakat her tabloda farklı uzunluk olduğu için tablodaki son veriye kadar uygula ve bitir demem gerek inşallah anlaşılır olmuştur.
 

Korhan Ayhan

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

Kod:
Sub TEST()
    With Sheets("Sayfa1")
        Son = .Cells(.Rows.Count, 1).End(3).Row
        .Range("B2:B" & Son).Formula = "=VLOOKUP($A2,Sayfa2!$A:$C,2,0)"
        .Range("C2:C" & Son).Formula = "=VLOOKUP($A2,Sayfa2!$A:$C,3,0)"
    End With
End Sub
 
Katılım
13 Temmuz 2013
Mesajlar
121
Excel Vers. ve Dili
2013 excel
Deneyin.

Kod:
Sub TEST()
    With Sheets("Sayfa1")
        Son = .Cells(.Rows.Count, 1).End(3).Row
        .Range("B2:B" & Son).Formula = "=VLOOKUP($A2,Sayfa2!$A:$C,2,0)"
        .Range("C2:C" & Son).Formula = "=VLOOKUP($A2,Sayfa2!$A:$C,3,0)"
    End With
End Sub
Tam istediğim gibi olmuş Korhan bey ellerinize sağlık. Tahmin ettiğiniz üzere VBA konusunda yeni sayılırım makro oluştururken bu konuda sıkıntı yaşıyordum istenilen komutu tablonun son satırına indiren komut hangisidir öğrenmek amaçlı soruyorum;
Son = .Cells(.Rows.Count, 1).End(3).Row===?
.Range("B2:B" & Son)===?
.Range("C2:C" & Son)===?
Bu 3 komutun anlamı nedir acaba
 

Korhan Ayhan

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

Son = .Cells(.Rows.Count, 1).End(3).Row 'Sayfa1 isimli sayfanın "A" sütunundaki son dolu hücrenin satır numarasını bulur.

.Range("B2:B" & Son) 'Sayfa1 isimli sayfanın "B2:B Son" hücre aralığını ifade eder.

.Range("C2:C" & Son) 'Sayfa1 isimli sayfanın "C2:C Son" hücre aralığını ifade eder.
 
Katılım
13 Temmuz 2013
Mesajlar
121
Excel Vers. ve Dili
2013 excel
Merhaba,

Son = .Cells(.Rows.Count, 1).End(3).Row 'Sayfa1 isimli sayfanın "A" sütunundaki son dolu hücrenin satır numarasını bulur.

.Range("B2:B" & Son) 'Sayfa1 isimli sayfanın "B2:B Son" hücre aralığını ifade eder.

.Range("C2:C" & Son) 'Sayfa1 isimli sayfanın "C2:C Son" hücre aralığını ifade eder.
Korhan Bey, sizin bu yazmış olduğunuz kodları benim bu yazmış olduğum kodlara uyarlamaya çalışıyorum fakat hata alıyorum
Sub deneme()
'
' deneme Makro
'

'
Range("B2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Sayfa2!C1:C3,2,0)"
Range("C2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],Sayfa2!C1:C3,3,0)"
Range("B2:C2").Select
Selection.AutoFill Destination:=Range("B2:C21")
Range("B2:C21").Select
End Sub
Bu koda uyarlarken hangilerini değiştirirsem bu ve bunun gibi yazmış olduğum kodları istediğim sütunu göstererek dolu olan son satıra kadar formulü uygulatabilirim. Yardımcı olursanız çok sevinirim bu tarz hazırladığım farklı kodlar var butonlara atadım farklı excel sayfalarından istediğim butonu ekleyerek kullanıyorum kendi yazdığım kodlara uyarlayabilirsem çok iyi olacak. Yardımınız için çok teşekkür ederim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,160
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben sade ve anlaşılır olan yöntemi önermiştim.

Sizin kullandığınız kodu aşağıdaki gibi düzenleyebilirsiniz.

Kod:
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
 
Katılım
13 Temmuz 2013
Mesajlar
121
Excel Vers. ve Dili
2013 excel
Ben sade ve anlaşılır olan yöntemi önermiştim.

Sizin kullandığınız kodu aşağıdaki gibi düzenleyebilirsiniz.

Kod:
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
Korhan bey ilginiz için teşekkür ederim şimdi diğer benzer butonlarada uygulayabildim teşekkür ederim elinize sağlık.
 
Katılım
19 Mayıs 2006
Mesajlar
32
Excel Vers. ve Dili
Microsoft Office Excel 2003 / 2007 /2016 Türkçe
Ben sade ve anlaşılır olan yöntemi önermiştim.

Sizin kullandığınız kodu aşağıdaki gibi düzenleyebilirsiniz.

Kod:
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
Korhan Bey merhaba;

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.

Cevaplarsanız memnun olurum. Kolay gelsin.
 
Üst