• DİKKAT

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

formülü makro koda çevirmek

Katılım
10 Ekim 2010
Mesajlar
1,469
Excel Vers. ve Dili
2010 Türkçe
merhaba arkadaşlar herkese hayırlı geceler dilerim. aşağıdaki verdiğim kodu makroya çevırebilirmıyız...
buna ornek çalışmalara baktım lakişn pek işimi görmedi yada ben yapamadım.


=EĞER(B1252="";"";ETOPLA(STOK!C:C;B1252;STOK!F:F))
 
Merhaba,

Kod:
Sub Hesapla()
Application.ScreenUpdating = False
Range("D3:D10").Select
Selection.ClearContents
For i = 3 To 10
Cells(i, 4).Select
ActiveCell.FormulaR1C1 = _
"=SUMIF(STOK!C[-1],RC[-2],STOK!C[2])"
Next i
Range("D3:D10").Value = Range("D3:D10").Value
Application.ScreenUpdating = True
End Sub

Örnek dosyanızı http://www.excel.web.tr/f14/veri-giri-i-yok-ise-bo-gorunsun-t112221.html#post610579 bağlantıdan aldım
 
merhaba mahir bey, ben bunu uyguladım lakin sonuç alamadım bir yerlrde yanlış mı yaptım. örnek dosyaya ekleyebilir mısınız rica etsem...
 
merhaba sayın excelapachi,
örnek dosyayı ekledim gelenler sayfası d sutundaki formül aynı özellikte makro kodunu istıyorum. arkadaşlarımız hep yardımcı oldular lakin sonuca gidemedik.

gelen sayfası b sutuna herhangi bir top numarası yazıldığında, bu top numarası stok sayfasında mevcut ise, stok sayfasındaki o topun metresini, gelenler d sutuna getırıyor.
butonsuz ve top numarası yazılıp hücreden çıkıldığında işlem görmesini ıstıyorum.
daha sonradan stoktan o top sılınırse, gelenler sayfasında o top numarası hala duruyorsa metresi 0 olmalıdır.

ilginize tşk ederım. herkese hayırlı akşamlar dilerim.
 

Ekli dosyalar

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Range("D3:D1000").Value = "=SUMIF(STOK!C[-1],RC[-2],STOK!C[2])"

End Sub

GELENLER sayfasının kod satırına formülü yukarıdaki gibi yazarsanız kullanabilirsiniz. Fakat satır sayısını arttırdıkça çalışma hızı yavaşlıyor. Daha pratik bir çözümü varsa bende öğrenmek isterim. Kolay gelsin
 
Merhaba,

Sayfada her hücre seçimi yerine sayfanın aktif olma durumu kullanılırsa bir nebze olsun yavaşlamanın önüne geçebilirsiniz.

Ayrıca formülde C:C şeklinde tüm sütun sorgulanmış. Bu da dosyanın yavaşlamasına sebep oluyor. Aralık daraltılırsa hız kazanabilir.

Kod:
Private Sub Worksheet_Activate()
    Application.ScreenUpdating = False
 
    With Range("D3:D" & Cells(Rows.Count, 1).End(3).Row)
        .Formula = "=SUMIF(STOK!C[-1],RC[-2],STOK!C[2])"
        .Value = .Value
    End With
 
    Application.ScreenUpdating = True
End Sub
 
gunaydın korhan bey,
bu kodu uyguladım hiç sonuç alamadım. neden olabilir..
örnek çalışmaya uygulayabilirmısınız rica etsem.
 
Son düzenleme:
Merhaba,

Bu tarz kod uygulamaları için lütfen dosya talep etmeyin.

Yapacağınız işlem çok basit;

GELENLER isimli sayfa adı üzerinde sağ klik yapın.
Açılan menüden "Kod Görüntüle" seçeneğini seçin.
Karşınıza gelen beyaz pencereye kodu uygulayın.
Son olarak excel sayfasına dönüp başka bir sayfayı açtıktan sonra GELENLER isimli sayfayı açın.
Bu sayfayı her açtığınızda formüller güncellenecektir.
 
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False

With Range("O2:O" & Cells(Rows.Count, 1).End(3).Row)
.Formula = "=IF(RC[-4]=""Euro"",RC[-5]*RC[-1],RC[-7]*RC[-6])"
.Value = .Value
End With

Application.ScreenUpdating = True
End Sub

Sn. Korhan hocam
Aynı sayfada başka bir formül daha örneğin .Formula = "=RC[-2]*RC[-1]" (=H2*I2) yapmak istesek koda nasıl bir ilave yapmalıyız. Teşekkürler
 
Sayfada her hücre seçimi yerine sayfanın aktif olma durumu kullanılırsa bir nebze olsun yavaşlamanın önüne geçebilirsiniz.

Ayrıca formülde C:C şeklinde tüm sütun sorgulanmış. Bu da dosyanın yavaşlamasına sebep oluyor. Aralık daraltılırsa hız kazanabilir.

Kod:
Private Sub Worksheet_Activate()
    Application.ScreenUpdating = False
 
    With Range("D3:D" & Cells(Rows.Count, 1).End(3).Row)
        .Formula = "=SUMIF(STOK!C[-1],RC[-2],STOK!C[2])"
        .Value = .Value
    End With
 
    Application.ScreenUpdating = True
End Sub
[/QUOTE]

Korhan Hocam
formülü uygulayıp çalıştırdım. Daha iyi anlayabilmem için kodları açıklayabilir misiniz? Teşekkürler.
 
ya arkadaşlar bnde uyguluyorum ama sonuç alamıyorum deli olacam yahuu.
birinizde örnek olarak paylaşsanız.. 4 gundur bu formulun peşindeyım.
istediğimi yaptım ama buton var ben butonsuz veri girişi olduğunda yada sılındığınde sonuç versin ıstıyorum :(((
 
Merhaba,

Tahsin bey kod içindeki "With-End With" bloğunu kopyalayıp hücre aralığını ve içindeki formülü değiştirmeniz yeterli olacaktır.

slymn33 kod kısaca şu işlemleri yapmaktadır.

İlk satır sayfanın aktif olma olayını ifade eder.
İkinci satır ile ekran hareketlerini pasif yapıyoruz. Bu işlemin amacı kodların daha hızlı sonuç vermesi içindir.
Üçüncü satırda formül uygulayacağımız hücre aralığını belirliyoruz.
Dördüncü satırda bu hücrelere gereken formülü yazdırıyoruz.
Beşinci satırda formülleri değere çeviriyoruz. Bu işlemde dosya boyutunun şişmemesi ve hız kazanması için yapılıyor.
Altıncı satırda "With" bloğunu sonlandırıyoruz. Bunu If-End If sorgu bloğu gibi düşünebilirsiniz.
Yedinci satırda ekran hareketlerini tekrar aktif yapıyoruz.
Sekizinci satırda prosedürü sonlandırıyoruz.
 
Merhaba,

#9 nolu mesajımda tarif ettiğim adımları izlerseniz rahatlıkla yapabilirsiniz.

ya arkadaşlar bnde uyguluyorum ama sonuç alamıyorum deli olacam yahuu.
birinizde örnek olarak paylaşsanız.. 4 gundur bu formulun peşindeyım.
istediğimi yaptım ama buton var ben butonsuz veri girişi olduğunda yada sılındığınde sonuç versin ıstıyorum :(((
 
Korhan Hocam
3.satırda formül uygulayacağımız sütunu seçerken
........& Cells(Rows.Count, 1).End(3).Row)
ifadesini biraz daha açabilirmisiniz?
 
merhaba korhabey kodunuzu uygulaadım fakat istediğim gibi değil. elinize sağlık size çok tşk ederım ilgi ve alakanız dan dolayı iyi çalışmalar dilerim
 
Merhaba,

Aşağıdaki ifade "A" sütunundaki veri olan en son satırın numarasını bulur.

Kod içinde 1 değeri "A" sütununu ifade eder.

Rows.Count ise excel sayfasındaki en son satırı ifade eder. (65536 ya da 1048576)

End(3) ise klavyedeki "END" ve yukarı ok düğmelerinin işlevini ifade eder.

Kod:
Cells(Rows.Count, 1).End(3).Row
 
Korhan hocam
İlginiz için çok teşekkürler
Epeydir çözmeye çalıştığım bir konuda beni aydınlattınız. Çok teşekkür ederim.iyi çalışmalar
 
korhan hocam ben birdan fazla sutunda bu kodu kullanmak istediğimizde diğer sutun veya sutunlardaki kodlar için nasıl bir kod yazmamız gerektiğini sormuştum. Yani örnekteki "O" sutunundaki işlemi yapıyor, buna ilaveten J sutununda da başka bir formül, artı k kutununda da başka bir formülü aynı mantıkla nasıl çalıştırabiliriz diye sormuştum.
 
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False

With Range("o2: o" & Cells(Rows.Count, 1).End(3).Row)
.Formula = "=IF(RC[-4]=""Euro"",RC[-5]*RC[-1],RC[-7]*RC[-6])"
With Range("j2:j" & Cells(Rows.Count, 1).End(3).Row)
.Formula = "=RC[-2]*RC[-1]"
.Value = .Value
End With

Application.ScreenUpdating = True
End Sub

Korhan hocam bu şekilde deniyorum hata veriyor.
 
Geri
Üst