• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Formülü VBA'ya alma ve VBA'dan geri alma

Katılım
15 Temmuz 2012
Mesajlar
2,802
Excel Vers. ve Dili
Ofis 2021 TR 64 Bit
Merhaba arkadaşlar hayırlı geceler.

Kod:
=EĞER(B2="";"";EĞERHATA(DÜŞEYARA(B2;'PERSONEL LİSTESİ'!$B$2:$C$5000;2;0);"Aradığınız kişi yok"))

Yukarıdaki formülü makro kaydet ile vba tarafına aldığım zamanda aşağıdaki gibi oluyor.

Kod:
=IF(RC[-1]="""","""",IFERROR(VLOOKUP(RC[-1],'PERSONEL LİSTESİ'!R2C2:R5000C3,2,0),""Aradığınız kişi yok""))"

Aldığım bu formülüde aşağıdaki kodun içerisine ekleyip, formülün sonucunu alıyorum.
Kod:
Sub Sonuç()
    With Range("C2:C" & [B65365].End(3).Row)
    .Formula = _
        "=IF(RC[-1]="""","""",IFERROR(VLOOKUP(RC[-1],'PERSONEL LİSTESİ'!R2C2:R5000C3,2,0),""Aradığınız kişi yok""))"
    .Value = .Value
End Sub

Benim yapmak istediğim sayfa üzerindeki formüller vba tarafına geçtiği zaman formülün şekli değişiyor, (noktalı virgül, virgüle dönüyor,Türkçe kodlar ingilizceye dönüyor ve RC diye birşey oluşuyor) vba tarafına aldığım bu formülü tekrar excel sayfasına alarak çeşitli düzenlemelerde bulunmak istediğimde düzenleme yapamıyorum.

http://en.excel-translator.de/translator/ bu linkte formül çevirdiğimde =EĞER(RC[-1]="""";"""";EĞERHATA(DÜŞEYARA(RC[-1];'PERSONEL LİSTESİ'!R2C2:R5000C3;2;0);""AradığıSız kişi yok""))"" bu şekle sokuyor, RC'ler ne anlama geliyorsa, yine de formül düzenlenmiyor.

VBA tarafındaki formülü excel sayfasına uyarlayacak bir çeviri var mı?

Bunun gibi bir çok formüllerim var, bunu düzeltmek için yardımcı olur musunuz?
 
Son düzenleme:
Merhaba Sayın ERASLAN.

Bence bunları tek tek düzeltmek tabiiki zahmetli.
Makro kaydet ile R1C1 sistemine göre oluşan formüllerde; R row yani satır, C column yani sütun anlamındadır.

Asıl önemlisi, 5000 satırlık veriniz yokken 5000 satırda değer araması yapan formül oluşturmak yerine
AD TANIMLAMA kullanarak alanı daraltmakta (sadece dolu alanda arama yapmak üzere) fayda var,
unutmayın AD TANIMLAMASI kullanılarak oluşturulan formülü makroya dönüştürürken bu tanımlı adlar
kod'da aynen kalıyor
yani R1C1 biçimine dönüştürülmüyor.

Örneğin 'PERSONEL LİSTESİ'!$B$2:$C$5000 aralığını (tabi satır sayısını dinamik şekilde yani veri eklendikçe
değişen şekilde formüle etmekte yarar var) şekilde personel diye adlandırmış olsaydınız formülünüzün bu kısmı kod'da
VLOOKUP(RC[-1],personel,2,0) şeklinde olacaktı.
Umarım anlatabildim.
 
Sayın Ömer Bey öncelikle çok teşekkür ediyorum, hayırlı geceler.

Ad Tanımlama nasıl oluyor ben bunu hiç kullanmadım ve bilmiyorum, küçük bir örnek gönderebilir misiniz?

Ayrıca Türkçe olan bir formül vba tarafına Türkçe olarak yazılabilir mi?
 
EVRAK TAKİP belgeniz açıkken FORMÜLLER menüsünde AD TANIMLAMA kısmını açın;
YENİ -> isim kısmına personel yazın,
alt taraftaki formül kısmına aşağıdaki formülü yazın ve işlemi onaylayın.
.
Kod:
=DOLAYLI("'PERSONEL LİSTESİ'![COLOR="Blue"][B]B2:C[/B][/COLOR]"&BAĞ_DEĞ_DOLU_SAY('PERSONEL LİSTESİ'!$[COLOR="Blue"][B]B[/B][/COLOR]:$[B][COLOR="blue"]B[/COLOR][/B]))
Şu anda formül sonucu B2:C5 oluyor, bu ad tanımlama personel listesi çoğaldıkça kendisini yenileyip satır sayısını artıracaktır.
Artık DÜŞEYARA formülünüzü şu şekilde yazabilirsiniz.
DÜŞEYARA(B2;personel;2;0)
 
Sayın Ömer Bey, ilginiz için çok teşekkür ediyorum, çok sorularımı çözdünüz sizden çok şeyler öğrendim Allah razı olsun, hakkınızı helal edin, hayırlı sabahlar hayırlı çalışmalar.
 
Geri
Üst