• DİKKAT

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

Formülü kısaltmak

Katılım
2 Haziran 2015
Mesajlar
349
Excel Vers. ve Dili
2010
Merhaba arkadaşlar, benim verileri saydığım sütunda A sütununda 1 "PART_NO" yu "SİSTEM RAPOR" sayfası "WAREHOUSE" ve "LOCATION" değerlerini "ÇOKETOPLA" formülü ile sayıyorum fakat amacım "ANASAYFA" "D" sütununa "ÇOKETOPLA yerine kısa bir formül yada makro kullanarak değerleri toplam almak
örnek:PART_NO
04020-0184000 "SİSTEM RAPOR" "WAREHAOSE" sütununda SMSTRDOA,SMSTRNEW alanında say ve LOCATION "" OK OOW ZF_DOA toplamını al
formülü nasıl kısaltabilirim? kolay gelsin teşekkürler..


http://www.dosya.tc/server9/cu7wj4/FORMUL_KISALTMA.rar.html
 
Merhaba.

Önce iki uyarı:
... Birincisi; AD TANIMLAMAlarında TÜRKÇE KARAKTER kullanmamanızı öneriyorum.
... İkinci husus ise; formül oluştururken veya AD TANIMLAMASI yaparken tüm sütunu kullanmanızın (özellikle çok büyük veri yığınları için),
bu tür çok koşullu sayma işlemlerinin yavaş sonuç vermesine neden olacağını belirtmek isterim.

Bunun yerine son veri satırını tespit eden AD TANIMLAMASI formülü oluşturun ve
AD TANIMLAMAlarında veya formüllerde sadece dolu alanda sayma işlemi yaptırın.
Bu konuda forumda yeterince örnek var. Forumda dinamik alan veya dinamik ad tanımlama gibi ARAMA yapınız.

Umarım sorunuzu yanlış anlamadım.

Sanırım ANASAYFA 16-19'uncu satırlardaki listeyi soruyu açıklamak için yazdınız.
-- Eğer öyleyse kod'u aşağıdaki şekilde kullanabilirsiniz.
-- Eğer öyle değil ve işlem sadece A2:A11'inci aralığındaki değerler için yapılacaksa,
mavi renklendirdiğim kısmı 11 olarak değiştirin ve kırmızı renklendirdiğim satırı silin.

Aşağıdaki işlemleri sırasıyla yapınız.
-- ANASAYFA adlı sayfaya bir adet düğme/metin kutusu/şekil ekleyin,
-- Alt taraftan ANASAYFA adlı sayfanın adına fareyle sağ tıklayıp KOD ÖRÜNTÜLEyi seçin,
-- Açılan VBA ekranında sağdaki boş alana aşağıdaki kod'u yapıştırın.
-- ANASAYFAya eklediğiniz düğme/metin kutusu/şekile fareyle sağ tıklayıp MAKRO ATAyı seçin,
-- Açılacak küçük ekranda KOSULLU_TOPLA'yı seçerek işlemi onaylayın.
Sayfaya eklediğiniz düğme/metin kutusu/şekile fareyle tıkladığınızda kod çalışarak istenilen sonuçları yazacaktır.
.
Kod:
[B]Sub KOSULLU_TOPLA()[/B]
Set sis = Sheets("SİSTEM RAPOR")
Set ana = Sheets("ANASAYFA")
Set wf = Application.WorksheetFunction
sson = sis.Cells(Rows.Count, 1).End(xlUp).Row
ason = ana.Cells(Rows.Count, 1).End(xlUp).Row
ana.Range("D2:D" & ason).ClearContents
oalan = "O2:O" & sson
kalan = "K2:K" & sson
zaman = Timer
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual

sis.Columns("O:O").Insert Shift:=xlToRight
With sis.Range("O2:O" & sson)
    .Formula = "=A2&E2&F2": .Value = .Value
End With

For sat = 2 To ason
    bir = wf.SumIf(sis.Range(oalan), ana.Cells(sat, 1) & "SMSTRDOA" & "", sis.Range(kalan))
    iki = wf.SumIf(sis.Range(oalan), ana.Cells(sat, 1) & "SMSTRDOA" & "OK", sis.Range(kalan))
    uc = wf.SumIf(sis.Range(oalan), ana.Cells(sat, 1) & "SMSTRDOA" & "OOW", sis.Range(kalan))
    dort = wf.SumIf(sis.Range(oalan), ana.Cells(sat, 1) & "SMSTRDOA" & "ZF_DOA", sis.Range(kalan))

    bes = wf.SumIf(sis.Range(oalan), ana.Cells(sat, 1) & "SMSTRNEW" & "", sis.Range(kalan))
    alti = wf.SumIf(sis.Range(oalan), ana.Cells(sat, 1) & "SMSTRNEW" & "OK", sis.Range(kalan))
    yedi = wf.SumIf(sis.Range(oalan), ana.Cells(sat, 1) & "SMSTRNEW" & "OOW", sis.Range(kalan))
    sekiz = wf.SumIf(sis.Range(oalan), ana.Cells(sat, 1) & "SMSTRNEW" & "ZF_DOA", sis.Range(kalan))
        ana.Cells(sat, 4) = bir + iki + uc + dort + bes + alti + yedi + sekiz
        bir = 0: iki = 0: uc = 0: dort = 0: bes = 0: alti = 0: yedi = 0: sekiz = 0
Next
sis.Columns("O:O").Delete Shift:=xlToLeft
oalan = Empty: kalan = Empty
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
MsgBox "İşem süresi: " & Format(Timer - zaman, "0.00"), vbInformation, "..::.. Ömer BARAN ..::.."
[B]End Sub[/B]
 
Merhaba Ömer bey çok teşekkür ederim,tam istediğim gibi olmuş toplam aldırıyorum fakat benim gerçek verilerim oldugu "SİSTEM RAPOR" sayfasında 5000 satırlık veri var ve makro verileri 4 dakikada hesaplıyor, formül 30 saniyede hesaplıyordu,ama sorundeğil beklemesi çok teşekkür ediyorum birde bu çalışma kitabında aradığım veriyi hangi lokasyonda kaç adet var görmem mümkün mü "user forum" olursa daha kullanışlı olur benim için, PART_NO aradığımda sorguladığım "PART_NO
"WAREHAUSE" hangisinde "LOCATİON" hangisinde "" "OK" "OOW" "ZF_DOA" AVAİLABLE QTY kaçta ne var görmem gerekiyor kolay gelsin
 
Tekrar merhaba.

Önceki cevabımdaki kod'da değişiklik yaptım.
Sayfayı yenileyerek kod'un yeni halini tekrar dener misiniz?

Arama, listeleme ile ilgili olarak, sonradan değişiklik yapmayacak şekilde bir USERFORM tasarlayın ve
yeni bir konu açarak userformun içerisinde olduğu örnek belge üzerinden, forumdan destek istemenizi öneriyorum.
Ben veya başka bir üye mutlaka çözüm önerisinde bulunacaktır.
.
 
Ömer bey kodalrınız sorunsuz çok teşekkür ederim kolay gelsin, önerileriniz yerine getiricem iyi çalışmalar..
 
Son kod değişikliğini işlemin süresine ilişkin değişiklik olacağını düşünerek yapmıştım.
Kod'un önceki hali ile yeni halini, işlem süresi bakımından karşılaştırdınız mı acaba?
 
Geri
Üst