← Back to list

How To Optimize Basic Storage With ABC Decision Support Systems.

Im a Industrial engineering first year student and with my group we made Basic Storage Optimization using ABC analyzing system on excel.

Ayhan Mert TÜREL · 2026-06-10 15:38 · 3 claps · 3.1 min read
#data-engineering #vba #ai #optimization #basics
Open on Medium ↗
Wiki topics: RAG · RAG & Retrieval AI · AI · General EDU · Education & Learning 🔧 · Data Engineering ⚖️ · Law & Justice

How To Optimize Basic Storage With ABC Decision Support Systems.

Im a Industrial engineering first year student and with my group we made Basic Storage Optimization using ABC analyzing system on excel.

What our system does is,basically consists these steps, which are:

1:Find every items sale frequencies. Give them POINTS (Weighted Movement Score) based on their frequencies + Executive Priority. Categorize the items as 3 groups, based on their frequency + Executive Priority. Which are POINTS.

2:After that you want to get their cumulative percentage of POINTS.Then make groups based on their cumulative percentage.%80 is A %15 is B and %5 C group.

For example: Lets say we have 100 items worth 100 POINTS. 10 of these items worths 80. that would make that 10 items cumulative percentage %80.

So we have to put them to the A group.

As you can see we sort them by their importance.

A is the most important because they are the %80 of the demand.

So as you can guess A grouped items will be going in n out much more.

So we put A group closest to the door and C group farthest away.

So what that does is. Its Optimizes the walk time.

3:After groups set.Our data’s are ready to work. But there is a set of problems.

The problems are our data tends to change in certian times for unkown reasons.

Because in demand we have these effects: Trend Effect, Seasonal Effect,

Cyclical Effect,Irregular/Random Effect. It doesnt matter which one causes the problem. We have a simple solution for all of this.

We call it Executive Priority.

When you know a certian item will sell in a certian time. You can just simply update the Executive Priority.

Which will be added to your point and change you items group.

Heres my excel code:

Option Explicit

Sub DepoDSS_Guncelle()

Dim wsU As Worksheet Dim wsL As Worksheet

Dim sonSatirU As Long Dim sonSatirL As Long Dim i As Long

Dim toplamPuan As Double Dim kumulatif As Double Dim lokasyonIndex As Long Dim toplamLokasyon As Long

Dim dictKontrol As Object Dim kod As String Dim yoneticiOnceligi As Variant Dim frekans As Double Dim nihaiPuan As Double

Set wsU = ThisWorkbook.Worksheets(“Urunler”) Set wsL = ThisWorkbook.Worksheets(“Lokasyonlar”)

sonSatirU = wsU.Cells(wsU.Rows.Count, “F”).End(xlUp).Row sonSatirL = wsL.Cells(wsL.Rows.Count, “F”).End(xlUp).Row

‘ 1) AYNI URUN KODU KONTROLU Set dictKontrol = CreateObject(“Scripting.Dictionary”)

For i = 2 To sonSatirU kod = Trim(wsU.Cells(i, “F”).Value)

If kod <> “” Then If dictKontrol.exists(kod) Then MsgBox “Ayni Urun_Kodu birden fazla kez girilmis: “ & kod, vbExclamation Exit Sub Else dictKontrol.Add kod, 1 End If End If Next i

‘ 2) YONETICI ONCELIGI KONTROLU + NIHAI PUAN HESABI For i = 2 To sonSatirU

If Trim(wsU.Cells(i, “F”).Value) <> “” Then

If Trim(wsU.Cells(i, “I”).Value) = “” Then wsU.Cells(i, “I”).Value = 0 End If

yoneticiOnceligi = wsU.Cells(i, “I”).Value

If Not IsNumeric(yoneticiOnceligi) Then MsgBox “Yonetici_Onceligi sayisal olmali. Hata satiri: “ & i, vbExclamation Exit Sub End If

If yoneticiOnceligi <> 0 And yoneticiOnceligi <> 1 And yoneticiOnceligi <> 2 Then MsgBox “Yonetici_Onceligi sadece 0, 1 veya 2 olabilir. Hata satiri: “ & i, vbExclamation Exit Sub End If

frekans = Val(wsU.Cells(i, “H”).Value) nihaiPuan = frekans + (yoneticiOnceligi * 300)

wsU.Cells(i, “J”).Value = nihaiPuan

End If

Next i

‘ 3) LOKASYONLARI MESAFEYE GORE SIRALA With wsL.Sort .SortFields.Clear .SortFields.Add Key:=wsL.Range(“G2:G” & sonSatirL), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

.SetRange wsL.Range(“F1:J” & sonSatirL) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .Apply End With

toplamLokasyon = sonSatirL — 1

‘ 4) LOKASYON BOLGE TIPI For i = 2 To sonSatirL lokasyonIndex = i — 1

If lokasyonIndex <= toplamLokasyon 0.2 Then wsL.Cells(i, “H”).Value = “A” ElseIf lokasyonIndex <= toplamLokasyon 0.5 Then wsL.Cells(i, “H”).Value = “B” Else wsL.Cells(i, “H”).Value = “C” End If Next i

‘ 5) LOKASYON DOLULUKLARINI SIFIRLA For i = 2 To sonSatirL wsL.Cells(i, “I”).Value = “Bos” wsL.Cells(i, “J”).Value = “” Next i

‘ 6) URUNLERI NIHAI PUANA GORE SIRALA With wsU.Sort .SortFields.Clear .SortFields.Add Key:=wsU.Range(“J2:J” & sonSatirU), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

.SetRange wsU.Range(“F1:N” & sonSatirU) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .Apply End With

sonSatirU = wsU.Cells(wsU.Rows.Count, “F”).End(xlUp).Row

‘ 7) ESKI HESAP ALANLARINI TEMIZLE wsU.Range(“K2:N” & sonSatirU).ClearContents

‘ 8) TOPLAM NIHAI PUAN toplamPuan = Application.WorksheetFunction.Sum(wsU.Range(“J2:J” & sonSatirU))

If toplamPuan = 0 Then MsgBox “Toplam Nihai_Puan sifir olamaz.”, vbExclamation Exit Sub End If

‘ 9) KUMULATIF + ABC + HEDEF RAF + HEDEF BOLGE kumulatif = 0

For i = 2 To sonSatirU

If Trim(wsU.Cells(i, “F”).Value) <> “” Then

kumulatif = kumulatif + (wsU.Cells(i, “J”).Value / toplamPuan) wsU.Cells(i, “K”).Value = kumulatif wsU.Cells(i, “K”).NumberFormat = “0%”

If kumulatif <= 0.8 Then wsU.Cells(i, “L”).Value = “A” ElseIf kumulatif <= 0.95 Then wsU.Cells(i, “L”).Value = “B” Else wsU.Cells(i, “L”).Value = “C” End If

If i — 1 <= sonSatirL — 1 Then wsU.Cells(i, “M”).Value = wsL.Cells(i, “F”).Value wsU.Cells(i, “N”).Value = wsL.Cells(i, “H”).Value

wsL.Cells(i, “I”).Value = “Dolu” wsL.Cells(i, “J”).Value = wsU.Cells(i, “G”).Value Else wsU.Cells(i, “M”).Value = “Uygun_Raf_Yok” wsU.Cells(i, “N”).Value = “-” End If

End If

Next i

Application.CalculateFull MsgBox “Depo DSS guncellendi.”, vbInformation

End Sub


메타데이터
post_id
36116183cedb
slug
how-to-optimize-basic-storage-with-abc-decision-support-systems-36116183cedb
url
https://medium.com/@mavihancer1/how-to-optimize-basic-storage-with-abc-decision-support-systems-36116183cedb
canonical_url
https://medium.com/@mavihancer1/how-to-optimize-basic-storage-with-abc-decision-support-systems-36116183cedb
author_url
https://medium.com/@mavihancer1
status
ok
fetched_at
2026-06-16 19:09:56