Just nu i M3-nätverket
Gå till innehåll

Jämn Fördelning av värden typ "lagerbalansering".


Lastrom

Rekommendera Poster

Jag sitter med ett kalkylblad där det är otroligt många rader data. (exemplet är endast ett få)

 

Det är olika fördelning i kolumnerna B,C,D,E. dessa vill jag kunna fördela så lika som möjligt samt kunna se ex. hur mycket kolumn B måste skicka till C,D och E för att det ska bli jämt.

 

Oroligt tacksam för hjälp. har suttit hela dagen och nu blev jag så less så jag raderade alla formler och börjar från början.

Fordelning1.xlsx

Länk till kommentar
Dela på andra webbplatser

Klurigt problem..

 

I sig ett man egentligen vill iterera över, något formler inte direkt lämpar sig för.

Fördelningen kan jag få ordning på, på sätt och vis. Troligen är min lösning inte speciellt robust.

Men räkna ut vilka som gett till vilka...

 

Men nej, för att få en riktigt korrekt hantering av detta krävs nog VBA, kodning, och en smart algoritm.

 

Får jag fråga varför du försöker dig på att göra detta i Excel?

Länk till kommentar
Dela på andra webbplatser

Ove Söderlund

Håller helt med Monshi om att VBA är verktyget för att lösa frågeställningen och det är inte speciellt svårt att få till men det föreligger lite obekanta variabler som beror på frågeställningen.

 

Första steget är lätt, ta ut heltalsdelen samt resten. Utgår vi från exemplets rad A:

Art	LU	PI	SK	ÖV
A	2	3	3	5

Summan 2+3+3+5 = 13 vilket ger heltalsdelen 4 samt resten 1. Vi vet därför att snittet (fördelningen) blir 4 och att någon kolumn ska få resten.

 

Frågan som behöver besvaras när man går vidare med detta är _hur_ det ska fördelas. I ditt exempel har du fler tabelldelar som anges som viktiga för att se var de fördelade "delarna" går till vilken kolumn. Detta säger mig att vi då måste veta i vilken prio-ordning vi ska ta delar från ett stort värde och till vilket värde som det ska fördelas till, det minsta eller det näst minsta. Ett fiktivt exempel:

Art	LU	PI	SK	ÖV
A	15	10	5	0

Här har vi heltalsdelen 7 och resten 2. För en jämn (rättvis?) fördelning ska då resten ges till "LU" resp. "PI". Vi ser då att 7 enheter ska tas från "LU" och 2 enheter från "PI". Ska då "ÖV" få alla 7 enheter från "LU" eller 2 enheter från "PI" och därefter 5 enheter från "LU" och där igenom från "SK" 2 enheter från "LU".?

Länk till kommentar
Dela på andra webbplatser

Jag har velat undvika VBA i den mån det går då jag själv inte behärskar det till fullo samt att den person som ska använda kalkylbladen har dålig datorvana. Har suttit även idag och funderat och inser allt eftersom att det nog är VBA som gäller.

 

Prio-ordningen bör sättas enligt följande: LU 1á, PI 2á, SK 3é, ÖV 4é och fördelas till det minsta värdet. 

 

Tanken med detta kalkylblad är att använda det som "fördelningsrapport" och att det ska hämta sin data från andra kalkylblad som motsvarar rutan "Innan fördelning".

 

Arbetsordningen blir då följande:

*Hämta lager (till rutan "Innan fördelning"). Detta tänkte jag göra med VBA  och en stilig knapp som ger möjlighet att välja rätt arbetsbok.

 

*Fördela lager. Datan kommer du upp hur LU, PI, SK respektive ÖV ska fördela för att lagret ska ballanseras, samt skriva ut dessa listor.  

Länk till kommentar
Dela på andra webbplatser

Ove Söderlund

För att spåna fram arbetsgången till detta så funderar jag på något i den här stilen:

 

1. Sortera en rad enligt störst till minst, ta här även hänsyn till prio-ordningen vid lika värden. Tittar vi på exempelrad A,

Art	LU	PI	SK	ÖV
A	2	3	3	5

så blir ordningen ÖV, PI, SK och LU i och med att PI är överordnad SK.

 

2. Beräkna heltalsdel och rest

 

3. Matcha restutfall 1, 2, 3 och 0 genom att ställa sorterad störst mot minst samt näst störst mot näst minst. Hålla koll på överskjutande, t.ex. om från största värde ska tas 10 och minsta endast behöver 8 så ska 2 till näst minsta.

 

4. Notera i listorna för varje LU, PI, SK och ÖV hur fördelning har skett.

Länk till kommentar
Dela på andra webbplatser

Eller

fyra värden, a, b, c, d

A och B jämförs. en enhet flyttas om behov.

B och C jämförs, en enhet flyttas om behov

C och D jämförs, en enhet flyttas om behov. 

D och A jämförs, en enhet flyttas om behov.

Iterera tills ingen/statisk förändring sker, dvs skillnad i värde mellan enheter inte är större än ett.

Räkna flytt, räkna bort enheter som flyttats vidare.

Svårt att i efterhand annars veta vilken som fått från vilken.

 

 

Säg 10 5  7 8

Varv ett

A  b (10 5)

9 6

B C (6 7)

7 6

C D (6 8)

7 7

D A (7 9)

8 8

Efter ett varv alltså

8 7 7 8

efter två varv

8 7 8 7

bara att avsluta i tid.

VBA-kod eller, ifall man kan veta hur många steg, kan det gå att ordna med så många formelsteg som krävs.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...