Just nu i M3-nätverket
Jump to content

DSUMMA med en cell istället för fält som villkor


samel

Recommended Posts

Hej!

 

Jag sitter på jobbet och håller på med ett excel-dokument. Kort går det ut på att vi har ett antal behållare med spannmål. Man anger vilken sorts spannmål man har i de olika behållarna och hur mycket massa de har. Sedan räknar man ut totalmassan för varje sort spannmål.

 

Det är löst. Jag har löst det med dsumma och resultatet är följande

 

Behållare	Sort	Massa (ton)
1	Vete	11
2	Råg	21
3	Vete	1
4	Vete	5
5	Råg	11
6	Raps	32
7	Raps	43
8	Vete	5
9	Råg	12



Total massa (ton)				
	Sort	Sort	Sort
Vete	22	Vete	Råg	Raps
Råg	44					
Raps	75

 

Saken är den att mina kollegor som inte är lika insatta i excel ska kunna lägga till nya spannmålssorter och det är lite meckigt för formeln för att räkna ut exempelvis totalmassan för vete (22 ton) är

=DSUMMA(B7:D16; 3; F20:F21)

(I själva verket är det mycket mer tjafs)

Det jag vill att man ska kunna göra är att formeln själv tittar till cellen vänster om sig och ser att "aha, det är vete jag ska lägga till". I nuläget måste man skapa ett fält:

Sort
Vete

+ att man måste ange det fältet i formeln. Det är lite svårt för mina kollegor. Om man istället hade kunnat göra något i stil med följande hade det varit bra.

=DSUMMA(B7:D16; 3; B21)

(där b21 är cellen till vänster om formeln)

 

Om det är så kan jag redan ha fyllt i ett antal celler med en formel som bara tittar på cellen åt vänster för att få reda på vilken spannmålssort. Det enda mina kollegor skulle behöva göra är att fylla i den cellen med en spannmålssort.

 

Tack på förhand!

 

Samuel

 

Link to comment
Share on other sites

Dsumma i alla ära, en funktion jag inte använder alltför ofta. Funktioner har den begränsningen att de inte är alltför dynamiska utan lite specialknep.

 

Kanske du ska ta en titt på PivotTabell istället? Vilken version av Excel har ni? 2002 fungerar den bra i men i 2007 är den lite enklare att hantera.

 

Om inte Pivot passar så kan jag ta en titt på DSUMMA men tror det blir lite klurigt att få det du önskar. Tja, ett sätt är ju att låta dina användare fylla i på ett ställe och länka, men formel, in de data de matar in på rätt plats för DSUMMA.

 

 

/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

Hej,

 

Eftersom Monshi redan har nämnt pivot-tabell vill jag bara lägga till min personliga favorit PRODUKTSUMMA, som är fantastiskt smidig att skapa avancerade sammanställningar med.

 

=PRODUKTSUMMA(("sortkolumn"="referens till målvärde")*("massakolumn"))

 

Vad formeln gör är att för varje rad i kolumnerna multiplicera det logiska uttrycket (0 eller 1) med massavärdet och sedan addera resultaten. Några förbehåll dock, kolumnerna måste ha samma antal rader och ändras storleken på kolumnerna måste naturligtvis formeln också ändras. Detta kan dock lösas genom att arbeta med namngivna dynamiska områden istället.

 

mvh

/Johan

 

Link to comment
Share on other sites

Enda nackdelen med Produktsumma är att det är en matrisformel. Dessa är flera gånger långsammare än DSUMMA eller Pivot. Säg att du har en tabell om tusen rader och tre jämförelser då skapar varje instans av Produktsumma 3 jämförelser och 3 multiplikationer, dvs 9 operationer, per formel.

 

Sedan kanske man har produktsumma i ett antal celler, säg 100. Då blir det 100*3*3*1000 = 900 000 operationer.

Minst. Se det som en grov uppskattning, vet faktiskt inte exakt hur Excel arbetar men klart är att stora matriser i matrisformler kan sega ned Excel rejält.

 

Inte nu sagt att det är en dålig formel, jag använder produktsumma ofta själva. Man ska dock vara medveten om vad effekten kan bli. Stora tabeller hanteras enklast med Pivot. Pivot kan i sin tur göras dynamiskt med hjälp av formeln FÖRSKJUTNING. Det senare dock inte nödvändigt i Excel 2007.

 

 

 

/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

Hej och tack för snabbt svar!

 

Båda lösningarna var ju trevliga. Pivotabell kände jag inte till så det var ju en trevlig upptäckt!

 

Nackdelen med pivotabellen är att den inte uppdateras vid ändring. Det måste man uppenbarligen göra manuellt eller låta hända vid öppnandet av filen.

 

Produktsumman var ju en snitsig lösning, den gillade jag. Då har jag en annan fråga. Eftersom jag bara ville att mina kollegor bara skulle kunna fylla i en sort så tänkte jag att jag då måste fylla kolumnen höger om (dvs där totala massan ska stå) med en formel. Men om jag tar och markerar nedåt och väljer "fyll ner" så ändras ju inte bara referensen till cellen åt vänster utan alla referenser ändras.

 

Jag har alltså i cellen

=PRODUKTSUMMA((B25=C8:C19)*D8:D19)

Och vill att nästa ska bli

=PRODUKTSUMMA((B26=C8:C19)*D8:D19)

Hur gör jag för att den ska ändra bara B25-referensen? Jag har haft det här problemet förr och tycker det är lite störigt.

 

För övrigt har vi Excel 2003.

 

Link to comment
Share on other sites

Pivottabell - om tabell på egen sida kan man lägga lite kod på bladet som ser till att den uppdateras när bladet aktiveras. Dock som sagt, det krävs lite kod.

 

Låsa referenser det gör dollartecknet

=$A1

låser kolumnen

=A$1

låser raden

=$A$1

låser rad och kolumn.

Du kan skriva in dem förhand eller markera en referens och tryck F4 för att växla mellan de olika låsningarna.

 

Sedan med Excel 2003 - då kan du skapa tabeller som du namnger, namn du sedan kan använda i formlerna.

 

/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

Ahh, det är det dollartecknena gör. Sjysst!

 

Jag undrar en sak. Finns det ingen möjlighet att på nåt sätt göra ett fält relatitvt. Om man skulle fortsätta lägga till rader och då vill att formlerna inkludera de nya raderna också? Visst, man kan ta och markera 100 rader extra för att vara på säkra sidan men det är varken snyggt.

 

Så istället för A1:A20 så kan man kanske skriva A1:Radvariabel. Finns det nån som funktion?

 

Sen undrar jag också om det finns nån möjlighet att tolka "" som 0.

Om det inte finns någon massa iskrivet så blir det fel med produktsumman. Man måste fylla i 0 i alla de celler som är med i fältet. Kan man fixa det på nåt sätt?

 

Tack för hjälpen!

 

Link to comment
Share on other sites

Det låter som du behöver dynamiska områden.

Se tex. //eforum.idg.se/viewmsg.asp?EntriesId=978268#978271 för hur sådana kan definieras. Sedan är det bara att använda områdets namn i formeln istället. Det går också att plocka ut enskilda kolumner och rader ur ett namngivet område med funktionen INDEX.

 

Jag antar att detta löser problemet med tomma celler, eftersom du inte längre behöver "ta höjd" i formlerna?

 

mvh

/Johan

 

Link to comment
Share on other sites

Skapa dynamiska referenser, det finns två alternativ i Excel 2003

 

1: Använda formeln FÖRSKJUTNINg, typ

=Förskjutning($A$1;0;0;antalv($A:$A);3)

där A1 är referensen du starta i, 0, 0 ger antalet rader/kolumner bort du refererar till, antalv ger höjden på din tabell och sista 3 är bredden (som väl kan vara fix).

Rekommenderas att du använder formeln i ett namn, dvs i menyn Infoga > Namn > Deifiniera skapar du ett namn med denna formel och sedan använder du namnet.

 

2: Definiera din tabell som en tabell och nyttja de namn som då skapas i formeln.

 

"" = 0 nej, summeringen måste vara över värden.

Enkelt att fixa dock. Markera din tabell eller kolumn du vill ändra, välj gå till > Special (menyn Redigera, välj tomma celler. I formelfältet skriv 0, tryck sedan CTRL+Enter.

 

 

 

/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

Tack så mycket för all hjälp!

 

Jag tror mitt problem är löst nu. Nu kan man enkelt lägga till en ny sort och få totalmassan för den.

 

Återigen, tack!

 

Link to comment
Share on other sites

Archived

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



×
×
  • Create New...