Stok Dağıtım Otomasyonu

Katılım
23 Ağustos 2022
Mesajlar
4
Excel Vers. ve Dili
2019 İngilizce
Problemden kısaca bahsetmek gerekirse, bir zincir işletmenin stok yönetimiyle ilgili.
Sorun şu şekilde, satışı yapılan ürünlerin şubeler arasında bazı eksiklikler ve fazlalıklar var.
Örneğin Ankara şubesinde X ürününden 250 adet fazla varken İstanbulda 100 adet ihtiyaç var.

Excelin sol kısmında malzemelerin kodları, tablodaki sütun başlıklarındaysa hangi şube olduğu yazıyor.


İhtiyaçlar rakam başında "-" olacak şekilde belirtilmiş. Yani X ürünü ile İstanbulun kesişiminde -100 olması o malzemeye istanbulda 100 adet ihtiyaç varmış demek.

Yapılmak istenen ise şubeler arasındaki bu rakamsal dengesizliğin fazla şubelerdeki malı eksik olanlara aktarmak.

İşin zor kısmı ise hangi ürün hangi şehirden nereye kaç tane aktarıldı onu da kaydetmek gerekiyor. Satır sayısı 4 bin civarında olduğu için otomasyon için uğraşıyorum ama kaç gündür beceremedim.



Staj yaptığım yerden istedikleri için bu görevi benim için çok önemli. Bu konuyla ilk defa çalıştığım için eksik anlatmış olabilirim, eksiğim varsa lütfen yönlendirin beni.



Örnek excel dosyası:

 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Boş satırın anlamı nedir?

Boş satır A sütununda değil sanırım.
İllerin sayım sonuçlarında eksik ya da fazla olmadığında hücre boş mu bırakılıyor?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Dosyanıza, Rapor ve Liste isimli iki boş excel sayfası ekleyin.

Aşağıdaki kodları çalıştırdığınızda
Rapor sayfasında dağıtımdan sonraki durum,
Liste sayfasında da sırasıyla, hangi üründen, hangi şehire, hangi şehirden ne kadar verildiği yazacak.

C++:
Sub Rapor()
    
    Veri = Worksheets("Sayfa1").Range("A1").CurrentRegion.Value
    ReDim Liste(1 To Rows.Count, 1 To 4)
    For i = 2 To UBound(Veri) - 1
        For k = 2 To UBound(Veri, 2)
            If Veri(i, k) < 0 Then
                Fark = Veri(i, k)
                For x = 2 To UBound(Veri, 2)
                    If x <> k And Veri(i, x) > 0 Then
                        Aktar = WorksheetFunction.Min(Abs(Fark), Veri(i, x))
                        Veri(i, x) = Veri(i, x) - Aktar
                        Fark = Fark + Aktar
                        Veri(i, k) = Fark
                        Say = Say + 1
                        Liste(Say, 1) = Veri(i, 1)
                        Liste(Say, 2) = Veri(1, k)
                        Liste(Say, 3) = Veri(1, x)
                        Liste(Say, 4) = Aktar
                        If Fark >= 0 Then Exit For
                    End If
                Next x
            End If
        Next k
    Next i
    Worksheets("Rapor").Cells.ClearContents
    Worksheets("Liste").Cells.ClearContents
    Worksheets("Rapor").Range("A1").Resize(UBound(Veri, 1), UBound(Veri, 2)) = Veri
    If Say > 0 Then Worksheets("Liste").Range("A1").Resize(Say, 4) = Liste
End Sub
 
Katılım
23 Ağustos 2022
Mesajlar
4
Excel Vers. ve Dili
2019 İngilizce
Boş satırın anlamı nedir?

Boş satır A sütununda değil sanırım.
İllerin sayım sonuçlarında eksik ya da fazla olmadığında hücre boş mu bırakılıyor?
Evet o şubede herhangi bir eksik ya da fazlalık olmadığını belirtiyor. Çook teşekkür ederim, tam istenen şekilde çalıştı. Sadece son satırdaki kalemi algılamıyordu ben de ekstradan kendim farazi bir satır ekleyerek olayı çözdüm. Ellerinize sağlık çok teşekkür ederim.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
For i = 2 To UBound(Veri) - 1

Buradaki en sondaki -1 ifadesini silin. Son satırı da işleme katacaktır.
 
Üst