Excel Forum

Excel Forum (http://www.excel.web.tr/index.php)
-   Makro-VBA (http://www.excel.web.tr/forumdisplay.php?f=48)
-   -   Formülleri Makro ile oluşturmak (http://www.excel.web.tr/showthread.php?t=170429)

yselimyilmaz 09-02-2018 14:33

Formülleri Makro ile oluşturmak
 
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=DAT A1!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";"")

askm 09-02-2018 14:42

Dosyanızı eklerseniz afaki işlem yapmayı engellersiniz. Ya da makro kaydet yöntemi ile çözüm bulabilirsiniz.

yselimyilmaz 09-02-2018 15:36

Dosyayı ekleyemiyorum, sivil olmayan bilgiler içermektedir.

Ömer BARAN 09-02-2018 16:26

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:

Sub FORMULLER()
Set d = Sheets("DATA1")
datasonsat = Sheets("DATA1").Cells(Rows.Count, "A").End(3).Row
sayimsonsat = Sheets("SAYIM").Cells(Rows.Count, "A").End(3).Row


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

With d.Range("H2:H" & datasonsat)
    .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" & datasonsat)
    .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" & datasonsat)
    .Formula = "=IF(DATA1!A2="""","""",""TÜM LİSTE"")"
    .Value = .Value
End With

End Sub


Tevfik_Kursun 09-02-2018 22:14

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

Ömer BARAN 09-02-2018 22:25

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.
.

yselimyilmaz 10-02-2018 08:16

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/MA...ORMUL.rar.html

yselimyilmaz 10-02-2018 08:54

Sayın Ömer Bey;

Kodlarınız örnek dosya üzerinde kusursuz çalışmıştır.

Bu linktede dosyaya makroların uygulanmış ve formüllerin dosya içerisinde ne işe yaradığını belirten notların yazılı hali vardır.

http://s7.dosya.tc/server2/nqbigt/MA...RMUL1.rar.html

İlginize ve yardımınıza tekrar teşekkür ederim.

yselimyilmaz 10-02-2018 09:32

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/MA...RMUL2.rar.html

Tevfik_Kursun 10-02-2018 17:56

Teşekkürler arkadaşlar
İyi çalışmalar


Saat 23:03

Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.