webForumDet fria alternativet

Excelhjälp

3 svar · 1 544 visningar · startad av johansvensson

johansvenssonMedlem sedan sep. 20132 inlägg
#1

Hej
Jag skulle vilja skriva en formel för att få reda på hur många 1or, 2or, 3or osv. det finns i en nummerserie, t.ex. mellan 1-999
Jag vill ha 2st rutor där man fyller i startnr och slutnr
t.ex. 1 som startnr och 99 som slutnr
när man gör det så skall det komma fram
1or = 20st
2or = 20st
3or = 20st
...
9or = 20st
0or = 9st

jag har kommit så långt att jag har 1 kolumn med alla siffror från 1-999
nästa kolumn innehåller första siffran från varje rad, nästa kolumn andra siffran och 4e kolumnen innehåller sista siffran i de 3 siffriga talen...

Jag har även en formel för att räkna ut på vilken rad t.ex. startsiffran finns på
samt vilken rad slutsiffran finns på.

Kort sagt, det jag vill ha hjälp med är att räkna antalet 1or, 2or, 3or... 9or & 0or i min matris som finns mellan de raderna jag har fått fram (t.ex. mellan raderna 11-107?

Tack på förhand

ÄnMindreVetandeMedlem sedan nov. 201253 inlägg
#2

Låååååååångt svar. Se det som ett led i din personliga utveckling :stud

Antag att du i cell K1 skriver starttalet (11) och i K2 sluttalet (107)

Då kan du använda förskjutning
Om dina "utplockade" siffror står i B-D kolumnen ger det här antalet 2:or i hela intervallet
=ANTAL.OM(B1:D99;2)
och den här formeln tittar i Rad 11 -107 (om det är 11 ch 107 som står i K1, K2)
=ANTAL.OM(FÖRSKJUTNING(B1:D1;$K$1-1;0;$K$2-($K$1-1));2)
Vilket, väl egentligen är det du frågar efter?

Ett enklare alternativ skulle kunna vara att manipulera din rådatalista så att den bara visar de tal du vill undersöka.

Istället för att skriva 1-999 i cell A1 till A999 så kan du i cell A1 skriva formeln
=K1
Och i A2 skriver du
=OM(A1="";"";OM(A1+1>$K$2;"";A1+1))
Kopiera ner till A999 så har du en lista som styrs via K1 och K2

En helt annan metod om du vill slippa alla hjälp-listor.
För att räkna förekomsten av siffran 2 i t.ex talet 928723 så kan du köra ett "fulknep"
=LÄNGD("928723")-LÄNGD(BYT.UT("928723";"2";""))
BYT.UT gör precis vad det låter som. Vi ersätter alla 2:or med ingenting "". Sen jämför vi längden av 928723 med 9873 och vet att talet hade 2 stycken 2:or. Lite onödigt och omständligt, men excel har inget riktigt bra sätt att räkna förekomsten av saker i en text (eller, det kanske finns i excel 2010, men det känner jag inte till).

Fördelen är att du slipper skapa dina hjälplistor.
Du kan direkt i B kolumnen räkna ut antalet förekomster av t.ex 2

typ:
=SUMMA(LÄNGD(A1)-LÄNGD(BYT.UT(A1;"2";"")))

det har du kankse inte vunnit så jättemycket på, men det kan kombineras med en matrisformel där du tittar i hela ditt intervall, typ:
=PRODUKTSUMMA(LÄNGD(A1:A99)-LÄNGD(BYT.UT(A1:A99;"2";"")))

Dvs en enda formel räknar ut antalet 2:or i hela intervallet utan en massa hjälpkolumner, ganska trevligt.
Kopplar du den till dina intervall så blir den ändå trevligare:

=PRODUKTSUMMA(LÄNGD(FÖRSKJUTNING($A$1;$K$1-1;0;$K$2-($K$1-1)))-LÄNGD(BYT.UT(FÖRSKJUTNING($A$1;$K$1-1;0;$K$2-($K$1-1));"2";"")))

Istället för att skriva "2" så kan du länka till en cell, tex C2
=PRODUKTSUMMA(LÄNGD(FÖRSKJUTNING($A$1;$K$1-1;0;$K$2-($K$1-1)))-LÄNGD(BYT.UT(FÖRSKJUTNING($A$1;$K$1-1;0;$K$2-($K$1-1));C2;"")))
Fördelen är naturligtvis att du kan skriva 0-9 i t.ex C1 till C10 och bara kopiera formeln.

Det sista steget är att helt skippa alla tabeller, även A-kolumnen och bara använda formler som hämtar indata från 3 celler:
K1 är minivärdet
K2 är maxvärdet
C2 är siffran du letar efter

=PRODUKTSUMMA(LÄNGD(RAD(INDIREKT($K$1&":"&$K$2)))-LÄNGD(BYT.UT(RAD(INDIREKT($K$1&":"&$K$2));C2;"")))
Din hemläxa är att lista ut hur/varför det fungerar :-)
Allt utom K1, K2 C1-C10 och formelcellerna kan raderas
/Mindre vetande, mer tyckande

Ledtrådar till sista funktionen:
indirekt används nästan på samma sätt som "förskjut" om man vill skapa en adress utifrån det värde som står i en cell
INDIREKT($K$1&":"&$K$2) = 11:107
Men det kan man av någon anledning inte använda direkt utan man får snurra till det med
RAD(INDIREKT($K$1&":"&$K$2))
som ger tal-serien 11-107 "på riktigt" (fråga inte, det bara är så)

Föredrar man förskjutning så kan man använda den här istället, men det är samma sak.
=PRODUKTSUMMA(LÄNGD(RAD(FÖRSKJUTNING($A$1;$K$1-1;0;$K$2-($K$1-1))))-LÄNGD(BYT.UT(RAD(FÖRSKJUTNING($A$1;$K$1-1;0;$K$2-($K$1-1)));C2;"")))

johansvenssonMedlem sedan sep. 20132 inlägg
#3

TACK!!!!

Tack så jättemycket för hjälpen,
det fungerade klockrent!

Mvh
Johan

@ndersMedlem sedan juni 200032 969 inlägg
#4

Helt otroligt vilken svarskvalité!!! (y)

128 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)