Excel Formüllerini VBA’da Kullanmak

Bu bölümde VBA yerleşik formüllerin aksine düşeyara, eğersay gibi excel formüllerini VBA’de kullanmayı öğreneceğiz.

Farklı Excel dilleriyle uyumluluğu sağlamak için formülleri kaydetmek üzere makro kaydediciyi kullanın. Formüller her zaman varsayılan olarak İngilizce adıyla kaydedilir. Bu sayede formüller Excel’in tüm farklı dillerinde çalışır.

FormulaR1C1 özelliği, hücrelere başvurmak için satır ve sütun numaralandırmasını kullanır. Formula özelliği, A1 referans tipini kullanır (bununla birlikte, R1C1 referansını da yorumlayabilir).

İpucu: Excel formülleri kullanıp kopyalamak, VBA formülleri döngü içinde kullanmaktan daha hızlı sonuç verir.

Örnek: Aşağıdaki komutla F sütununda, eğer B sütunundaki değer 1 ile başlıyorsa E sütunundaki tutarı 1,18 ile çarpıyoruz.

Sub Makro_Excel_Formul() 

Dim SatirSayisi As Long 
Dim i As Long 

SatirSayisi = Range("A" & Rows.Count).End(xlUp).Row 
'Eğer B sütunundaki hücre değeri 1 ile başlıyorsa tutarı 1,18 ile çarpıyoruz 
Range("F2").FormulaR1C1 = "=IF(VALUE(LEFT(RC[-4],1))=1,RC[-1]*1.18,"""")" 
Range("F2").AutoFill Destination:=Range("F2:F" & SatirSayisi) 'hücrenin sağ altına tıklayıp formülü aşağı kopyalama işlemi 
Application.Calculate 'excel dosyası hesaplama seçeneği manuel olması ihtimaline karşı 

Range("A2", "E" & SatirSayisi).Interior.Color = xlNone 'renklendirmeyi siliyoruz 

'Eğer F sütunundaki hücre 5000 den küçükse satırı yeşil yapıyoruz 
For i = 2 To SatirSayisi
     If Range("F" & i).Value < 5000 Then
         Range("A" & i, "E" & i).Interior.Color = VBA.ColorConstants.vbGreen
         Debug.Print Range("F" & i).Value
     End If 
Next i 

'Range("F2:F" & SatirSayisi).Clear 

End Sub Code language: VB.NET (vbnet)

Sonuç:

Excel Formüllerini VBA'da Kullanmak

Önemli Not: Eğer büyüktür işareti kullanırsak (If Range(“F” & i).Value > 5000 Then) sonuç aşağıdaki gibi hatalı oluyor. VBA, değer boş olduğu halde döngüye girip renklendirme yapıyor.

Excel Formüllerini VBA'da Kullanmak

Bu durumu önlemek için (If Range(“F” & i).Value > 5000 And Range(“F” & i).Value <> “” Then) komutunu kullanmamız gerekir.

Excel Formüllerini VBA'da Kullanmak

Yayımlandı

kategorisi

yazarı:

Etiketler: