KOJE NOSIŠ "TIKE"? DARKO VLAJKOVIĆ, KONSULTANT MENADŽMENT CENTAR BEOGRAD
Svaka veća kompanija danas koristi neki od ERP-ova (SAP, Microsoft, Upis, M&I...) Međutim, koliko god oni bili napredni, Excel je i dalje alat broj jedan za analiziranje i izveštavanje. Prema istraživanju koje je sproveo Menadžment Centar Beograd, čak 92% controllera koristi Excel za izveštavanje i budžetiranje. Problem koji se javlja u praksi je u tome koliko god da znamo sve moguće prečice i napredne funkcije, neke operacije su repetativne i izuzetno dosadne. Takve operacije nam oduzimaju puno vremena i one nemaju dodatnu vrednost, ponavljaju se iz meseca u mesec i onemogućavaju nas da se posvetimo analizi podataka koja bi nam omogućila donošenje boljih i kvalitetnijih odluka.
[caption id="attachment_17217" align="aligncenter" width="546"]![Darko VlakovicĚ - Copy](https://mcb.rs/storage/tinymce_upload/photos/shares/blog/2016/04/Darko-VlakovicĚ-Copy.jpg)
Postavlja se pitanje kako automatizovati takve operacije? Dobar primer toga sam našao u jednoj trgovinskoj kompaniji koja je imala problem sa sabiranjem količina. Oni su prebacivali podatke iz ERP-a u Excel podatke o robi. U pitanju su bile patike. U podacima, između ostalog, su bile i oznake za veličine (SIZE) i količine (QUANTITY). Ovde se javlja problem što ne postoji zbir količina svake grupe patika. Da bi controller izračunao količinu za svaku grupu patika morao je kod svakog međuzbira u koloni „F“ ručno da unosi formulu za zbir =SUM(....) Na primer, u ćeliji F2 treba da napiše formulu =SUM(F3:F8), u ćeliji F9 treba da se napiše formulu =SUM(F10:F13) i tako dalje. Razlog za ručno unošenje je taj što je broj redova ispod svakog međuzbira različit i oblast za sabiranje se menja. S obzirom da ova tabela ima preko 10.000 redova, ovo controlleru oduzima skoro jedan dan posla – a takvih situacija ima 5 puta mesečno. Ukratko, 5 dana potrošenog vremena!
Rešenje koje sam pronašao je VBA programiranje! VBA u Excelu upravo služi da se automatizuju ovakve operacije koje oduzimaju puno vremena i koje se relativno redovno ponavljaju. Sada će već mnogi odustati u čitanju ovog članka i pomisliti kako je to u pitanju neki kilometarski kod. Međutim, situacija je baš suprotna, i čitav kod staje u svega dvadesetak redova.
Prvo, otvorite tab Developer u vašem Ribbonu a zatim idite na VBA editor, otvorite novi modul i unesite sledeći kod:
’Odmah na početku definišemo varijable
Sub sabiranje()
Dim kraj As Long
Dim red1, red2 As Integer
’Zatim aktiviramo sheet u kome hoćemo da izvršimo operaciju
Sheet1.Activate
’Pošto ćemo raditi Do While petlju moramo da nađemo poslednji red u tabeli do kog će petlja vrteti. Zato koristimo sledeće 3 linije koda.
Range("D100000").Select
Selection.End(xlUp).Select
kraj = Selection.Row
’ Do while petlju sam radio u koloni „D“ zato što su za svaku grupu patika svi redovi za sve veličine popunjeni izuzev subtotala.
Range("D2").Select
Selection.End(xlDown).Select
’Stavio sam da petlja radi do poslednjeg reda u tabeli
Do While red2 < kraj
’ Definisao sam početak i kraj oblasti tj Range-a za svaku grupu patika
red1 = Selection.Row
Selection.End(xlDown).Select
red2 = Selection.Row
’Zatim sam sabrao ćelije u tom Range-u ali iz kolone F jer se tu nalaze količine tj kvantiteti i rezultat sam ubacio u kolonu F u sivu ćeliju koja se nalazi na vrhu
Cells(red1 - 1, 12) = WorksheetFunction.Sum(Range(Cells(red1, 12), Cells(red2, 12)))
’Prebacio sam se u koloni „D“ na sledeću grupu patika
ActiveCell.Offset(2, 0).Select
Loop
’Kada sve završi, da se vrati u ćeliju A1
Range("A1").Select
End Sub
Kada startujemo makro, on će u ćeliju F2 da upiše rezultat 48, u ćeliju F9 rezultat 7 i tako dalje. Konačan rezultat izgledaće kao na sledećoj slici:
Za ovaj kod mi je bilo potrebno dva sata da ga osmislim tako da može da završi posao u 10.000 redova za četiri sekunde. Sa druge strane, controlleru je bilo potrebno preko pet dana mukotrpnog rada.
Dobar cost-benefit, zar ne?
Autor teksta je Darko Vlajković, Konsultant, Menadžment Centar Beograd. Tekst je preuzet iz Controlling magazina 07.