Just nu i M3-nätverket
Jump to content

Sök målvärde, blir aldrig riktigt rätt


Shape_sthlm

Recommended Posts

Shape_sthlm

Jag har försökt mig på en liten snurra som räknar fram en procentsats.

 

I en perfekt värld så fungerar det med att söka efter målvärde med hjälp av Excels färdiga redskap för detta, MEN ofta eller nästan alltid så slår den fel. T.ex om målvärdet är 10%, så genererar Excel ett tal som ger 9,98%.

 

Detta "löste" jag genom att loopa förfarandet i VBA, där det för varje gång görs en justering på värdena så att ett nytt värde söks fram. (eftersom att efter ett antal försök så blir det tillslut rätt)

 

Jag har lagt ett "stopp" när jag tycker jag uppnått rätt matchning (4 decimaler). Men jag upptäckte ju oxå ganska fort att ibland klarar programmet inte av att hitta rätt värde alls, så jag va tvungen att lägga in en spärr som just nu är 100 försök.

 

Jag tycker mitt förfarande och min kod är högst osäkert, känns instabilt och onödigt. Vill gärna ha förslag på en bättre lösning.

 

Tack

 

 

obs, värdet i matas in av användaren, tex 10

 

Sats = i / 100
r = 0
If Sats = Round(Range("Provision").Value, 4) Then GoTo C
           Do Until r = 100
           If Sats = Round(Range("Provision").Value, 4) Then GoTo C
               r = r + 1
               Range("ProvSEK").Value = Range("ProvSEK").Value + r
               Range("D8").GoalSeek Goal:=Sats, ChangingCell:=prov
           Loop
C:

 

Link to comment
Share on other sites

Koden? Ett fundamentalt fel ser jag.

 

 

GOTO-satser är av ONDO. Bort bort bort bort!

Det går ALLTID att skriva på sätt så att man slipper GoTo-satser. Enda undantaget är VBAs felhantering.

 

GoalSeek, ny funktion för mig ska sägas. Vet inte vilken metod den använder men du kan ju alltid implementera en egen som du kan styra bättre. Finns gott om olika precisa och komplexa algoritmer.

 

Resultatet från GoalSeek kan du då använda som startvärde för din egna rutin.

 

eller skippa GoalSeek och låt någon/några funktioner i Excel iterera. Men det kanske blir för komplext/segt,

 

lite oklart dock vad det är för problem du försöker lösa samt om du inte kan nöja dig med den noggrannhet som GoalSeek ger.

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Shape_sthlm

ok, förenklat vill jag åstadkomma följande

 

 

A1

+

A2

=

A3

 

 

 

A2 ska vara x% av A3.

 

C1 = A2/A1

 

A1 är känt

X är känt (= värdet i som matas in av användaren)

 

Det som min kod mynnar ut i är alltså värdet i C1.

 

Link to comment
Share on other sites

Hur avancerade funktioner är det? Är det analytiskt lösbara? Eller är det komplexa polynom som man måste approximera?

 

Allt beror på vad du har. Det förenklade exemplet är ju enkelt att bryta ut det du önskar ur och lösa ekvationen exakt.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Shape_sthlm

k=konstans, säg 100 kr

y = varans slutpris

x=procentsats, t.ex 14% av y.

m=(x)y

 

vi får då

k + m = y

 

det jag är intresserad av är alltså m i relation till k.

dvs kvoten m/k

 

dvs utifrån 100 kr (k) och en procentsats (14%)av slutpriset, vilket pålägg ska läggas på k för att erhålla y?

 

 

 

 

 

[inlägget ändrat 2009-03-24 17:03:13 av Shape_sthlm]

Link to comment
Share on other sites

Hej,

 

Som Monshi redan konstaterat, detta är analytiskt lösbart (om jag har fattat det rätt).

 

k + m = y (1)

m = x * y <=> m/x = y (2)

 

Sätt in (2) i (1) och lös ut:

 

k + m = m/x <=> m/k = x/(1-x)

 

mvh

/Johan

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...