• DİKKAT

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

formülerin makro karşılığı

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.
 
#10 nolu mesajı inceleyiniz.
 
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.
 
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.
 
Ben "değişken" şeklinde bir ifade kullanmadım. Denemeden yorum yapmanızı da açıkçası anlamsız buluyorum.
 
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
 
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.
 
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

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ı?
 
sayın NİGRA mümkünse siz benim 29 nolu mesajımdaki dosyaya , 28 nolu msj daki kodu 'nuzu uyarlayabilirmisiniz.
 
[TR][TD]
TOPLA(--($AJ$3:$AJ$12=B3:B12))=BAĞ_DEĞ_DOLU_SAY($AJ$3:$AJ$12)
[/TD][/TR]
 
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
 
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 ✌️
 
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.
 
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.
 
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
 
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
 
Geri
Üst