Versiyon Farkı Yüzünden FIFO Makrosu Tam Anlamıyla Çalışmamakta.

formentera

Altın Üye
Katılım
5 Eylül 2015
Mesajlar
127
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021 - İngilizce
Altın Üyelik Bitiş Tarihi
31-01-2026
Merhabalar,

Office 2013 kullanmaktayım. Hisse takibimi FIFO yöntemine göre yapmamı sağlayan bir makronun yazdığı dosyam bulunmakta. Ancak, benim office versiyonumda ilgili makro tam olarak çalışmamakta. Bunun için xlsx uzantılı şekle getirip dosyayı paylaşmam tavsiye edildi, ekte görebilirsiniz.
"Analiz" butonuna bastığımda "Q"(Çıkan Hissenin Giriş Maliyeti) sütununa bir veri işlememektedir. Sanırım bundan dolayı da Rapor butonuna bastığımda Rapor tablosunda da "X" ve "Y" sütunları boş kalmakta.
Not: Makro tüm versiyonlarda çalışır hale getirilemez mi?

Şimdiden teşekkür ederim.
 

Ekli dosyalar

muygun

Özel Üye
Katılım
6 Temmuz 2004
Mesajlar
9,182
Excel Vers. ve Dili
Excel-2003 Türkçe
Syn. formentera;
Üstteki ekinizde makrolar yok.
Ayrıca Başka bir pc de (32 bit portable excel 2010 da) denedim. makrolar sorunsuz çalışıyor.
Sizin ofis programınızda bir sorun olabilir mi?
(başka bir arkadaş 32 yada 64 bit Ofis 2007 ve üzerinde deneyip sonuç yazarsa sorunu anlamaya yada çözmeye katkısı olur.)
 

Ekli dosyalar

formentera

Altın Üye
Katılım
5 Eylül 2015
Mesajlar
127
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021 - İngilizce
Altın Üyelik Bitiş Tarihi
31-01-2026
Syn. formentera;
Üstteki ekinizde makrolar yok.
Ayrıca Başka bir pc de (32 bit portable excel 2010 da) denedim. makrolar sorunsuz çalışıyor.
Sizin ofis programınızda bir sorun olabilir mi?
(başka bir arkadaş 32 yada 64 bit Ofis 2007 ve üzerinde deneyip sonuç yazarsa sorunu anlamaya yada çözmeye katkısı olur.)
Teşekkürler sn. @muygun ben de ayrıca başka bilgisayar ve versiyonda kontrol edicem.
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
.

Windows 10 64 bit, Excel 2016 Sorun yok. Makrolar çalışıyor.

.
 

Suskun

Altın Üye
Altın Üye
Katılım
27 Kasım 2006
Mesajlar
292
Excel Vers. ve Dili
Excel 19
Altın Üyelik Bitiş Tarihi
24.05.2032
Windows 10 64 bit Excel 2019 plus makrolar çalışıyor.
Sanırım @formentera ortalama değer sonucunu fifo gibi görmek istediğinden tam anlamıyla çalışmadığını düşünüyor.
 

formentera

Altın Üye
Katılım
5 Eylül 2015
Mesajlar
127
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021 - İngilizce
Altın Üyelik Bitiş Tarihi
31-01-2026
Tşk. ederim İdris Bey.
Syn formentera nın ofis programına yoğunlaşması ve çözümü kendi pc sinde araması gerekiyor gibi görünüyor.
Hocam selam, ofis 2019'u sildim office 2016 yükledim. Ben neyi yanlış yapıyorum, hiçbir fikrim yok. Dosyamız ektedir. Şimdi Analiz ve Rapor butonlarına basıyorum 400 hatası alıyorum. Yapılan analizi temizle adlı butonsa, diğer 2 butondan farklı olarak; "The macro may not be available in this workbook or all macros may be disabled" diyor. Halbuki Macro/security dediğimde all macros are enabled seçeneği seçili durumda bende.

Sorunu tespit eden var mıdır?
 

Ekli dosyalar

formentera

Altın Üye
Katılım
5 Eylül 2015
Mesajlar
127
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021 - İngilizce
Altın Üyelik Bitiş Tarihi
31-01-2026
Birşeyleri yanlış yapıyorsunuz.
Hocam, yanlış bir karakter olabilir mi burada? Bir de macro adları şu şekilde: Sayfa1.analiz, Sayfa1.rapor, Sayfa1.yapýlan_analizi_temizle
Bu isimlerden de sıkıntı olabilir mi, ofis silip başka vers. yükleyince emin olamadım isimleri böyle miydi diye.

Sub analiz()
Application.ScreenUpdating = False
'On Error Resume Next
Set s1 = ThisWorkbook.Worksheets("islem")
Set s2 = ThisWorkbook.Worksheets("hs")
s2.Range("a1:ýv65536").ClearContents
s2.Cells(1, 1) = "NO"
süt = 2
For i = 3 To s1.Range("d65536").End(xlUp).Row
If WorksheetFunction.CountIf(s1.Range("d3:d" & i), s1.Cells(i, "d")) = 1 Then
s2.Cells(1, süt) = s1.Cells(i, "d")
süt = süt + 1
End If
Next i

For i = 3 To s1.Range("d65536").End(xlUp).Row
bulunansüt = WorksheetFunction.Match(s1.Cells(i, "d"), s2.Range("a1:ýv1"), 0)
For k = 1 To s1.Cells(i, "f")
sonsat = s2.Cells(Rows.Count, bulunansüt).End(xlUp).Row + 1
s2.Cells(sonsat, 1) = sonsat - 1
s2.Cells(sonsat, bulunansüt) = s1.Cells(i, "e")
Next k
Next i

s1.Range("h3:s65536").ClearContents
For i = 3 To s1.Range("d65536").End(xlUp).Row

If s1.Cells(i, "f") <> "" Then
s1.Cells(i, "h") = WorksheetFunction.SumIf(s1.Range("d3:d" & i), s1.Cells(i, "d"), s1.Range("f3:f" & i))
s1.Cells(i, "ý") = s1.Cells(i, "e") * s1.Cells(i, "f")
s1.Cells(i, "j") = WorksheetFunction.SumIf(s1.Range("d3:d" & i), s1.Cells(i, "d"), s1.Range("ý3:ý" & i))
End If

If s1.Cells(i, "g") <> "" Then
toplam = 0
s1.Cells(i, "L") = WorksheetFunction.SumIf(s1.Range("d3:d" & i), s1.Cells(i, "d"), s1.Range("g3:g" & i))
s1.Cells(i, "m") = s1.Cells(i, "e") * s1.Cells(i, "g")
s1.Cells(i, "n") = WorksheetFunction.SumIf(s1.Range("d3:d" & i), s1.Cells(i, "d"), s1.Range("m3:m" & i))
s1.Cells(i, "o") = WorksheetFunction.SumIf(s1.Range("d3:d" & i), s1.Cells(i, "d"), s1.Range("p3:p" & i)) + 1
s1.Cells(i, "p") = s1.Cells(i, "L")
bulunansüt = WorksheetFunction.Match(s1.Cells(i, "d"), s2.Range("a1:ýv1"), 0)
For k = 2 To s2.Range("a65536").End(xlUp).Row
If s2.Cells(k, "a") >= s1.Cells(i, "o") And s2.Cells(k, "a") <= s1.Cells(i, "p") Then
toplam = toplam + s2.Cells(k, bulunansüt)
End If
Next k
s1.Cells(i, "q") = toplam
s1.Cells(i, "r") = s1.Cells(i, "m") - s1.Cells(i, "q")
s1.Cells(i, "s") = WorksheetFunction.SumIf(s1.Range("d3:d" & i), s1.Cells(i, "d"), s1.Range("r3:r" & i))
End If

Next i
Application.ScreenUpdating = True
MsgBox "Islem TAMAM.", vbInformation
End Sub

Sub rapor()
Application.ScreenUpdating = False
'On Error Resume Next
Dim sonn, sonsatir, i
Set s1 = ThisWorkbook.Worksheets("islem")
Set s2 = ThisWorkbook.Worksheets("hs")
s1.Range("v3:ae65536").ClearContents
sonn = s1.Range("d65536").End(xlUp).Row

For i = 3 To s1.Range("d65536").End(xlUp).Row
If WorksheetFunction.CountIf(s1.Range("d3:d" & i), s1.Cells(i, "d")) = 1 Then
sonsatir = s1.Range("v65536").End(xlUp).Row + 1
s1.Cells(sonsatir, "v") = s1.Cells(i, "d")
s1.Cells(sonsatir, "w") = WorksheetFunction.SumIf(s1.Range("d3:d" & sonn), s1.Cells(sonsatir, "v"), s1.Range("f3:f" & sonn))
s1.Cells(sonsatir, "x") = WorksheetFunction.SumIf(s1.Range("d3:d" & sonn), s1.Cells(sonsatir, "v"), s1.Range("ý3:ý" & sonn))
s1.Cells(sonsatir, "y") = s1.Cells(sonsatir, "x") / s1.Cells(sonsatir, "w")

s1.Cells(sonsatir, "z") = WorksheetFunction.SumIf(s1.Range("d3:d" & sonn), s1.Cells(sonsatir, "v"), s1.Range("g3:g" & sonn))
s1.Cells(sonsatir, "aa") = WorksheetFunction.SumIf(s1.Range("d3:d" & sonn), s1.Cells(sonsatir, "v"), s1.Range("m3:m" & sonn))
If s1.Cells(sonsatir, "z") > 0 And s1.Cells(sonsatir, "aa") > 0 Then s1.Cells(sonsatir, "ab") = s1.Cells(sonsatir, "aa") / s1.Cells(sonsatir, "z")

s1.Cells(sonsatir, "ac") = s1.Cells(sonsatir, "w") - s1.Cells(sonsatir, "z")
s1.Cells(sonsatir, "ad") = s1.Cells(sonsatir, "x") - s1.Cells(sonsatir, "aa")
If s1.Cells(sonsatir, "ac") > 0 And s1.Cells(sonsatir, "ad") > 0 Then s1.Cells(sonsatir, "ae") = s1.Cells(sonsatir, "ad") / s1.Cells(sonsatir, "ac")

End If
Next i
Application.ScreenUpdating = True
MsgBox "Islem TAMAM.", vbInformation
End Sub

Sub yapýlan_analizi_temizle()
Set s1 = ThisWorkbook.Worksheets("islem")
Set s2 = ThisWorkbook.Worksheets("hs")
s1.Range("h3:ae65536").ClearContents
s2.Range("a1:ýv65536").ClearContents

End Sub
 

muygun

Özel Üye
Katılım
6 Temmuz 2004
Mesajlar
9,182
Excel Vers. ve Dili
Excel-2003 Türkçe
Set s1 = ThisWorkbook.Worksheets("islem")
Set s2 = ThisWorkbook.Worksheets("hs")

Buradaki sayfa isimleri ile dosyadaki sayfa isimleri aynı olmalı
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,331
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu kodda sanki Türkçe karakter sorunu var gibi..

Sub yapýlan_analizi_temizle()
Set s1 = ThisWorkbook.Worksheets("islem")
Set s2 = ThisWorkbook.Worksheets("hs")
s1.Range("h3:ae65536").ClearContents
s2.Range("a1:ýv65536").ClearContents
End Sub
 

formentera

Altın Üye
Katılım
5 Eylül 2015
Mesajlar
127
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021 - İngilizce
Altın Üyelik Bitiş Tarihi
31-01-2026
Set s1 = ThisWorkbook.Worksheets("islem")
Set s2 = ThisWorkbook.Worksheets("hs")

Buradaki sayfa isimleri ile dosyadaki sayfa isimleri aynı olmalı
Hocam müjdemi isterim.
macro'da yazan o y üstü çizgili tüm harfleri "i" ile değiştirdim. run macro butonunu kullanıp debug'a bastım hatalı satırları sarıya boyayıp gösterdi, dikkat ettim hepsinde o harf vardı. Onları i yapıp tüm macrolar düzeldi. Macro adlarından da "sayfa1" kelimesini sildim, butonlara tekrar makroları atadı. ve çalıştı.
Ancak, sn. @Suskun'un dediği gibi Kalan maliyeti FIFO'ya göre hesaplamamakta. "AD13"hücresinde "HOP" adlı firmadan kalan 15 lotumuza istinaden 1850 yazıyor. Ancak, elimizde kalan 15 lot da son yaptığımız girişten kaldı. Son giriş birim başı: "100 lira" idi. Yani, orada 1850 yerine 1500 yazmalıydı.

Orası dışında bir problemim kalmadı, en azından sonunda macroları çalıştırabildik bende de.
 

Ekli dosyalar

formentera

Altın Üye
Katılım
5 Eylül 2015
Mesajlar
127
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021 - İngilizce
Altın Üyelik Bitiş Tarihi
31-01-2026
Merhaba;
Deneyin. (umarım doğru sonuç veriyordur.)
İyi çalışmalar.
Sn. @muygun , harikasınız.
Sizi günlerdir yoruyorum. FIFO'ya göre hesaplıyor son attığınız kalan maliyetini de. Çok teşekkür ederim. Emeğinize sağlık. Ayrıca, farklı versiyonlarda dosyayı kontrol eden tüm arkadaşlara da teşekkürler.
 

formentera

Altın Üye
Katılım
5 Eylül 2015
Mesajlar
127
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021 - İngilizce
Altın Üyelik Bitiş Tarihi
31-01-2026
Sn. @muygun nasılsınız?
Emeğinizin çok büyük olduğu excel'de şöyle bir şey var. Analiz butonuna bastığımda Q10 sütununa (Çıkan hissenin giriş maliyeti) bir değer gelmemekte. Bundan dolayı S10 sütununda da Kar/zarar yanlış hesaplıyor haliyle şu anda.
Dikkatimi bir şey çekti. SASA adlı firma, hisse alıp, tüm hisselerini sattıktan sonra, bir kez daha hissesini alıp da bir kısmını sattığım tek firma ve Q10 da o satırda. Örnek olarak başka bir hisseden de hepsini elden çıkardım, sonra yine alıp bir kısmını sattım ve yine q sütunu hesaplanamadı tire çıktı orada.
 

Ekli dosyalar

muygun

Özel Üye
Katılım
6 Temmuz 2004
Mesajlar
9,182
Excel Vers. ve Dili
Excel-2003 Türkçe
Merhaba;
Dosyanın yapısını biraz değiştirdim.
Her satır kendi satırının üzerindekileri analiz ederek lokal çalışıyor.
Bir yerde bir problem kaldı (dosyada belirttim)
Bunun dışında bir hata göremedim ama tabiki dosyayı kullanacak olanın tespiti daha yerinde olacaktır.
Dosyayı kontrol edin. Veri giriş çıkışı yaparak sonucu gözlemleyin. Olması gerekenden farklı sonuç varsa belirtin.
İyi çalışmalar.
 

Ekli dosyalar

formentera

Altın Üye
Katılım
5 Eylül 2015
Mesajlar
127
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021 - İngilizce
Altın Üyelik Bitiş Tarihi
31-01-2026
Merhaba;
Dosyanın yapısını biraz değiştirdim.
Her satır kendi satırının üzerindekileri analiz ederek lokal çalışıyor.
Bir yerde bir problem kaldı (dosyada belirttim)
Bunun dışında bir hata göremedim ama tabiki dosyayı kullanacak olanın tespiti daha yerinde olacaktır.
Dosyayı kontrol edin. Veri giriş çıkışı yaparak sonucu gözlemleyin. Olması gerekenden farklı sonuç varsa belirtin.
İyi çalışmalar.
Teşekkürler hocam.
Evet, dediğiniz gibi son kısımda 2 sütunu kalanın giriş maliyetidüzgün çalışmıyor. Benim bir de anlamadığım burada y: En son alış birim fiyatıyla, z: en son satış birim fiyatının aynı değere sahip olması. Acaba oraların aynı değer olması mı işlemimizi bozan diye düşünüyorum.
Mesela, en son W17 hücresinde "dene" adlı hisseden elimizde kalan 1adet birim kalmış, kalanın giriş maliyeti için, o 1 birimi aldığımız son fiyat yazmalı FIFO'ya göre; o da 11 ama 22 yazıyor.
 
Üst