Centar za edukaciju-BiH



#1 16.12.2024 13:13
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,904


Predmet:rasporedi kovanice EXCEL
Trebalo bi podjednako rasporediti kovanice na 5 osoba.
Ukupno broj kovanica je 85, a od toga je 24 kovanice po 50 centi, 28x1euro, 29x2eura, 4x5eura.

Iznos po osobi ne smije biti manji od 24 eura. To se moze rucno, ali problem je ako imamo vishe kovanica ili vishe osoba.

Pitanje:
Moze li se to sa VBA napraviti. Pada mi na pamet nekakva matrica i for - next petlja, ali ako moze neki savjet kako to zapoceti.

Prilozi:
Informacije o tipu datoteke za:zip  rasporediKovanice.zip
Preuzimanja:2
Velicina datoteke:6.14 KB


zivot je moja domovina.
↑  ↓

#2 16.12.2024 13:55
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,863


Predmet:Re:rasporedi kovanice EXCEL
Ukupan iznos je 118 ,kad podelis sa 5 dobijas maksimalni iznos 23.6 tako da svi iznosi ce biti mani od 24 kako si naveo .
Ja bi ti preporucio da napravis petlja od najveca kovanica i okrenes petlja po broj osoba tako da za svaka osoba sabiras iznos dok ne dodzes na do zadna kovanica .
Na primer imas 4 kovanice od po 5 e i prvi cetvoro ce dobiti po edna kovanica a 5 ti ce dobiti dve kovanice od po 2 eur i edna kovanica od 1 eur .
sledeci su kovanice od 2 eur i sad vec nisu 29 nego su 27 jer predhodno smo uzeli 2 da popunimo 5 ticu , i tako dalje do najmanja kovanica.
↑  ↓

#3 16.12.2024 16:21
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,904


Predmet:Re:rasporedi kovanice EXCEL
znaci FOR-NEXT petlja?
zivot je moja domovina.
↑  ↓

#4 17.12.2024 05:46
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,863


Predmet:Re:rasporedi kovanice EXCEL
mozez i for i=1 to 5
next i
↑  ↓

#5 17.12.2024 13:50
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,692


Predmet:Re:rasporedi kovanice EXCEL
PreuzmiIzvorni kôd (Visual Basic):
  1. Function Raspodjela(Optional BrojOsoba As Integer = 5)
  2.     Dim Kovanice As Object
  3.     Dim Vrijednosti As Object
  4.     Dim UkupnaVrijednost As Currency
  5.     Dim Apoen As Variant
  6.     Dim Podjela As Currency
  7.     Dim I, N As Integer
  8.     Dim KovanicaVrijednost As Currency
  9.     Dim BrojKovanica As Integer
  10.     Dim KovanicaRaspodjela As Integer
  11.     Dim OsobaIndex As Integer
  12.     Dim PodjelaPara() As Integer
  13.    
  14.     Set Kovanice = CreateObject("Scripting.Dictionary")
  15.     Kovanice.Add "50c", 24  ' 50 centi
  16.    Kovanice.Add "1e", 28   ' 1 euro
  17.    Kovanice.Add "2e", 29   ' 2 eura
  18.    Kovanice.Add "5e", 4    ' 5 eura
  19.    
  20.     Set Vrijednosti = CreateObject("Scripting.Dictionary")
  21.     Vrijednosti.Add "50c", 0.5
  22.     Vrijednosti.Add "1e", 1
  23.     Vrijednosti.Add "2e", 2
  24.     Vrijednosti.Add "5e", 5
  25.    
  26.     ReDim PodjelaPara(1 To BrojOsoba, 1 To 4)
  27.     UkupnaVrijednost = 0
  28.    
  29.     For Each Apoen In Kovanice.Keys
  30.         UkupnaVrijednost = UkupnaVrijednost + (Kovanice(Apoen) * Vrijednosti(Apoen))
  31.     Next Apoen
  32.  
  33.     Podjela = UkupnaVrijednost / BrojOsoba
  34.     OsobaIndex = 1
  35.    
  36.     For I = 1 To BrojOsoba
  37.         IznosPreostali = Podjela
  38.        
  39.         For Each Apoen In Array("5e", "2e", "1e", "50c")
  40.             KovanicaVrijednost = Vrijednosti(Apoen)
  41.             BrojKovanica = Kovanice(Apoen)
  42.             KovanicaRaspodjela = 0
  43.             Do While IznosPreostali >= KovanicaVrijednost And BrojKovanica > 0
  44.                
  45.                 If I = BrojOsoba Then
  46.                 KovanicaRaspodjela = BrojKovanica
  47.                 BrojKovanica = 0
  48.                 IznosPreostali = IznosPreostali - KovanicaVrijednost
  49.                 Else
  50.                 KovanicaRaspodjela = KovanicaRaspodjela + 1
  51.                 IznosPreostali = IznosPreostali - KovanicaVrijednost
  52.                 BrojKovanica = BrojKovanica - 1
  53.                 End If
  54.  
  55.             Loop
  56.             PodjelaPara(OsobaIndex, Application.Match(Apoen, Array("50c", "1e", "2e", "5e"), 0)) = _
  57.             PodjelaPara(OsobaIndex, Application.Match(Apoen, Array("50c", "1e", "2e", "5e"), 0)) + KovanicaRaspodjela
  58.             Kovanice(Apoen) = BrojKovanica
  59.         Next Apoen
  60.         OsobaIndex = OsobaIndex + 1
  61.     Next I
  62.    
  63.    
  64.     ' Ispis rezultata u Excel
  65.    Dim ImesSita As String
  66.     ImesSita = "Raspodjela kovanica"
  67.     Obrisi (ImesSita)
  68.     Dim ws As Worksheet
  69.     Set ws = ThisWorkbook.Sheets.Add
  70.     ws.Name = ImesSita
  71.    
  72.     ' Ispis naziva stupaca (kovanice)
  73.    ws.Cells(1, 1).Value = "Osoba"
  74.     ws.Cells(1, 2).Value = "50c"
  75.     ws.Cells(1, 3).Value = "1e"
  76.     ws.Cells(1, 4).Value = "2e"
  77.     ws.Cells(1, 5).Value = "5e"
  78.    
  79.     ' Ispis raspodjele po osobama
  80.    For I = 1 To BrojOsoba
  81.         ws.Cells(I + 1, 1).Value = "Osoba " & I
  82.         For N = 1 To 4
  83.             ws.Cells(I + 1, N + 1).Value = PodjelaPara(I, N)
  84.         Next N
  85.     Next I
  86.    
  87.     For I = 1 To BrojOsoba
  88.         Dim suma As Currency
  89.         suma = PodjelaPara(I, 1) * 0.5 + PodjelaPara(I, 2) * 1 + PodjelaPara(I, 3) * 2 + PodjelaPara(I, 4) * 5
  90.         ws.Cells(I + 1, 6).Value = "'  " & suma & " " & Chr(128)
  91.     Next I
  92.         Dim BrojApoena As Integer
  93.     For I = 2 To 5
  94.     BrojApoena = 0
  95.         For N = 2 To BrojOsoba + 1
  96.         BrojApoena = BrojApoena + ws.Cells(N, I).Value
  97.         Next N
  98.    ws.Cells(BrojOsoba + 2, I).Value = BrojApoena
  99.     Next I
  100.     MsgBox "Gotovo!", vbInformation
  101. End Function
  102. Function Obrisi(Naziv As String)
  103.     Dim ws As Worksheet
  104.    
  105.     On Error Resume Next
  106.     Set ws = ThisWorkbook.Sheets(Naziv)
  107.     On Error GoTo 0
  108.     If Not ws Is Nothing Then
  109.         Application.DisplayAlerts = False
  110.         ws.Delete
  111.         Application.DisplayAlerts = True
  112.     End If
  113. End Function

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#6 17.12.2024 16:34
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,904


Predmet:Re:rasporedi kovanice EXCEL
hvala, probat cu preraditi za vlastite potrebe.

Zapravo, osoba 1 ce imati samo 7 kovanica u dzepu, a osoba 5 ce imati 34 kovanice.
U slucaju da trebaju preplivati rijeku osoba 5 ce potonuti. hehehe
zivot je moja domovina.
↑  ↓

#7 17.12.2024 17:38
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,692


Predmet:Re:rasporedi kovanice EXCEL
apravio sam ono sto si trazio.
Samo sam postavio opcionalno da moze mijenjati broj osoba a u kodu mozes mijenati broj kovanica.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

Stranice (1):1


Sva vremena su GMT +02:00. Trenutno vrijeme: 2: 53 pm.