Döngü İle Başka Hücreden Formül Kopyala - Microsoft Excel


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.

Kod


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

Kod (Açıklamalı)


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

Etiketler
microsoft excel açıklamalı içerik microsoft excel vba