Hoppa till innehåll

Sida 1 av 1
  • Du kan inte starta en ny tråd
  • Du kan inte svara i tråden

Rada upp svar från formel

#1
Medlem är utloggad   lewdis 

  • Aktiv
  • PipPipPip
  • Grupp: Medlemmar
  • Inlägg: 102
  • Gick med: 2007-06-04

Skrivet 21 jun 2012, 09:39

Hej på er

Jag har ett litet problem med att lista svar på en fråga.

På ena sidan har jag en massa produkter som är delar i ett större kit.
På nästa sida bokar jag endast kit.
På en tredje sida (visning) vill jag visa alla kit som är bokade med dess innehåll listat i en lång rad.

Exempel
Kamera kit 1 - innehåller 5 produkter
Kamera kit 2 - innehåller 5 produkter

På sida 3 (visning) räknar jag ut hur många produkter varje kit innehåller.
=ANTAL.OM(Set!O:O;K9) - k9 är alltså namnet på detta set.
Nästa rad ser likadan ut fast med nästa set osv.

Men hur kan jag nu göra för att visa information från alla mina set i en lång rad. Vissa set innehåller 5 varor andra 15 osv.

Hade en tanke på att summera antalet svar jag får från formeln ovan (=ANTAL.OM(Set!O:O;K9) för att sedan göra någon typ av listning men vet inte hur.

På ett annat ställe använder jag något liknande det jag söker nu
=OM($I$4<RAD(I9)-RAD($I$8);"Nej";PASSA($I$3;FÖRSKJUTNING(Loaner!$Y$1;I8;0;3000;1);0)+I8)
problemet med att göra en förskjutning och ta alla varor är att då tar den bara kit 1 och sedan måste jag göra samma för nästa osv. Hur skall jag då få alla dessa svar presenterade på i en lista.

Hoppas jag varit ganska tydlig i min fråga.
0

#2
Medlem är utloggad   Monshi 

  • Beroende
  • Ikon
  • Grupp: Moderatorer
  • Inlägg: 23 558
  • Gick med: 2001-06-24
  • Ort:Enebyberg

Skrivet 21 jun 2012, 11:32

Får inte helt klart för mig hur du menar med tror jag har grunden klar för mig.

Du anger ett kit.
På en sida har du en lista där du anger för varje produkt vilket kit denna ingår i.
Du vill söka reda på alla produkter med ett givet ID, ett kit, och hämta dessa.

Du måste då använda dig av PASSA och FÖRSKJUTNING.
Helt enkelt
säg att du har tabellen
A
B
A
B
B
A
och vill söka reda på alla A i kolumn A.

Säg att vi börjar i cell D1, där skriver vi värdet 0
I D2 skriver vi
=PASSA($C$2;FÖRSKJUTNING($A$1;D1;0;ANTALV(A:A)-D1+1;1);0)+D1
och kopierar nedåt.
I C2 står då det du söker, i detta fall A.

notera att du behöver en menyrad för att det ska fungera, dvs en rad där PASSA inte får träff.

men nu är detta ett exempel på lodrät lösning men den går även att göras horisontellt.

Sedan använder du INDEX för att hämta värdena på de funna raderna.
0

#3
Medlem är utloggad   lewdis 

  • Aktiv
  • PipPipPip
  • Grupp: Medlemmar
  • Inlägg: 102
  • Gick med: 2007-06-04

Skrivet 21 jun 2012, 12:53

Bifogar en fil för att visa hur jag menar

Bifogade filer


Inlägget är redigerat av lewdis: 21 jun 2012, 13:00.

0

#4
Medlem är utloggad   Monshi 

  • Beroende
  • Ikon
  • Grupp: Moderatorer
  • Inlägg: 23 558
  • Gick med: 2001-06-24
  • Ort:Enebyberg

Skrivet 21 jun 2012, 13:58

Ett sätt att lösa detta är att dela upp bladet i delar. Med det menar jag att du avsätter områden om 15 rader, max antal delar i ett kit, för att hämta alla delar i detta kit. Via passa och förskjutning letar du reda på delarna, INDEX hämtar värdena.
Till detta lägger du en enkel OM-sats som returnerar JA om raden ska synas, om det finns en "del" på raden (i praktiken om PASSA gett felvärde eller ej).
Därefter applicerar du ett autofilter på kolumnen med OM-satser på och väljer att visa enbart de med "Ja"-värde.

Du skapar alltså så många områden som du tror det någonsin kan komma att behövas.

Man kan lägga på en rad VBA-kod som uppdaterar Autofiltret varje gång sidan aktiveras om man vill.

Ett annat sätt är att hämta värden med Pivot.

ett sista sätt, det mest dynamiska, är att hämta via VBA-kod men samtidigt går det att lösa via formler är det oftast bara att hålla sig till formler.

Är du med hur jag menar?
Bygg alltså upp ett område för ett kit, formatera, fixa ordning. Kopiera sedan det och uppdatera kopian så att formlerna hämtar kit 2 osv.
0

#5
Medlem är utloggad   lewdis 

  • Aktiv
  • PipPipPip
  • Grupp: Medlemmar
  • Inlägg: 102
  • Gick med: 2007-06-04

Skrivet 21 jun 2012, 14:24

Tack för hjälpen.
Är med precis på hur du menar. Nackdelen är att kit kan innehålla från 3-60 produkter. Så jag får avsätta cäldigt många rader. Därför ville jag bara höra om det gick att läsa av med hjälp av en formel för samtliga kit. Synd att det inte går. Men en lösning är helt klart att använda filter eller pivo.

Detta får jag titta närmre på. Tusen tack.
0

#6
Medlem är utloggad   Monshi 

  • Beroende
  • Ikon
  • Grupp: Moderatorer
  • Inlägg: 23 558
  • Gick med: 2001-06-24
  • Ort:Enebyberg

Skrivet 21 jun 2012, 16:35

Nä, formler är inte såvärst dynamiska när det handlar om sådant här. Därav att det finns verktyg som autofilter, avancerat filter och Pivot som kan hjälpa.

Å andra sidan, antalet rader är inget större problem.
Om vi säger 15 rader per artikel, 60 artiklar så blir det 900 rader.
Gamla Excel klarar 65 000, cirka, rader, Excel 2007 och senare betydligt fler. Inget problem där.

Bygger man upp detta system dock, då får man se till att inga PASSA räknas i onödan, de tar kraft. Övriga formler är enkla. Fullt möjligt och inte så svårt att skapa alls.

men med det sagt, den mest dynamiska lösningen i detta fallet är nog VBA-kod som, kanske med hjälp av formler, hämtar och klistrar in värden på rätt plats.
0

#7
Medlem är utloggad   lewdis 

  • Aktiv
  • PipPipPip
  • Grupp: Medlemmar
  • Inlägg: 102
  • Gick med: 2007-06-04

Skrivet 29 jun 2012, 07:29

Det blev kanon att köra med filter den filtrerar utan klickande varje gång. Dock skall det vara 100 set som letar efter 70 delar. Så det blir rätt omfattande med kod. Men tid och datakraft finns det nog så det räcker.

Tack för hjälpen.
0

#8
Medlem är utloggad   Monshi 

  • Beroende
  • Ikon
  • Grupp: Moderatorer
  • Inlägg: 23 558
  • Gick med: 2001-06-24
  • Ort:Enebyberg

Skrivet 29 jun 2012, 07:34

Du har byggt upp det med formler? Eller med VBA-kod?

Om formler, med PASSA?
Som jag skrev ovan två enkla regler vid användande av många PASSA
1: En sökformel per post.
Dvs sök en gång med PASSA, använda INDEX för att hämta alla värden.
2: Sök inte när du vet att den inte kommer finna något.
Om PASSA på rad 1 returnerar fel kommer säkerligen även PASSA på rad 2.
Dvs du kan lätt spara in beräkningstid genom att skriva
=OM(ÄRFEL(A1);SAKNAS();PASSA(...))
0

#9
Medlem är utloggad   lewdis 

  • Aktiv
  • PipPipPip
  • Grupp: Medlemmar
  • Inlägg: 102
  • Gick med: 2007-06-04

Skrivet 29 jun 2012, 08:39

Bra ide i nuläget har jag en cell som returnerar hur många rader den skall leta efter. Gör inte denna samma sak, då den hittar alla den eftersöker så fortsätter den inte att leta fler.
0

#10
Medlem är utloggad   Monshi 

  • Beroende
  • Ikon
  • Grupp: Moderatorer
  • Inlägg: 23 558
  • Gick med: 2001-06-24
  • Ort:Enebyberg

Skrivet 29 jun 2012, 09:27

Vet inte hur du löst det men tipset i korthet är att inga onödiga PASSA-formler ska beräknas. Om detta begränsas med koll mot antal som ska sökas eller via felvärden är egalt.

Om vi säger att en OM-sats har beräkningstyngd ett så har PASSA åtminstone tyngden 10.
Om inte mer, mycket mer.
Att söka efter saker är jobbigt.
Matrisformler är även de jobbiga btw.

Inlägget är redigerat av Monshi: 29 jun 2012, 09:27.

0
Sida 1 av 1
  • Du kan inte starta en ny tråd
  • Du kan inte svara i tråden

1 besökare läser just nu den här tråden, varav 0 medlem(mar) och 1 gäst(er)
 
 
Senast obesvarade trådar
Prenumerera på nyheter

Missa inte våra nya
smarta nyhetsbrev

Läs mer om nyhetsbreven här!
Beställ direkt:


Extreme
PC för Alla-nätverket