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

Hämta flera rader beroende på en rad?


Styr-Bernt

Rekommendera Poster

skrev fel, se nästa, samt nästa bild

[inlägget ändrat 2008-12-05 21:27:05 av Styr-Bernt]

[inlägget ändrat 2008-12-05 21:31:36 av Styr-Bernt]

1104683_thumb.jpg

Länk till kommentar
Dela på andra webbplatser

Hej,

 

Jag har en fråga som är snarlik en fråga jag tidigare frågade som finns i tråden: //eforum.idg.se/viewmsg.asp?EntriesId=1100431#1100745

 

Det jag undrar nu är: Hur jag utifrån de två högsta värderna i kolumn F,G och H, hämtar respektive värden (20 stycken) från kolumn B, C och D. För att sedan skriva dessa värden i Kolumn K och L. Se bifogad bild

 

MVH

Philip

 

[bild bifogad 2008-12-05 21:35:50 av Styr-Bernt]

1104687_thumb.jpg

Länk till kommentar
Dela på andra webbplatser

Dela upp problemet i de olika delarna det går

 

1: Hitta de två högsta värdena. Men nu förstår jag icke exakt vad för data du har. Varför ett par värden? Utgår från att det är en ensamt värde du söker

Värde 1: =STÖRSTA(F:H;1)

Värde 2: =STÖRSTA(F:H;2)

 

2: Hitta raden för dessa värden. Lite svårare eftersom värdet kan vara in en av tre kolumner så vi måste söka i alla tre. Vi tar det i tre celler, tre steg

Steg 1: =PASSA(värde;F:F;0)

Steg 2:=OM(ÄRFEL(steg1);PASSA(värde;G:G;0);steg1)

Steg 3 =OM(ÄRFEL(steg2);PASSA(värde;H:H;0);steg2)

Detta dubbelt, en gång för värde 1, en gång för värde 2

 

3: Vilken kolumn?

=OM(ÄRFEL(steg1);OM(ÄRFEL(steg2);OM(ÄRFEL(steg3);SAKNAS();3);2);1)

 

(reserv. för parantesfel)

 

4: Och till sist, hämta värden, barnlek

=INDEX(B:D;steg3+rad()-X;kolumn)

och

=INDEX(B:D;steg3+rad()-X;kolumn+1)

där x då anpassas så att rad()-X= 0 för första cellen i de tio.

 

 

Steg 1, 2,3 skrivs alltså i celler och hänvisningarna senare med namnen syftar på den cell du skrivet dem i.

Mellanstegen (1:, 2: och 3:) de kan du gömma undan, dölj kolumnerna där de skrivs. Inget man måste se.

 

Klart som korvspad så här på sena fredagskvällen?

 

En sista not, ser att du har Excel 2007. Går att skriva lite finare då med hjälp av funktionen OMFEL. Lite kortare, lite snyggare.

 

/T

 

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

 

 

[inlägget ändrat 2008-12-05 23:17:38 av Monshi]

Länk till kommentar
Dela på andra webbplatser

Hej, ja ganska klart tror jag, iaf tills jag kom till det där som var en barnlek :P det här var tydligen mer komplicerat än jag först trodde. Jag bifogar en bild som visar vad jag har gjort, där ser man att det i kolumn P blir fel.

 

MVH

Philip

 

[bild bifogad 2008-12-06 15:49:02 av Styr-Bernt]

1104821_thumb.jpg

Länk till kommentar
Dela på andra webbplatser

Där du skrivet column ska det du ha resultatet av "vilken kolumn", dvs cell O2 i cellen du visar formlen i.

 

Samt B2:D2 ska vara B:D

 

ja, så här:

=INDEX($B:$D;$N$2+ROW()-2;$O2)

 

Sedan kan man nog med en smart FÖRSKJUTNING-sats, kanske med en OM, se till att samma formel kan användas i för alla hämtningar.

Halvägs:

=INDEX($B:$D;OFFSET($N$2;(ROW()-2)/10;0)+ROW()-2);OFFSET($O$2;(ROW()-2)/10;0))

 

(tror det blev rätt)

Förskjutning ser till att ny referensen tar ett steg ned var tionde rad formeln står på. Och enklast att få den att stega korrekt är nog att byta ROW()-2 mot en referens till en cell bredvid de hämtade värden som räknar 1 till 10.

 

Förstår du vad jag menar?

 

 

/T

 

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

 

Länk till kommentar
Dela på andra webbplatser

Om man tittar på kolumn P så hämtas värden i kolumn B,C,D beroende på der högsta värdet i kolmun F,G,H. Och detta gör den för varje rad.

ex. P3 är hämtat från D3 beroende av att H3 är det högsta värdet av kolumnerna F3 till H3. Det är dock inte der jag söker :S

 

Jag vill som bilden visar att alla värderna från B2-B21 skall hämtas beroende av att F2 är det högsta värdet av F2-H2.

efter detta skall värderna från C22-C41 hämtas beroende av att värdet G22 är det högsta värdet av F22-H22.

 

Detta Utskirivt blir ressultatet i T2-T41

 

Allt detta skall sedan upprepas fast för det näst högsta värdet i F-G.

 

Se bifogad bild.

 

Mvh

Philip

 

[bild bifogad 2008-12-07 15:36:49 av Styr-Bernt]

1105144_thumb.jpg

Länk till kommentar
Dela på andra webbplatser

Okej, liten miss av mig. Steg 3 behövs inte samt max-formeln är fel skriven, ändra den så att den enbart tittar på kolumnerna F och G.

 

men ärligt, titta på formlerna, förstå vad de gör och du borde se fel som detta själv. Uppenbart så hämtas ju max från alla tre kolumnerna och uppenbar sökes det, felaktigt, i alla tre kolumnerna. Inte alls svårt att se.

 

 

 

 

/T

 

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

 

Länk till kommentar
Dela på andra webbplatser

Hej! Tack för svar :) efter ett par timmars klurande lyckades jag använda mig av några av de formlerna du gav mig men gjorde på ett litet annat sätt så tänkte visa det om det skulle vara så att någon annan kan ha nytta av detta :)

 

Funktion kolumn J: =IF(IF($I3<>$I2;1;0)=1;F3;J2)

samma för K och L fast med en förskjutning.

 

Kolumn M och N har funktionen enligt bilden.

 

Tack en gång till för hjälpen Monshi :)

 

 

 

 

[bild bifogad 2008-12-08 19:01:24 av Styr-Bernt]

1105483_thumb.jpg

Länk till kommentar
Dela på andra webbplatser

Ser ut som jag inte helt greppade ditt problem korrekt men det verkar ha löst sig ändå.

 

En fråga bara, är det som så att du alltid har grupper om tjugo värden och du ska hitta för det 21:a värdet i vilken kolumn det största värdet finns? Där missade jag isåfall, trodde du ville leta upp de x största värdena i kolumn B och C och hämta y antal värden efter dessa. Viss skillnad.

 

En liten not - är det många värden du ska arbeta med så är det en fördel att lyfta ut MATCH och bara beräkna denna en gång per grupp av värden. bara mindre ändring av din mall då. Detta eftersom Match är en krävande funktion fast å andra sidan söker den bara av tre värden i detta fall.

 

och din formel i J, lite kortare :)

=IF($I3<>$I2;F3;J2)

det räcker...

eller skriv

=IF($I3<>$I2;MATCH(MAX(F3:G3);F3:G3;0);J2)

och du har direkt vilken kolumn du ska hämta värdet i.

För, största värdet kan väl bara finnas i F eller G? Annars, utvidga till D också i sökningen.

 

Mmh, men är det bara två kolumner, två värden som ska jämföras är nog faktiskt MATCH att överdriva lite när jag tänker efter. Räcker ju med

=IF(I3<>I2;IF(F3>G3;1;2);J2)

Ack så enkelt.

 

Varför sade du inte att det var så du ville ha det från början?

 

/T

 

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

 

Länk till kommentar
Dela på andra webbplatser

haha jag försökte berätta, men misslyckades troligen en bit på vägen, men du har varit till stor hjälp endå. plus att den riktiga filen e mcyket större det e 89 kolumner, så MATCH är nog en god ide endå, fast det kunde ju inte du veta :P

 

Jag sitter å räknar lite på aktier för att jag tycker det e kul :D, e därför jag ibland behöver hämta ut var 5e (veckovisa värden) eller var 20e (månadsvisa värden)

 

Tack för förenklingaran :)

 

Länk till kommentar
Dela på andra webbplatser

Inte för att jag tror det passar här men kanske - missa INTE vad Pivot-tabeller kan hjälpa dig med. De är perfekta för att dra ihop stora mängden av data så länge data är sparat i fina tabeller.

 

 

/T

 

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

 

Länk till kommentar
Dela på andra webbplatser

jag kom på en till lite fundering, vet inte om den skall skrivas under smma tråd?

 

har laddat ner en fil men indexvärden:

 

Date,Open,High,Low,Close,Volume,Adj Close

2008-12-08,4548.87,4775.71,4548.87,4715.88,47616100,4715.88

2008-12-05,4529.20,4530.70,4321.64,4381.47,40519500,4381.47

2008-12-04,4559.98,4732.93,4491.86,4564.23,39370800,4564.23

 

 

problemet är att varje rad är i en cell. hur delar jag upp värderna från en cell så jag får Date,Open,High,Low,Close,Volume,Adj Close i varis cell.

 

//Philip

 

Länk till kommentar
Dela på andra webbplatser

Ta en titt på verktyget Text-till-kolumner

 

och ja, detta kunde varit i en ny tråd eller så kunde du läst denna

//eforum.idg.se/viewmsg.asp?EntriesId=1105379

 

/T

 

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

 

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...