formülerin makro karşılığı

NIGRA

Altın Üye
Katılım
12 Şubat 2021
Mesajlar
111
Excel Vers. ve Dili
Excel2010
Altın Üyelik Bitiş Tarihi
13-02-2026
MAKRO KAYDET yöntemini kullanmaktır.
Biraz uğraşmak gerekiyor. En güzel öğrenme yöntemlerinden biri de budur.

Mesela ilk verdiğiniz formülü ben makro kaydet ile A1 hücresine uyguladığımda aşağıdaki kod oluşuyor.

C++:
Option Explicit

Sub Makro1()
'
' Makro1 Makro
'

'
    Selection.FormulaArray = _
        "=SUM(-(R3C22:R10C22=R[2]C[10]:R[9]C[10]))=COUNTA(R3C2:R10C2)"
End Sub
Ben bunu hücredeki gibi olacak şekilde aşağıdaki şekilde revize ettim.

C++:
Option Explicit

Sub Makro1()
    Range("A1").FormulaArray = "=SUM(-($V$3:$V$10=K3:K10))=COUNTA($B$3:$B$10)"
End Sub

Bu dönüşüm ile ilgili öğretici bir kaynak var mı yönlendirebileceğin abi, resmen aydınlandım. Efsane bişi bu. Uyarlamayı nasıl öğrenebilirim? Birde tüm formüller için olabiliyor mu bu? Kullandığım excel dosyam da çok formül var, hem boyut yapıyor hem de bazı sayfalarda yavaş maalesef. Hepsini bu yolla makroya çevirmeyi çok isterim. Bu dosya ile de bu işi baya pekiştirmiş olurum. Ama kaynak bulmam lazım.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,193
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
#10 nolu mesajı inceleyiniz.
 

NIGRA

Altın Üye
Katılım
12 Şubat 2021
Mesajlar
111
Excel Vers. ve Dili
Excel2010
Altın Üyelik Bitiş Tarihi
13-02-2026
#10 nolu mesajı inceleyiniz.
Tamamdır abi, o linki dün bu mesajı yazdıktan sonra inceledim. Çalışmak lazım üstüne.

Sadece bu with bloğu ve value kısımları sabit mi hep? onlarda formüle göre değişiyor mu?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,193
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Oradaki olayı sindirmek lazım.. Bunu da makroyu F8 tuşu ile adım adım çalıştırarak hangi satır sayfada ne işlem yapıyor gözlemleyebilirsiniz.

Bunu yaparken hem kod penceresini hemde excel sayfasını görebileceğiniz şekilde ekrana yerleştirmeniz izlemenizi kolaylaştıracaktır.
 

NIGRA

Altın Üye
Katılım
12 Şubat 2021
Mesajlar
111
Excel Vers. ve Dili
Excel2010
Altın Üyelik Bitiş Tarihi
13-02-2026
Oradaki olayı sindirmek lazım.. Bunu da makroyu F8 tuşu ile adım adım çalıştırarak hangi satır sayfada ne işlem yapıyor gözlemleyebilirsiniz.

Bunu yaparken hem kod penceresini hemde excel sayfasını görebileceğiniz şekilde ekrana yerleştirmeniz izlemenizi kolaylaştıracaktır.
bu yorumundan with bloğu ve value kısımlarının haliyle değişken olduğunu anlıyorum. Tamam abi deneyeceğim teşekkürler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,193
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben "değişken" şeklinde bir ifade kullanmadım. Denemeden yorum yapmanızı da açıkçası anlamsız buluyorum.
 

NIGRA

Altın Üye
Katılım
12 Şubat 2021
Mesajlar
111
Excel Vers. ve Dili
Excel2010
Altın Üyelik Bitiş Tarihi
13-02-2026
Ben "değişken" şeklinde bir ifade kullanmadım. Denemeden yorum yapmanızı da açıkçası anlamsız buluyorum.
Aslında değişken olması daha makul gelmişti ama bu yöntem çok iyi gerçekten. Bu yöntem ile baya gelişilebilir abi. teşekkürler
 

NIGRA

Altın Üye
Katılım
12 Şubat 2021
Mesajlar
111
Excel Vers. ve Dili
Excel2010
Altın Üyelik Bitiş Tarihi
13-02-2026
Kod:
Sub Formul_Convertor()
Dim data As New DataObject
Dim z As String

On Error GoTo hata
MsgBox Application.ConvertFormula( _
    Formula:=ActiveCell.Formula, _
    fromReferenceStyle:=xlR1C1, _
    toReferenceStyle:=xlA1), vbInformation, "Normal Başvuru"
z = Application.ConvertFormula( _
    Formula:=ActiveCell.Formula, _
    fromReferenceStyle:=xlA1, _
    toReferenceStyle:=xlR1C1)
MsgBox z, vbInformation, "R1C1 Stili"
data.SetText z
data.PutInClipboard
Exit Sub
hata:
MsgBox ("Formül yok !!!"), vbCritical, "Başvurulan hücrede"
End Sub

birde bunu buldum araştırırken bir nebze R1C1 versiyonu normal formüle çeviriyor altını üstünü de uyarlamayı kavrayabilirsem daha güzel işler çıkar kanısındayım.
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
With Range("AL3:AL" & Cells(Rows.Count, 1).End(3).Row)
.FormulaArray = "=Sum(-($AJ$3:$AJ$12=B3:B12))=COUNTA($AJ$3:$AJ$12)" 'Korhan Ayhan excel web tr desteği
.Value = .Value
End With

sayın Korhan Ayhan ve Orino1 döndüm dolaştım ve korhan bey in 10 mesajı ve korhan beyi destekleyen orion 1 in mesajı ile yukardaki kod u kullandım.
sonuçta artık formül şeklinde gelmiyor ama kod da doğru çalışmıyor . AL sütununda "DOĞRU" ifadesi çıkmıyor . oysa "DOĞRU " ifadesi çıkması gerek
Korhan hocam Orion1 hocam lütfen destek ,inanın uğraşıyorum .
son güncel dosyam ekte (lütfen güncel dosyaya bakınız!)
 

Ekli dosyalar

NIGRA

Altın Üye
Katılım
12 Şubat 2021
Mesajlar
111
Excel Vers. ve Dili
Excel2010
Altın Üyelik Bitiş Tarihi
13-02-2026
With Range("AL3:AL" & Cells(Rows.Count, 1).End(3).Row)
.FormulaArray = "=Sum(-($AJ$3:$AJ$12=B3:B12))=COUNTA($AJ$3:$AJ$12)" 'Korhan Ayhan excel web tr desteği
.Value = .Value
End With

sayın Korhan Ayhan ve Orino1 döndüm dolaştım ve korhan bey in 10 mesajı ve korhan beyi destekleyen orion 1 in mesajı ile yukardaki kod u kullandım.
sonuçta artık formül şeklinde gelmiyor ama kod da doğru çalışmıyor . AL sütununda "DOĞRU" ifadesi çıkmıyor . oysa "DOĞRU " ifadesi çıkması gerek
Korhan hocam Orion1 hocam lütfen destek ,inanın uğraşıyorum .
son güncel dosyam ekte (lütfen güncel dosyaya bakınız!)
28 nolu mesajımdaki makroyu dener misin, formülü makroya dönüştürüp bi inceleyin isterseniz hatanız var mı?
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
sayın NİGRA mümkünse siz benim 29 nolu mesajımdaki dosyaya , 28 nolu msj daki kodu 'nuzu uyarlayabilirmisiniz.
 

NIGRA

Altın Üye
Katılım
12 Şubat 2021
Mesajlar
111
Excel Vers. ve Dili
Excel2010
Altın Üyelik Bitiş Tarihi
13-02-2026
sayın NİGRA mümkünse siz benim 29 nolu mesajımdaki dosyaya , 28 nolu msj daki kodu 'nuzu uyarlayabilirmisiniz.
düz formül halini verir misiniz bu r1c1 in uyarlanmış hali. hücreye yazılan formülü yazar mısınız
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025

TOPLA(--($AJ$3:$AJ$12=B3:B12))=BAĞ_DEĞ_DOLU_SAY($AJ$3:$AJ$12)

 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,193
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Formül için benim adımı vermişsiniz ama bu formülü size Ömer bey önermişti.

Ayırca formülü eksik uygulamışsınız. (-- iki tire işareti)

Ek olarak dizi formülleri VBA tarafında biraz sorunludur. Aşağıdaki gibi kullanabilirsiniz.

C++:
Sub Test()
    Range("AL3").FormulaArray = "=SUM(--($AJ$3:$AJ$12=B3:B12))=COUNTA($AJ$3:$AJ$12)"
    With Range("AL3:AL" & Cells(Rows.Count, 1).End(3).Row)
        .FillDown
        .Value = .Value
    End With
End Sub
Ya da;

C++:
Sub Test()
    With Range("AL3")
        .FormulaArray = "=SUM(--($AJ$3:$AJ$12=B3:B12))=COUNTA($AJ$3:$AJ$12)"
        With .Resize(Cells(Rows.Count, 1).End(3).Row - 2)
            .FillDown
            .Value = .Value
        End With
    End With
End Sub
Ya da;

C++:
Sub Test()
    With Range("AL3")
        .FormulaArray = "=SUM(--($AJ$3:$AJ$12=B3:B12))=COUNTA($AJ$3:$AJ$12)"
        .AutoFill Destination:=.Resize(Cells(Rows.Count, 1).End(3).Row - 2), Type:=xlFillDefault
        .Resize(Cells(Rows.Count, 1).End(3).Row - 2).Value = .Resize(Cells(Rows.Count, 1).End(3).Row - 2).Value
    End With
End Sub
 

NIGRA

Altın Üye
Katılım
12 Şubat 2021
Mesajlar
111
Excel Vers. ve Dili
Excel2010
Altın Üyelik Bitiş Tarihi
13-02-2026
Formül için benim adımı vermişsiniz ama bu formülü size Ömer bey önermişti.

Ayırca formülü eksik uygulamışsınız. (-- iki tire işareti)

Ek olarak dizi formülleri VBA tarafında biraz sorunludur. Aşağıdaki gibi kullanabilirsiniz.

C++:
Sub Test()
    Range("AL3").FormulaArray = "=SUM(--($AJ$3:$AJ$12=B3:B12))=COUNTA($AJ$3:$AJ$12)"
    With Range("AL3:AL" & Cells(Rows.Count, 1).End(3).Row)
        .FillDown
        .Value = .Value
    End With
End Sub
Ya da;

C++:
Sub Test()
    With Range("AL3")
        .FormulaArray = "=SUM(--($AJ$3:$AJ$12=B3:B12))=COUNTA($AJ$3:$AJ$12)"
        With .Resize(Cells(Rows.Count, 1).End(3).Row - 2)
            .FillDown
            .Value = .Value
        End With
    End With
End Sub
Ya da;

C++:
Sub Test()
    With Range("AL3")
        .FormulaArray = "=SUM(--($AJ$3:$AJ$12=B3:B12))=COUNTA($AJ$3:$AJ$12)"
        .AutoFill Destination:=.Resize(Cells(Rows.Count, 1).End(3).Row - 2), Type:=xlFillDefault
        .Resize(Cells(Rows.Count, 1).End(3).Row - 2).Value = .Resize(Cells(Rows.Count, 1).End(3).Row - 2).Value
    End With
End Sub

Bunlarda R1C1 in makro dönüşümü için güzel örnek oldu eline sağlık abi ✌
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Korhan bey ; her şeyden önce ilginize minnettarım . dediğim gibi bu benim proje anlamında ilk çalışmam olacak o yüzden zorlanıyorum , eksiklerim çok çok fazla o yüzden en azından bu projede beni desteğinizden uzak bırakmamanızı diliyor ve istiyorum .
bu ilk projede İnşallah destek olanların isimlerini kodlarıma kazıyacağım ve bizim Akşehir 29 numaralı Şehir içi minibüs kooperatifinde de yerini alacaklar
bunları ifade ettikten sonra , bana gün boyu sıkıntı veren yaklaşık 6 saat hindi gibi düşünüp durduktan ve sonuç alamayıp neredeyse pes dedikten sonra yukarıda sizin gönderdiğiniz kodu görür görmez sevinçle hemen denedim. ama yine AL sütununda "DOĞRU" ifadesi gelmiyor. Biliyorsunuz bu kod un formülü nü de siz vermiştiniz , zannımca kodu yazdıktan sonra dosyada denememiş siniz.
eğer yinede bende bir hata ise lütfen uyarın beni teşekkürler, sabırsızlıkla bu kodu bekliyor olacağım.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,193
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Yukarıda verdiğim kodları #29 nolu mesaj ekindeki dosyanızda ters sırayla denedim.

3. kod çalıştı. 115. satırda ve sonrasında koşula uyan satırlarda DOĞRU değerini üretti.
2. kod çalıştı. 115. satırda ve sonrasında koşula uyan satırlarda DOĞRU değerini üretti.
1. kod çalıştı. 115. satırda ve sonrasında koşula uyan satırlarda DOĞRU değerini üretti.
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Korhan Bey , frmşehirici (userform) un CommandButton1_Click() olduğu yere yazınca çalışmıyor .Yani "DOĞRU" ifadesi gelmiyor. Siz de çalışıyor deyince ben de modül sayfası açtım satko sayfasına düğme ekledim o zaman çalıştı.
userfomun commandbutton1 click sayfasında çalışma imkanı yokmu böyle 2 düğmemi kullanmak zorunda kalacağım
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,193
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Form üzerinden çalışmamasının sebebi;

Kodlar çalışmaya başlarken dosyanın hesaplama özelliği ELLE yöntemine alınıyor. Ta ki kodun çalışması bitene kadar. Siz benim verdiğim kodu araya eklediğiniz için formül hücreye uygulandıktan sonra hesaplama yapamadığı için ve ilk hücrede YANLIŞ değeri ürettiği için tüm hücrelere bu değeri yazmakdatır.

Bu durumu aşmak için kod bloğunu aşağıdaki gibi düzenlerseniz sorun giderilmiş olur.

Rich (BB code):
With Range("AL3")
    .FormulaArray = "=SUM(--($AJ$3:$AJ$12=B3:B12))=COUNTA($AJ$3:$AJ$12)"
    With .Resize(Cells(Rows.Count, 1).End(3).Row - 2)
        .FillDown
        .Calculate
        .Value = .Value
    End With
End With
 
Üst