Amacımız başka bir hücrede bulunan formülü başka bir yere yapıştırmak ve aşağı doğru dinamik bir şekilde çoğaltmak. İşte bu dinamikliği sağlamak adına alternatif bir çözüm aşağıda verilmiştir.
Option Explicit
Sub DonguIleFormulKopyalaYapistir()
Dim i As Integer
'--------------------------------------------------
'Formülü başka bir hücreden al.
'--------------------------------------------------
Range("A1").Formula = Range("B1").Formula
'--------------------------------------------------
'Formülü uygula.
'--------------------------------------------------
Application.ScreenUpdating = False
For i = 2 To 20
Range("A" & i - 1).Select
Range("A" & i - 1).Copy
Range("A" & i).Select
ActiveCell.PasteSpecial
Next
Application.ScreenUpdating = True
Application.CutCopyMode = False
End Sub
Option Explicit
'Formülü B1 hücresinden kopyalamak istiyoruz.
'A sütununda da çoğaltma işlemini yapacağız.
Sub DonguIleFormulKopyalaYapistir()
'Döngü için kullanacağımız değişken.
Dim i As Integer
'--------------------------------------------------
'İlk önce formülünü kopyalamak amacıyla
'hücremizi belirliyoruz ve istediğimiz
'hücreye formül olarak atıyoruz.
'--------------------------------------------------
Range("A1").Formula = Range("B1").Formula
'--------------------------------------------------
'Ekran güncellemesini kapat.
'--------------------------------------------------
Application.ScreenUpdating = False
'--------------------------------------------------
'Bu kısım ise aklıma ilk gelen çözüm.
'A1 hücresinde ana formülümüz var zaten.
'Şimdi A2 hücresinden itibaren döngüyü
'başlatıyoruz. Döngü boş hücrenin
'bir üstündeki hücreyi seçip kopyalayacak.
'Sonra da asıl hücremizi seçecek ve
'kopyaladığımız formülü yapıştıracak.
'
'Böylelikle formülün içindeki dinamik
'alanlar da buna göre etkilenecek. Tıpkı
'seçili hücrede sağ alt köşeden çekip
'aşağı kopyalıyormuş gibi olacak.
'--------------------------------------------------
For i = 2 To 20
Range("A" & i - 1).Select
Range("A" & i - 1).Copy
Range("A" & i).Select
ActiveCell.PasteSpecial
Next
'--------------------------------------------------
'Ekran güncellemesini aç.
'--------------------------------------------------
Application.ScreenUpdating = True
'--------------------------------------------------
'Excel kopyalama modunu kapat.
'--------------------------------------------------
Application.CutCopyMode = False
End Sub