Soru Alış faturalarındaki miktarlara göre fiyat kartlarını kullanarak maliyet hesaplama.

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
Ekli Dosyada:
Örnek olması amacıyla;
ÇAKMAK TOSCOW SWORD TAŞLI (50*) 2.500 Paket Stok
ÇARDAK ICE TEA 330 ML. LİMON ( 24* ) (112*) 120 Koli Stok
verisi kullanılmıştır.(Diğer veriler önceki dosyadaki gibidir)
Bu örnek duruma göre "Hesapla" butonuna basarak sonuçları izleyin, test edin, başka denemeler de yapın.
Uyumsuzluk varsa lütfen yine bildirin.
İyi çalışmalar.
 

Ekli dosyalar

Katılım
17 Şubat 2010
Mesajlar
226
Excel Vers. ve Dili
excel 2007 türkçe
Altın Üyelik Bitiş Tarihi
03-11-2020
Tekrar tekrar teşekkürler...

Ben 2 seçenekten biri demiştim siz ikisini birden eklemişsiniz. Bahsettiğim hata düzeltilmiş.Bir kaç farklı kombinasyon denedim çalışıyor. Elinize sağlık...

Aslında zararı olmamakla birlikte şöyle bir durum söz konusu. Bilgi alınan sayfalarda filtreleme vesaire gibi işlemler yapılınca hata alınıyor.Bu durumda filtreleme yapmayacağız veya filtreleme yaptıysak onu temizleyip işlem yapacağız. Ama bir değişiklik yapınca (filtreleme ; bilgi güncelleme vesaire) HESAPLA butonuna basınca sol tarafa yeni sayfalar açıyor.Her basışta 2 yeni sayfa birden ekliyor. Sayfa18, Sayfa17 gibi.... İşleme bir etkisi olmuyor.İşlem bitince stok sayfasından sonuçlar yine alınabiliyor ama neden sol tarafa 2 şer yeni sayfa açıyor? İşlem başlayınca o sayfalara geçiyor ve işlem bitene dek dönemiyoruz stok sayfasına.Dediğim gibi çok sorun değil ama sadece merak ettiğim için sordum. Tekrar kolay gelsin...
 

Ekli dosyalar

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
Sayın @machool
Başlangıçtan bu yana örnek eklediğiniz excel dosyanız üzerinde ve açıklamalarınıza çözüm aranırken;
Tabiidir ki, işletmenizin özel ihtiyaçları ve "excel sayfalarınızın özellikleri dikkate alınmamıştır.
Hesaplamalar yapılırken, araya başka kriterler girdiğinde çözüm şekli farklı olabilir.
Bu nedenle;
İlk eklediğiniz dosyanızda yer alan sayfaların şekline ve formatına uygun biçimde verilerinizi girerek sonuçları TEST ederseniz herhangibir sorun olmayacaktır.

Eğer, halâ farklı bir uygulama ve buna uygun çözüm arıyorsanız;
Lüften, "GERÇEK" excel dosyanızı foruma ekleyin ve sorunlu işlemleri belirtin.
Bu durumda çözümler de farklı olabilir.
İyi çalışmalar.
 
Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Tekrar merhaba.

Bence aynı belgede, herbir senaryoya uygun koşulların gerçekleştiği bir adet ürün olacak şekilde yeni bir örnek belge oluşturun.
Hesaplamalarda karşılaşılan sorunları da ürünün satırını veya adını belirterek açıklayın.
Çok fazla adette örnek belge karışıklığa neden olur diye düşünüyorum.

Herbir senaryoya uygun satırda da (alış ve fiyat kartları sayfalarında da çok fazla veri olmasın ki kontrol ve deneme yapmak kolay olsun derim)
uygun bir hücreye olması gereken sonucu elle sayısal olarak yazıp, herbir senaryoya ait birer adet metin kutusunda da mümkün olduğunca kısa ve net olacak şekilde bu değeri nasıl bulduğunuzu açıklayın.

Herneyse, umarım Sayın turist'in çözümü ihtiyacınızı karşılamıştır.
Karşılamışsa; ekteki belge alternatif olsun, karşılamamışsa da ekteki belgeyi bir deneyin bakalım.
(Kod tarafından uygulanan bir formülün yapısı gereği sayfaların isimleri kısaltılmıştır)

Açıklamalarınızı kısa yazmanız umuduyla!...
 

Ekli dosyalar

Son düzenleme:
Katılım
17 Şubat 2010
Mesajlar
226
Excel Vers. ve Dili
excel 2007 türkçe
Altın Üyelik Bitiş Tarihi
03-11-2020
Tekrar merhaba

Sayın @Ömer BARAN

Sayın TURİST'in yaptığı excel ziyadesiyle yardımcı oldu sağolsun. Sizin eklediğiniz dosyayı inceledim.Süre mesajı şık olmuş ama algoritma mantığında hata var. Alış faturasının tarihine göre tanımlı kampanyadan fiyat çağırması gerekirken alış faturasının kendisinden fiyat çağırıyor.Diğer ihtimalleri incelemedim.Dediğim gibi sayın TURİST'in çalışması tam işlevsel olarak çalışıyor.Bu sebeple size daha fazla zahmet vermeyeyim.


Sayın @turist

Sayfa ekleme durumu sizin eklediğiniz MaliyetHesaplamaV3.xlsm dosyasında da mevcut.Yani ben büyük veri girdiğimde oluşan bir durum değil. Bu durum sadece şu şekilde ortaya çıkıyor.Veri bilgisi içeren sayfalarda FİLTRELEME yapıp hesapla dediğimizde aşırı bir zorlanma oluyor ve hatta kilitleniyor. Bu durumdan sonra FİLTRELEME temizlense dahi ek sayfalar oluşturuyor. Ama daha önceden söylediğim gibi bunun hiçbir mahsuru yok. Sadece HESAPLA işlemi yapmadan önce herhangi bir filtreleme olmadığına dikkat etmemiz yeterli.Bu vesile ile tekrar teşekkürler.


Buna excel dosyası hedefine ulaşmıştır.Ama bir adım öteye gitme imkanımız var mıdır? Şöyle ki satış hesaplanan bu maliyetler ile satış fiyatlarını mukayese edip kar zarar durumu belirten bir excel yapmak mümkün mü?Sayın Ömer BARAN'ın dediği gibi çok uzun olmaması açısından mesajı burada bitiriyorum. Örnek dosya ve detaylı açıklamayı sonraki mesajımda yapacağım.Teşekkürler...
 
Katılım
17 Şubat 2010
Mesajlar
226
Excel Vers. ve Dili
excel 2007 türkçe
Altın Üyelik Bitiş Tarihi
03-11-2020
Tekrar merhaba

Her şeyden önce bu kadar detaylı yazmam umarım yorucu olmuyordur.Sadece daha iyi açıklayabilmek amacı ile detaylı yazıyorum.
Önceki mesajlarda çözüm bulduğumuz maliyet fiyatlarını satış fiyatları ile kıyaslayarak kar-zarar hesaplayan bir excel yapmak istiyoruz.
Satış fiyatları bilgisini yeni eklediğimiz SATIŞ FİYATLARI sayfasından alabiliriz.Fakat burada şöyle bir durum söz konusu.Bir ürün bir alıcıdan bir fatura içerisinde gelirken aynı ürün bir çok alıcıya farklı günlerde satılabilir.Örneklemek gerekirse

ALIŞ FATURASINDA ;


27.10.2017 ----- A SATICISI ------- X ÜRÜNÜ ----- 100 KOLİ ----- 4,21 ₺

olurken;

SATIŞ FATURALARINDA

27.11.2017 ----- A ALICISI ------- X ÜRÜNÜ) ----- 2 KOLİ ----- 7 ₺
27.11.2017 ----- B ALICISI ------- X ÜRÜNÜ ----- 3 KOLİ ----- 7 ₺
27.11.2017 ----- C ALICISI ------- X ÜRÜNÜ ----- 5 KOLİ ----- 7 ₺
28.11.2017 ----- A ALICISI ------- X ÜRÜNÜ ----- 3 KOLİ ----- 7 ₺
28.11.2017 ----- B ALICISI ------- X ÜRÜNÜ ----- 7 KOLİ ----- 7 ₺
29.11.2017 ----- B ALICISI ------- X ÜRÜNÜ ----- 10 KOLİ ----- 7 ₺

gibi olabilir. Yani tek satırda alınan bir ürün satış günü içerisinde bir çok kez satılabilir.Şimdi biz mukayese yaparken satış faturalarındaki satışları tek tek taramamız hem işlem hacmini artıracaktır hem de gereksizdir.Zira gün içerisinde satılan ürünün fiyatı her satışta aynıdır.Bu sebepten ötürü öncelikle SATIŞ LİSTESİNİ , SADELEŞTİRİLMİŞ SATIŞ LİSTESİNE dönüştürmemiz lazım.Bunu şu şekilde yapabiliriz.Bizim için satış aşamasında önemli olan 3 faktör var.

a-Satış tarihi
b-Satılan ürün
c-Satış fiyatı

Kime satıldığının veya kaç adet satıldığının şimdilik önemi yok.Zira hedeflediğimiz şey SATIŞ FİYATINI elde etmek.Sadeleştirilmiş satış listesi olarak tanımladığımız listeyi oluştururken şu mantıkla ilerleyebiliriz.

Satış tarihine bakarız, ürüne bakarız (belki fiyata bakabiliriz) =====> SADELEŞTİRİLMİŞ SATIŞ LİSTESİNE ilk ürünü ekleriz.
Satış tarihine bakarız, ürüne bakarız ürün önceden eklenmediyse =====> SADELEŞTİRİLMİŞ SATIŞ LİSTESİNE ikinci ürünü ekleriz.
Satış tarihine bakarız, ürüne bakarız ürün önceden eklendiyse =====> SONRAKİ ÜRÜNE GEÇERİZ
Satış tarihine bakarız, ürüne bakarız ürün önceden eklenmediyse =====>SADELEŞTİRİLMİŞ SATIŞ LİSTESİNE üçüncü ürünü ekleriz.
Satış tarihine bakarız, ürüne bakarız ürün önceden eklenmediyse =====>SADELEŞTİRİLMİŞ SATIŞ LİSTESİNE dördüncü ürünü ekleriz.
Satış tarihine bakarız, ürüne bakarız ürün önceden eklendiyse =====> SONRAKİ ÜRÜNE GEÇERİZ
Satış tarihine bakarız, ürüne bakarız ürün önceden eklendiyse =====> SONRAKİ ÜRÜNE GEÇERİZ

böylece daha sade bir SATIŞ FİYAT LİSTEMİZ olur.Böyle bir sadeleştirme işlemi sonrasında yukarıdaki listemiz şu şekilde olacaktır.

27.11.2017 ----- A ALICISI ------- X ÜRÜNÜ) ----- 2 KOLİ ----- 7 ₺
28.11.2017 ----- A ALICISI ------- X ÜRÜNÜ ----- 3 KOLİ ----- 7 ₺
29.11.2017 ----- B ALICISI ------- X ÜRÜNÜ ----- 10 KOLİ ----- 7 ₺

Yukarıda (belki fiyata bakabiliriz) diye işaret ettiğim nokta ise şudur. Eğer gün içerisinde fiyat değişirse bunu yakalayabilmek için bakabiliriz dedim ama bu hem çok istisnai bir durum hem de mukayese ederken aynı gün için 2 farklı satış fiyatı oluşacağı için mukayese açısından anlam kargaşası olur.Bu yüzden sadeleştirme işleminde sadece satış tarihi ve ürün tarayarak sadeleştirme yapsak yeterli.Bir tür satış fiyatı örneklendirmesi yapıyoruz kısacası.Yani biz o satış gününde örnek üründen ilk satış fiyatı örneğini aldıktan sonra isterse o üründen yüzlerce satılsın bize ilk aldığımız örnek yeterli olacaktır.

Şimdi elimizdeki satış fiyatları ile maliyet fiyatlarını mukayese ederek kar-zarar hesaplayalım.Burada 2 algoritma söz konusu.Yine kafa karışıklığı olmaması için sıra ile ifade edeyim.İlk algoritma ORTALAMA FİYAT isminde olsun ve bulunan ortalama maliyet ile satış fiyatını karşılaştırarak bize durum ifade etsin.Söz konusu örnekte ortalama maliyetin 4,21 ₺ olduğunu görüyoruz.Bu durumda

27.11.2017 ----- tarihinde ------- X ÜRÜNÜ ----- 2,79 ₺ kar ile satılmıştır.
28.11.2017 ----- tarihinde ------- X ÜRÜNÜ ------ 2,79 ₺ kar ile satılmıştır.
29.11.2017 ----- tarihinde ------- X ÜRÜNÜ ----- 2,79 ₺ kar ile satılmıştır.

sonucu elde edilecektir.Ortalama maliyet için HESAPLA butonu tasarlanmıştı. Bu işlem için de ayrı bir buton tasarlanırsa memnun olurum.
Şimdilik bu kadar.İkinci algoritmayı daha sonra rica edeceğim.Şimdiden teşekkürler...
 

Ekli dosyalar

Son düzenleme:

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
Sayın @machool,
#25 No.lu mesajınızla ilgili olarak;
Eklediğim dosyayı test ediniz, Filtreleme özelliklerinin Kodların çalışmasına etkisi engellenmiştir.
İyi çalışmalar...
 

Ekli dosyalar

Katılım
17 Şubat 2010
Mesajlar
226
Excel Vers. ve Dili
excel 2007 türkçe
Altın Üyelik Bitiş Tarihi
03-11-2020
Sayın @machool,
#25 No.lu mesajınızla ilgili olarak;
Eklediğim dosyayı test ediniz, Filtreleme özelliklerinin Kodların çalışmasına etkisi engellenmiştir.
İyi çalışmalar...
Çok çok teşekkür ederim. Ben leb diyorum siz Çorum'u anlıyorsunuz. 26 nolu mesajıma yardımcı olabilirseniz sevinirim.Şimdiden teşekkürler.Kolay gelsin...
 

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
Sayın @machool,
Teşekkür ederim.
26 No.u yeni konunuzu incelenecektir.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Tekrar merhaba.Sayın turist'in çözümünün ihtiyacınızı karşılamasına sevindim.

Yalnız benim cevabımla ilgili tespitinizin doğru olmadığını belirtmeliyim.
Şöyleki; eklediğim son belgede kod tarafından AF sayfası G sütununa aşağıdaki dizi formülü uygulanıp bulunan sonuçlar G sütununa DEĞER olarak yapıştırılmaktadır.
Formül metninin uzunluğu nedeniyle VBA üzerinden dizi formülüne dönüştürme işlemi yapılamadığından sayfa adını kısaltmak gerekti sadece.
Siz aşağıdaki formülü sayfa isimlerini kendi belgenizdeki gibi uygulayabilirsiniz elbette.

Bu formül, uygulandığı satırdaki ürünün A sütunundaki alış tarihine göre FK sayfasındaki (firma vs kontrolü elbette mevcut) tarih aralıklarına göre,
FK sayfasındaki fiyatı bulmaktadır, tarih çakışması yoksa da AF sayfası F sütunundaki (alış faturasındaki) fiyatı vermektedir.
Örneğin; AF sayfası 6'ncı satırdaki ÇUVAL ŞEKER 50 KG. ürünü içeren 27.12.2017 tarihli ERCEN CASH alış faturasındaki fiyat 138,50 iken G6 hücresindeki formül sonucu FK sayfası 1146'ncı satırdaki 143,00 fiyatı bulmaktadır.
Benzer şekilde 8'inci satırdaki 25.12.2017 tarihli ENDI GIDA ÇAYKUR KAMELYA 1000 GR. (1*)(12*) ADET faturasındaki fiyat 21,97 iken FK sayfası 564'üncü satırdaki 20,13 fiyatını bulur. vs, vs.

Formül aşağıda. Bu formülü;
-- AF sayfası G2 hücresine yapıştırın,
-- formülü yapıştırdığınız G2 hücresini seçin ve F2 tuşuna basarak hücre içerisine girin,
-- ardından da CTRL ve SHIFT tuşları basılı durumdayken ENTER tuşuna basarak işlemi tamamlayın.
İşlemi doğru yapmışsanız formül kendiliğinden {....} gibi köşeli parantez arasına alınmış olacaktır.
Dizi formülüne dönüştürme işleminin ardından da liste boyunca kopyalayın.
=EĞERHATA(KAYDIR(FK!$E$1;BÜYÜK(EĞER(FK!$A$2:$A$1151=B2;EĞER(FK!$B$2:$B$1151=C2;EĞER(FK!$C$2:$C$1151<=A2;EĞER(FK!$D$2:$D$1151>=A2;SATIR(FK!$D$2:$D$1151)))));1)-1;0);F2)
 
Katılım
17 Şubat 2010
Mesajlar
226
Excel Vers. ve Dili
excel 2007 türkçe
Altın Üyelik Bitiş Tarihi
03-11-2020
Sayın @Ömer BARAN mesajınızı detaylı şekilde inceleyip cevap yazacağım.

Ama öncesinde bir konuda daha yardımınıza ihtiyacım var. Sayın @turist ile yaptığımız görüşme sonucunda kar-zarar excelinin doğru sonuçlara yönlendirmeyeceği sonucuna vardık.Bu sebeple #26 nolu mesajımı dikkate almayınız. Şimdiki ihtiyacımız ise şu şekilde.

Maliyet hesabı yapan excel için verileri bir muhasebe programından excel formunda çekiyoruz. Fakat maliyet hesaplarının KDV hariç tutarlar ile hesaplanması esasmış.Girilen bilgilerin (Fiyat Kartları - Alış faturaları ) bazıları KDV dahil olarak girilmiş. Bu verileri KDV hariç şekline getirmeyi amaçlıyoruz.

Ürün fiyat bilgilerini alabildiğimiz 2 farklı yer (Fiyat Kartları - Alış faturaları ) vardı. Burada Alış faturalarındaki fiyatları KDV hariç düzeye çekmek nispeten kolay. Çünkü BİRİM FİYAT yanında KDV dahil-hariç bilgisi ve kdv oranı yazıyor.

KDV dahil-hariç bilgisi H ise fiyatı aynen al ; D ise fiyatı böl (KDV oranına göre değişir şekilde 1 veya 1,01 veya 1,08 veya 1,18 formül aşağıda) gibi bir mantık yürütülebilir.

Nispeten zor olan kısım ise Fiyat Kartları sekmesinde.Çünkü maalesef muhasebe programı ürünlerin birim fiyatlarını ve KDV D-H durumunu verirken bu sekmede KDV oranlarını vermiyor. Verseydi KDV durum D olanları filitrelerdik sonrasında BİRİMFİYAT / ((100+KDV ORANI)/100)) oldu bitti. Bu durumda ne yapabiliriz? İlgili ürününün KDV oranını STOK sekmesinden (-ki orada mevcut) çağırabiliriz. Peki Fiyat Kartları sekmesinde olan bir ürün STOK sekmesinde yok ise bu durumda ne yapacağız? Bu durumda bir şey yapmaya gerek yok. Zira biz STOK sekmesinde olan ürünlerin maliyetini hesaplamayı hedeflediğimiz için eğer bir ürün STOK SEKMESİNDE yok ise o ürünün KDV Hariç fiyatına ihtiyaç da yok demektir. Stok sekmesinde olmayıp FİYAT KARTLARI sekmesinde olan bu gibi ürünler için işlem yapılmadan geçilebilir.

Bu fiyat dönüşümü ayrı bir excel olarak hazırlanabileceği gibi MALİYET HESAPLAYAN EXCEL ile tümleşik halde de tasarlanabilir. Ayrı excel olması durumda elde edilen KDV Hariç fiyatları kopyala-yapıştır yöntemi ile MALİYET HESAPLAYAN EXCELE aktarıp sonrasında maliyet hesaplatılabilir. İkinci durumda ise önce fiyatlar KDV hariç duruma çekilir (mesela bir butonla) Sonrasında maliyet hesabı yapılabilir(HESAPLA BUTONU).

Örnek dosya boyut sınırlaması sebebiyle Google Drive'a yüklenmiştir.

https://drive.google.com/file/d/1rZVkuDtArtIqCtIKdrwTv1rHCO8ebIS0/view?usp=sharing


Umarım açıklayabilmişimdir. Yardımlarınız için şimdiden teşekkürler...
 
Katılım
17 Şubat 2010
Mesajlar
226
Excel Vers. ve Dili
excel 2007 türkçe
Altın Üyelik Bitiş Tarihi
03-11-2020
Tekrar merhaba

Sayın @Ömer BARAN mesajınızı detaylı şekilde inceleyip cevap yazacağım
demiştim.

Yolladığınız dosyayı tekrar incelediğimde haklı olduğunuzu gördüm. Hatalı yazdığım için özür dilerim. Fiyatları çağırma mantığı doğru çalışıyor.Yani önce FK sekmesinde arıyor.Uyan bir tanımlama yoksa AF sekmesinden çağırıyor. Stok adedine ulaşıncaya kadar yıl sonundan yılbaşına doğru az önce ifade ettiğimiz mantıkla fiyat çağırarak maliyet hesabı yapıyor.

Fakat şöyle bir durum var.Bir ürün için FK sekmesinde bir kampanya tanımlanmışsa stok sayısı 2017 alımlarını aşsa bile "Önceki dönem eksik fiyat bilgisi" hatasını vermiyor. FK sekmesinde bir tanımlama yoksa gereken hatayı veriyor.Örnek dosyadaki X ürünü bu hataya uyuyor. Bu konuda yardımcı olursanız alternatif bir çözümümüz olacak.Şimdiden teşekkürler.....
 

Ekli dosyalar

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Kısa olmak koşuluyla hangi sonucun alınması lazım belirtir misiniz?
.
 
Son düzenleme:
Katılım
17 Şubat 2010
Mesajlar
226
Excel Vers. ve Dili
excel 2007 türkçe
Altın Üyelik Bitiş Tarihi
03-11-2020
Kısa olmak koşuluyla hangi sonucun alınması lazım belirtir misiniz?
Yaptığınız excelde stok>Alım faturaları toplamı varsa HER ZAMAN "Önceki dönem eksik fiyat bilgisi " versin.
Örnek stokta 123 adet X ürünü var ama alım faturaları toplamı 100 ediyor. Manası şudur 100 adet 2017 yılı içinde alınmış ama 23 adet önceki yıllara ait. "Önceki dönem eksik fiyat bilgisi " vermesi gerek. Bu kadar :)

Siz zaten bunu yaptınız ama FK sekmesinde tanımlı olmayan ürünler için yaptınız. Hata örneğine 2 ürün ekledim incelediyseniz. 2 ürün de 2017 alım miktarlarını aşmasına rağmen sadece Y ürünü için hata veriyor.

X ürünü için 999 >100
Y ürünü için 11>10

999 adet olan X ürünü için hata vermiyor.Ama vermesi lazım.Şimdiden teşekkürler....
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Rumuz yerine isimle hitap etmeyi tercih ederdim ama bilmiyorum malesef.

Sayın machool; stokun bir kısmı 2017 öncesinden geliyor (AF sayfasındaki miktardan fazla stok var).
STOK sayfasına, 2017'de alış faturası olan kısımla ilgili olarak fiyat bilgisi yazılıp yazıylmayacağını sormuştum.

Hata uyarısını anladım, hata mesajı mesele değil.
Hata mesajları isterseniz sayfada ilgili ürün satırına yazdırılabilir, zira herbir ürün için hata mesajı pek anlamlı değil.
 
Katılım
17 Şubat 2010
Mesajlar
226
Excel Vers. ve Dili
excel 2007 türkçe
Altın Üyelik Bitiş Tarihi
03-11-2020
Merhaba

Öncelikle malesefi ortadan kaldırmak adına ismim Kayhan.
Sonrasında ;

Hata uyarısını anladım, hata mesajı mesele değil.
Hata mesajları isterseniz sayfada ilgili ürün satırına yazdırılabilir, zira herbir ürün için hata mesajı pek anlamlı değil.
fikrinize kesinlikle katılıyorum.

Sayın machool; stokun bir kısmı 2017 öncesinden geliyor (AF sayfasındaki miktardan fazla stok var).
STOK sayfasına, 2017'de alış faturası olan kısımla ilgili olarak fiyat bilgisi yazılıp yazıylmayacağını sormuştum.
burada neyi kastettiğinizi anlamadım.Stok sayfasında zaten hesaplanıp ortaya çıkan maliyetleri yazıyoruz.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Kayhan Bey, mevcut kod'u aşağıdakiyle değiştirerek deneyiniz.
UYARILAR F sütununa yazdırılır.
Kod:
Private Sub CommandButton1_Click()
Set s = Sheets("STOK"): Set a = Sheets("AF")
Set f = Sheets("FK")
sson = s.Cells(Rows.Count, 1).End(3).Row
If sson < 2 Then Exit Sub
zaman = Timer
s.Range("E2:F" & Rows.Count).ClearContents
Application.DisplayAlerts = False
For Each shf In ThisWorkbook.Sheets
    On Error Resume Next
    If shf.AutoFilterMode Then shf.ShowAllData
    If shf.Name = "GEÇİCİ" Then Sheets("GEÇİCİ").Delete
Next
ThisWorkbook.Worksheets.Add: ActiveSheet.Name = "GEÇİCİ": Set brn = Sheets("GEÇİCİ")
brn.Cells.Clear
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
fson = f.Cells(Rows.Count, 1).End(3).Row
ason = a.Cells(Rows.Count, 1).End(3).Row
    a.[G2].Formula = "=IFERROR(OFFSET(FK!$E$1,LARGE(IF(FK!$A$2:$A$" & fson & "=B2,IF(FK!$B$2:$B$" & fson & "=C2,IF(FK!$C$2:$C$" & fson & "<=A2,IF(FK!$D$2:$D$" & fson & ">=A2,ROW(FK!$D$2:$D$" & fson & "))))),1)-1,0),F2)"
    a.[G2].FormulaArray = a.[G2].Formula: a.[G2].AutoFill Destination:=a.Range("G2:G" & ason)
    a.Range("G2:G" & ason).Calculate: a.Range("G2:G" & ason).Value = a.Range("G2:G" & ason).Value
For sat = 2 To sson
    a.Range("A1:F1").AutoFilter Field:=3, Criteria1:=s.Cells(sat, 2).Text
    If a.Cells(Rows.Count, 1).End(3).Row > 1 Then
        brn.Cells.Clear: a.[A1].CurrentRegion.Copy brn.[A1]
        For brnsat = 2 To brn.Cells(Rows.Count, 1).End(3).Row
            ds = s.Cells(sat, 3)
            gelen = WorksheetFunction.Sum(brn.Range("D2:D" & brnsat))
            If gelen <= ds Then
                maliyet = maliyet + (brn.Cells(brnsat, 4) * brn.Cells(brnsat, 7))
                st = st + brn.Cells(brnsat, 4)
            Else
                fark = ds - st: st = st + fark
                maliyet = maliyet + (fark * brn.Cells(brnsat, 7))
            End If
                If st = ds Then
                    s.Cells(sat, "E") = maliyet / ds
                    maliyet = 0: gelen = 0: ds = 0: fark = 0: st = 0
                    Exit For
                End If
            If brnsat = brn.Cells(Rows.Count, 1).End(3).Row And ds > st Then
                If WorksheetFunction.CountIf(f.[B:B], s.Cells(sat, 2)) > 0 Then
                    fark = ds - st
                    maliyet = maliyet + (fark * f.Cells(WorksheetFunction.Match(s.Cells(sat, 2), f.[B:B], 0), 5))
                    s.Cells(sat, "E") = maliyet / ds
                    s.Cells(sat, "F") = Format(fark, "#,##0") & " " & s.Cells(sat, 4) & " için fiyat bilgisi YOK."
                    maliyet = 0: gelen = 0: ds = 0: fark = 0: st = 0
                Else
                    s.Cells(sat, "F") = "FİYAT BİLGİSİ EKSİK"
                End If
            End If
        Next
    Else
        If WorksheetFunction.CountIf(f.[B:B], s.Cells(sat, 2)) > 0 Then
            s.Cells(sat, "E") = f.Cells(WorksheetFunction.Match(s.Cells(sat, 2), f.[B:B], 0), 5)
        End If
    End If
Next
a.Range("A1:F1").AutoFilter Field:=3
brn.Delete: Application.DisplayAlerts = True
a.[G:G].ClearContents
s.Activate
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
MsgBox "İşlem tamamlandı." & vbLf & "Süre: " & _
    Format(Timer - zaman, "0.00") & " saniye.", vbInformation, "..:: Ömer BARAN :.."
End Sub
 
Son düzenleme:
Üst