• DİKKAT

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

Formülleri Makro ile oluşturmak

Katılım
29 Aralık 2007
Mesajlar
40
Excel Vers. ve Dili
2010-türkçe
Selam Arkadaşlar;

Çalışma Sayfamda aşağıda yazılı formüller bulunmaktadır. Sayfamdaki veriler çoğaldıkça formüller yüzünden işlemler yavaşlamaktadır. Formulleri sayfadan silip Userform'da oluşturacağım CommandButton içeriğine yazmak istiyorum.Bu formüllerin makro karşılıkları nelerdir veya nasıl kodlama yapmam gerekir ki, formül sonuçları istenilen hücrelere yazılsın?

1.formül
DATA1 Sayfası G2 Hücresinde ve G3,G4,G5.... Diye gidiyor.

=EĞER(A2<>"";TOPLA.ÇARPIM((SAYIM!$A$2:$A$65536=DATA1!A2)*(SAYIM!$E$2:$E$65536));"")

2.formül
DATA1 Sayfası H2 Hücresinde ve H3,H4,H5.... Diye gidiyor.

=EĞER(A2<>"";(EĞER(G2>E2;G2-E2;E2-G2));"")

3.formül
DATA1 Sayfası I2 Hücresinde ve I3,I4,I5.... Diye gidiyor.

=EĞER(A2<>"";EĞER(G2>E2;"FAZLA";EĞER(E2>G2;"EKSİK";EĞER(G2=E2;"TAM")));"")

4.formül
DATA1 Sayfası J2 Hücresinde ve J3,J4,J5.... Diye gidiyor.
=EĞER(A2<>"";"TÜM LİSTE";"")
 
Dosyanızı eklerseniz afaki işlem yapmayı engellersiniz. Ya da makro kaydet yöntemi ile çözüm bulabilirsiniz.
 
Merhaba.

Örnek belgelerinizin;
-- gerçek belgeyle aynı yapıda olması ve
-- gerçek verileri temsil edebilecek nitelikte tutarlı veriler içermesi
yeterlidir. Yani verilerin gerçek veri olmasına ve veri yığının büyük olmasına lüzum yok.

Örnek belge yükleme yöntemine ilişkin kısa açıklama cevabımın altındaki İMZA bölümünde var.

İsteğiniz birçok şekilde yapılabilir elbette.
Örneğin basitce, hücreye formül uygula sonucunu değer olarak yaz şeklinde, aşağıdaki gibi olabilir.

Koddaki mavi satırlar her iki sayfadaki son dolu hücrenin satır numarasını tespit etmeye yöneliktir.
Bundan amaç; arama/sayma/koşullu toplama işleminin tüm sütun boyunca değil sadece dolu alanda yapılması,
işlemin sadece gerektiği kadar satıra uygulanmasıdır.

Bu, son satır tespitinde A sütunu kriter olarak kullanıldı.
Mutlaka veri olan bir sütun olmak üzere başka bir sütun adı olarak değiştirilebilir.
.
Kod:
[B]Sub FORMULLER()[/B]
Set d = Sheets("DATA1")
[COLOR="blue"][B]datasonsat[/B] = Sheets("DATA1").Cells(Rows.Count, "[B][COLOR="red"]A[/COLOR][/B]").End(3).Row
[B]sayimsonsat[/B] = Sheets("SAYIM").Cells(Rows.Count, "[B][COLOR="Red"]A[/COLOR][/B]").End(3).Row[/COLOR]

With d.Range("G2:G" & [B]datasonsat[/B])
    .Formula = "=IF(DATA1!A2="""","""",SUMPRODUCT((SAYIM!$A$2:$A$" & [B]sayimsonsat[/B] & "=DATA1!A2)*(SAYIM!$E$2:$E$" & [B]sayimsonsat[/B] & ")))"
    .Value = .Value
End With

With d.Range("H2:H" & [B]datasonsat[/B])
    .Formula = "=IF(DATA1!A2="""","""",(IF(DATA1!G2>DATA1!E2,DATA1!G2-DATA1!E2,DATA1!E2-DATA1!G2)))"
    .Value = .Value
End With

With d.Range("I2:I" & [B]datasonsat[/B])
    .Formula = "=IF(DATA1!A2="""","""",IF(DATA1!G2>DATA1!E2,""FAZLA"",IF(DATA1!E2>DATA1!G2,""EKSİK"",IF(DATA1!G2=DATA1!E2,""TAM""))))"
    .Value = .Value
End With

With d.Range("J2:J" & [B]datasonsat[/B])
    .Formula = "=IF(DATA1!A2="""","""",""TÜM LİSTE"")"
    .Value = .Value
End With

[B]End Sub[/B]
 
Merhaba Sayın Ömer Hocam,
Siz bu yazdığınız makronun, ne yaptığı ile ilgili örnek dosya koyar mısınız, lütfen?
Saygılarımla
 
Malesef Sayın Kurşun dosya yok. Zaten konu sahibi de örnek belge eklememiş.

Cevabı yazarken boş bir belgede (formüllarden anlaşıldığı kadar) sayfalar oluşturup cevabı hazırladıktan sonra da belgeyi kaydetmeden kapatmıştım.

Yaptığım şey konu sahibinin verdiği formülleri, son dolu satır tespitine yönelik ilaveyle değiştirmekten ibaret.

Bu tür durumlarda kod'daki .Value=.Value satırlarını sol başına TEK TIRNAK ekleyip (devre dışı bırakmak için),
işlem sonucunu yani hücreye uygulanan formülü görerek yol almanızda yarar olduğunu belirteyim.
.
 
Sayın; Ömer Bey

Acil olduğu için gerçek verileri içermeyen bir dosya hazırlayamadım. İnanın şimdi yazdığınız kodları denemeden örnek bir belge hazırladım.

Başka arkadaşlara da fikir vermesi veya yardımcı olması için örnek dosya linkini gönderiyorum.
Linkteki dosyada sizin yazdığınız makro kodları yoktur. Benim sayfa içindeki formüllerim vardır.

http://s7.dosya.tc/server2/i3um91/MAKROILEFORMUL.rar.html
 
Dosyama yeni bir formül ilave ettim. Bu formülünde makrosunu yazabilirmisiniz?.

DATA1 Sayfası K2 hücresine
=EĞER(A12<>"";BİRLEŞTİR("Sayım sonucu Sistemde=";" ";EĞER(E12<>"";E12;"0");" ";"Sayılan=";" ";EĞER(G12<>"";G12;"0");EĞER(G12=E12;" * Sayım Doğru";EĞER(I12="FAZLA";BİRLEŞTİR(" * ";H12;" Adet Giriş Yapıldı ");BİRLEŞTİR(" * ";H12;" Adet Çıkış Yapıldı"))));"")

http://s7.dosya.tc/server2/dua506/MAKROILEFORMUL2.rar.html
 
Teşekkürler arkadaşlar
İyi çalışmalar
 
Geri
Üst