Bütün Formüller Makroya Dönüştürülebilir mi?

Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Merhaba

Hepimizin arşivinde kullandığı, uzun veya kısa, dizi olan veya normal olan birçok formül vardır.

Hangi sütunda kullandığımız belli olan, ne için kullandığımızı bildiğimiz, yani bilinçli kullandığımız herhangi bir formülü, istediğimiz zaman, makroya dönüşterebilme imkanımız var mıdır?

(Yaptığı iş tamamen aynı olacak, ama formülü makroya dönüştürdüğümüz için daha hızlı yapacak) diye düşündüm.

Yani kısaca, çalışan herhangi bir formülü, bir aceminin bile makroya dönüştürebileceği bir şablon, bir yol var mıdır?

Olacağını pek sanmıyorum ama emin olmak için sormak istedim.

Teşekkürler
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Vba fonksiyon ve komutları kullanabilirsiniz.:cool:
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,523
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Excel VBA tarafında çalışmasına müsaade ediyorsa tüm formülleri makroya dönüştürebilirsiniz.

Örnek;
C++:
Option Explicit

Sub Formulu_Makro_Ile_Hucreye_Yaz()
    Dim Son As Long
    Son = Sheets("Sayfa1").Cells(Rows.Count, 1).End(3).Row
    With Sheets("Sayfa1").Range("B1:B" & Son)
        .FormulaLocal = "=DÜŞEYARA(A1;Sayfa2!A:B;2;0)"
        '.Value = .Value 'Bu satırı aktif yaparsanız formüller değere dönüşür. Böylece dosyanız daha hızlı tepki verir.
    End With
End Sub
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Excel VBA tarafında çalışmasına müsaade ediyorsa tüm formülleri makroya dönüştürebilirsiniz.

Örnek;
C++:
Option Explicit

Sub Formulu_Makro_Ile_Hucreye_Yaz()
    Dim Son As Long
    Son = Sheets("Sayfa1").Cells(Rows.Count, 1).End(3).Row
    With Sheets("Sayfa1").Range("B1:B" & Son)
        .FormulaLocal = "=DÜŞEYARA(A1;Sayfa2!A:B;2;0)"
        '.Value = .Value 'Bu satırı aktif yaparsanız formüller değere dönüşür. Böylece dosyanız daha hızlı tepki verir.
    End With
End Sub
Uzmanım sağolunuz,
sakin kafayla denemeler yaptıktan sonra neticeyi arz edeceğim.
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Uzmanım sağolunuz,
sakin kafayla denemeler yaptıktan sonra neticeyi arz edeceğim.
Korhan uzmanım acemiliğimi mazur görün,
yukardaki makro kodlarında Sayfa1 ve Sayfa2 birbirine bağlantılı yapılmış, pencere çıkıyor.
Eğer size zahmet olmazsa tek sayfalık hale getirmek mümkün mü?
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Uzmanım merhaba
Ad soyad ayırma formüllerini denedim, bir tanesi bile olmadı,
kodların içine formülü yapıştırırken bile hata veriyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,523
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Siz uyguladığınız dosyayı paylaşın hatanızı görelim.
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe






Uzmanım belki başka formüllerde de hata verebilir, uzun ızun dizi formülleri de var mesela.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,523
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Birinci dosyanızda uyguladığınız formülde kullanılan çift tırnakların sayıları eksik. Bu sebeple ilgili satır kırmızı renge dönüşmüş. Bu renk birşeylerin yanlış olduğunun işaretidir. Makro kaydet yöntemi ile formülün VBA tarafındaki görüntüsünü tespit edebilirsiniz.

Doğrusu;
C++:
Option Explicit

Sub Formulu_Makro_Ile_Hucreye_Yaz()
    Dim Son As Long
    Son = Sheets("Sayfa1").Cells(Rows.Count, 1).End(3).Row
    With Sheets("Sayfa1").Range("B1:B" & Son)
        .FormulaLocal = "=SOLDAN(YERİNEKOY(A2;"" "";""?"";UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2;"" "";"""")));BUL(""?"";YERİNEKOY(A2;"" "";""?"";UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2;"" "";""""))))-1)"
        '.Value = .Value 'Bu satırı aktif yaparsanız formüller değere dönüşür. Böylece dosyanız daha hızlı tepki verir.
    End With
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,523
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Diğer dosyalarda da aynı sorun var.

VBA tarafında "" yerine """" yazmalısınız.
VBA tarafında " " yerine "" "" yazmalısınız.
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Diğer dosyalarda da aynı sorun var.

VBA tarafında "" yerine """" yazmalısınız.
VBA tarafında " " yerine "" "" yazmalısınız.
Sayın Uzmanım sağolunuz
ben kodlardaki çift tırnak konusunu bilmediğim için, kullandığım formülleri aynen alıp kopyalamıştım.

Demek ki bazı küçük değişiklikler yapmamız gerekiyor.

Peki uzmanım, konu konuyu açıyor,
formülleri yukardaki kodlara uygularken, çift tırnak konusunun dışında bilmemiz gereken başka bir şey var mıdır?
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Uzmanım merhaba
denemeler yapıyorum
bir şey dikkatimi çekti
aşağıdaki örnekte neden 208. satıra kadar uygulanıyor olabilir?

Aynı kodu başka boş bir sayfada çalıştırınca da bu sefer 2010. satıra kadar gitti. Oysa ben B20 olarak yazmıştım.

 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,523
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bazen üyelerimizin şaka yaptığını düşünmekten kendimi alamıyorum.

Kusura bakmayın ama aşağıdaki yazım şekli sizce doğru mu?

Sheets("Sayfa1").Range("B2:B20" & Son)

Hem 20 diye belirtiyorsunuz hem de Son değeri ile birleştirip yeni değer üretiyorsunuz.

Bir önceki sorunuza gelince bazı ince detayları tecrübe ederek öğrenmenizde fayda görüyorum. Kurcalarken farklı özellikleri öğrenme şansınız olur.
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Bazen üyelerimizin şaka yaptığını düşünmekten kendimi alamıyorum.

Kusura bakmayın ama aşağıdaki yazım şekli sizce doğru mu?

Sheets("Sayfa1").Range("B2:B20" & Son)

Hem 20 diye belirtiyorsunuz hem de Son değeri ile birleştirip yeni değer üretiyorsunuz.
Sayın Uzmanım inanın bilmiyordum.
Hatta İngilizce tabanlı Excel programında, bu makro kodları kısmında, Türkçe bir kelime olabileceğini tahmin bile edemezdim.

Örneğin dikkatimi çekmiş bile olsa, oradaki “son” kelimesinin, İngilizce bir kelimenin kısaltması olarak düşünürdüm. Dediğim gibi başka bir ihtimale yer veremezdim. Oysa Türkçedeki bildiğimiz ”bitti” anlamındaki son kelimesiymiş.

Türkçe bir kelimenin, Excel kodlarında geçerli olduğunu da şu an sayenizde öğrenmiş oldum.

Sayın uzmanım rahatça dile getirmeliyim ki, her ne kadar yıllardır yüzeysel olarak excel kullanıyor olsak da, kodları ve formülleri oluşturma konusunu bilmediğimiz için, tamamı Türkçe de yazsa, İngilizce de yazsa kodlardaki tüm kelimeler ve rakamlar bizim için, şifre niteliğinde ve görünümünde.

İyi ki sizler varsınız ve tüm sorularımızı cevaplıyor ve bize yardım ediyorsunuz.

Hatta az önce, yukarda bahsetmiş olduğunuz “makro kaydet yöntemi” ile denemeler yaparken, Türkçe bir formülün İngilizceye çevrilmesinin dışında, bütün noktalı virgüllerin, virgüle dönüştüğünü de gördüm.
(Oysa tam tersini yaparken sadece çift tırnakları iki katına çıkarmıştık)
İşte bu konuların detayları, biz acemileri aşıyor :)

-

Sayın Korhan Ayhan uzmanım
bu konuyla ilgili sizden son bir şey daha isteyeceğim.

Konuyu anladığım için sanıyorum başka sorum olmayacak.

Son sorum şudur,
arşivimi karıştırdığımda benzer bir işi yapan (sanıyorum eski bir konudan edinmiş olduğum) bir dosyaya rastladım.

Tek satırlık kod içeriyor.

Hani sizin kodlarınızdaki Value satırı vardı ya, işte satırı ilave ettim, olmadı.
Müsait olduğunuzda, o satırı doğru olarak ilave eder misiniz?




Saygılar uzmanım
:)
 

numan şamil

Destek Ekibi
Destek Ekibi
Katılım
27 Ocak 2011
Mesajlar
1,229
Excel Vers. ve Dili
Ofis 2013 Türkçe
Merhaba
Örneğin dikkatimi çekmiş bile olsa, oradaki “son” kelimesinin, İngilizce bir kelimenin kısaltması olarak düşünürdüm. Dediğim gibi başka bir ihtimale yer veremezdim. Oysa Türkçedeki bildiğimiz ”bitti” anlamındaki son kelimesiymiş.
Burda son kelimesi sizin zannettiğiniz gibi değil son kelimesi makroda ne ile tanımladığınıza ve nerede kullandığınıza bağlı bağlı
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Merhaba
Örneğin dikkatimi çekmiş bile olsa, oradaki “son” kelimesinin, İngilizce bir kelimenin kısaltması olarak düşünürdüm. Dediğim gibi başka bir ihtimale yer veremezdim. Oysa Türkçedeki bildiğimiz ”bitti” anlamındaki son kelimesiymiş.
Burda son kelimesi sizin zannettiğiniz gibi değil son kelimesi makroda ne ile tanımladığınıza ve nerede kullandığınıza bağlı bağlı

Doğrudur uzmanım :)
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Korhan uzmanım hani 14 nolu mesajımda value ile ilgili bir sorum vardı ya,

ilave olarak
bir önemli sorum da şöyle

Eğer bir dizi formülünü bu kodlara uygulmak istersek, o zaman ne yapmamız gerekiyor?
Zira formül dizi formülü olunca, makrodan hücrelere aktarılsa bile, “CSE” eksikliğinden dolayı neticeyi göstermiyor..
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,523
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Boş bir modülde aşağıdaki işlemi yaparsanız hücreye uygulayacağınız özellikleri görebilirsiniz. Bunları incelemeniz gelişiminiz için fayda sağlaycaktır.

Yani modül içinde bir satıra Range("A1"). (A1 nokta) yazdığınızda karşınıza özellikler listesi açılır. Bu listeden hücreye uygulayabileceğiniz özellikleri görebilirsiniz.



220741
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,523
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kod yazmayı öğrenmeyi ya da ilerletmeyi düşünüyorsanız döngülerden ve temel yazım tekniklerinden başlamalısınız. Bu bilgilere dersane ve uygulamalı excel eğitimi başlıklarından ulaşabilirsiniz. (Altın üyelik gerektirebilir.)

Nette bu bilgileri araştırarak ücretsiz kaynaklara da ulaşabilirsiniz.

Son sorunuzda yazım tekniği eksikliğinden uygulama hatası oluşmuş.

C++:
Sub esitlikkontrol()
    With Range("C2:C50")
        .Formula = "=A1=B1"
        .Value = .Value 'Bu satırı aktif yaparsanız formüller değere dönüşür. Böylece dosyanız daha hızlı tepki verir.
    End With
End Sub
 
Katılım
18 Mayıs 2009
Mesajlar
1,184
Excel Vers. ve Dili
Excel 2016 Türkçe
Sayın uzmanım
buraya kadar her şey güzeldi.
son bir şey kaldı, hani dizi formülünü sormuştum ya, dizi formüllerini nasıl yapmalıyız?

İki farklı kodlarınız ile iki güzel örnek hazırladım. Kodlar çalışıyor ama ikisinde de CSE kısmı eksik kalıyor
(hücre içinde CSE yapınca doğru olduğu görünüyor)







 
Üst