Hmm... Summan måste här alltid vara ett jämt tal, dvs rimlighetskontroll och kontrollräkning ger nog ett annat svar ;-)
Till frågan. Om det handlar om "enkla" beräkningar så att talföljden blir en aritmetisk eller geometrisk talföljd så kan man slå upp uttrycket för summan i närmaste formelsammling [1][2] och använda detta. Excel har annars en funktionalitet matrisformel ("En matrisformel kan utföra flera beräkningar och sedan returnera ett enstaka resultat eller flera resultat") om du har hela listan x0,x1,x2.... xn som en lista men inte vill visa delberäkningarna för varje tal xi innan du gör en vanlig summering.
Ok, nej, mitt exempel med dubbleringen var bara ett exempel. Det jag egentligen vill göra är att räkna ut ett pris för ett antal artiklar, där priset bygger på ett antal trappsteg:
Det var ju ett helt annat problem än att summera en talföljd :-)
Den generella lösningen är väl att skriva en egen funktion som tar antal och en prismatris som variabler och ger summan som resultat.
Man kan också direkt i kalkylbladet använda resultatet av if-satser för att göra beräkningar t.ex. genom att först beräkna fult pris för alla och sedan dra av rabatt för det antal som ligger över respektive prisgräns. I ditt fall om A10 innehåller antalet och A1:B3 innehåller prismatrisen.
Det var ju ett helt annat problem än att summera en talföljd :-)
Den generella lösningen är väl att skriva en egen funktion som tar antal och en prismatris som variabler och ger summan som resultat.
Hm, den funktion som du beskriver tar väl inte hänsyn till att det är olika priser för de olika artiklarna? De första 1000 kostar 2 kr / styck, nästa 1000 kostar 1 kr /styck.
Så, jag tänkte att det handlar just om att summera en följd av tal, dvs att summera en följd av beräknade tal:
Hm, den funktion som du beskriver tar väl inte hänsyn till att det är olika priser för de olika artiklarna? De första 1000 kostar 2 kr / styck, nästa 1000 kostar 1 kr /styck.
Med "egen funktion" menade jag en funktion skriven i VisualBasic som du anropar från kalkylbladet eftersom beräkningar med formler i kalkylblad som kräver flera if-satser eller motsvarande för att ge en lösning för alla tänkbara fall ofta blir svårlästa och svårtolkade (ex. den formeln som jag gav).
kristoffer skrev:
Så, jag tänkte att det handlar just om att summera en följd av tal, dvs att summera en följd av beräknade tal:
Du bör inte göra beräkningen genom att for-loopa, och summera, från 1 till antalet för att få ett summa pris utan använda villkor som gör att resultatet beräknas på olika sätt .
Ditt exempel "1 500 artiklar kostar alltså 1 000*2 + 500*1 = 2 500 kr" beräknas ju enkelt utan for-loop och om vi beskriver de fall du kan råka ut för får vi bara tre fall. Fungerar inte den formel som jag gav som ju är ett sätt att använda if-satser i en kalkylbladesformel för att göra beräkningen så att det fungerar för alla tre fallen (byt OM till IF och kanske ; till , om du kör annat språk och numeriskt format).
Är det flera olika varor med olika prismatriser som du planerar för så rekommenderar jag en VB lösning.
En snyggare och mer skalbar lösning, fortfarande utan onödig VBA ;) , är att lägga till en hjälpkolumn i tabellen, låt i exemplet ovan E1 vara 0 och låt E2 vara
En snyggare och mer skalbar lösning, fortfarande utan onödig VBA ;)
Det var väl till mig som föreslog VBA som lösningsmetod. Det skall mycket till för att jag skall uppskatta denna typ av lättolkade ;-) kalkylbladsformler framför ett anrop av en VBA funktion prisMedMangdrabbat(antal, mangdRabattMatris) som borde kunna innehålla felhantering ge ett svar och läsbar kod. Nu visar det sig att den gamla Excelversion jag kör inte kan ta en matris med dynamisk storlek som argument (går det i modernare versioner?) och då blir ju funktionen inte fullt lika användbar.
Det var väl till mig som föreslog VBA som lösningsmetod. Det skall mycket till för att jag skall uppskatta denna typ av lättolkade ;-) kalkylbladsformler framför ett anrop av en VBA funktion prisMedMangdrabbat(antal, mangdRabattMatris) som borde kunna innehålla felhantering ge ett svar och läsbar kod. Nu visar det sig att den gamla Excelversion jag kör inte kan ta en matris med dynamisk storlek som argument (går det i modernare versioner?) och då blir ju funktionen inte fullt lika användbar.
Självklart var det det... med glimten i ögat. Jag använder VBA mycket själv också och det är väldigt kraftfullt, problem uppstår mest när andra ska öppna mina filer. Beroende på säkerhetsinställningar och VBA-version kan det mesta hända. Men ska man bara köra filen själv är det förstås inga problem. Prestandamässigt är det dock min erfarenhet att det är bättre att försöka hålla sig till de inbyggda formlerna när arbetsböckerna börjar bli tungrodda.
UDFer blir inte heller speciellt lättlästa eller -tolkade för användare som inte ens vet hur man öppnar VBA-editorn och än mindre kan tolka koden.
303 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2