Michael, Dennis! Michael, Dennis! Michael, Man skulle ju kunna lösa det så här (i engelsk version) Hej Niklas! Michael, Michael, >Hur skriver jag en formel i A1 i blad1 som vid autofyll till HÖGER hämtar Hej Dennis! Michael, Hej! >INDIRECT: Mina herrar, Hej Niclas! Hej! Michael, Hej! >Min tidigare fiffiga lösning är nu den klumbiga lösningen. Hej! Hej, Hej!Sv: Datatransponering mellan arbetsblad
Så här arbetar jag:
Jag delar gärna av mig med mina kunskaper till andra när de stöter på problem både här på PelleSoft och i andra forum.
Men att deltaga i dylika utmaningar är för mig helt främmande, inte minst när det tydligen redan finns svar på frågan.
Får jag istället föreslå att du skriver en intressant artikel e d?
Rubriken tar jag mig friheten att ändra på. Frågor o svar i diskussionsforumet sparas för framtida bruk och utsökning sker till stor (tror jag) utifrån rubrik. Rubriken "Bit i denna" säger ingeting alls om innehållet.
Tråden ska självklart få vara kvar - Det finns ju andra som kanske vill anta din utmaning.
Mvh
XL-Dennis
ModeratorSv: Datatransponering mellan arbetsblad
Intressant att du delger dig av ditt sätt att arbeta och vad du tycker är främmande eller inte. Det finns säkert de som är intresserade. Publicerade gärna detta i något av de andra forumen så kanske fler får ta del av dem. Detta inlägg vad dock inte riktad till de som INTE var intresserade av denna typ av utmaningar.
Utmaningen var först och främst riktad till personer som liksom jag tycker om själva problemlösningen och lösningen i sig själv, utan att ha konkreta problem.
mvh
/MichaelSv: Datatransponering mellan arbetsblad
Så här står det i förutsättningarna för Diskussionforumet:
>Här kan du söka efter svar eller kanske skriva en ny fråga över något
>du undrar eller inte förstår.
Du skriver själv att du redan har ett svar :-)
>Detta inlägg vad dock inte riktad till de som INTE var intresserade av
>denna typ av utmaningar.
Nej givetvis inte, men du får acceptera att andra delger sin uppfattning ;-)
Mvh
XL-DennisSv: Datatransponering mellan arbetsblad
Jag är en person som tycker om öppna diskussioner med många synpunkter och olika sätt att se på saker. Man ska ha stor tolerans och respekt för andra. Jag har inga problem med at andra delger sina synpunkter, tvärtom, jag tyckte dina var intressanta. Antar att du tycker det samma, eller?
mvh
/MichaelSv: Datatransponering mellan arbetsblad
>Antar att du tycker det samma, eller?
Självklart - det är alltid lika kul och inte minst lärorikt men tyvärr har jag inte tid att fundera på skapade problem.
Hoppas du med min tydlighet inte känner dig trampad på tårna.
Mvh
XL-DennisSv: Datatransponering mellan arbetsblad
A1:
=INDIRECT("Sheet" & COLUMN(A1) & "!A1")
/Niklas JanssonSv: Datatransponering mellan arbetsblad
Svårt att se hur INDIRECT ska lösa problemet. Provade ditt exempel och får cirkelreferensfel. Tror dessutom att du försöker hämta värdena från cell A1 i flera OLIKA BLAD (eller?).
Meningen var att skriva en formel i A1, autofylla till B1, C1...
som hämtar värdena från A1,A2,A3... i blad2.
tack för att du är med och leker
mvh
/MichaelSv: Datatransponering mellan arbetsblad
Jaja, jag vet vad du ska säga (!) men jag är vaken till följd av att min äldsta dotter är sjuk och jag har ingen lust att arbeta...
Nu vill jag inte ge ett korrekt på din fråga utan säga som så här:
Hämta data från cellområdet A1:A10 i Blad2 till cellområdet A1:J1 i Blad1:
1. Markera cellområdet A1:J1 i Blad1
2. Mata in följande formel: =TRANSPONERA(Blad2!$A$1:$A$10)
3. Men istället för att bekräfta inmatningen med ENTER-tangenten
så sker det med Ctrl+Skift+Enter
Som en bekräftelse omsluter XL formeln med klammrar
{=TRANSPONERA(Blad2!$A$1:$A$10)} och vi har skapat en s k
matrisformel.
4. Nu ska cellområdet A1:J1 ha en och samma formel i sig och visa
värden från Blad2.
För att redigera formeln måste cellområdet A1:J1 markeras först.
För engelsk version använd funktionsnamnet: TRANSPOSE
Mvh
XL-Dennis
Ps I VBA sammanhang är funktionen TRANSPOSE begränsad till strax över 5000 poster. DSSv: Datatransponering mellan arbetsblad
>Svårt att se hur INDIRECT ska lösa problemet
Jo, INDIREKT-funktionen kan givetvis vara en del av lösningen ;-)
(Kolla din imail)
Tycker att Niklas är på gång med en lösning.
Mvh
XL-DennisSv: Datatransponering mellan arbetsblad
>uppgifter från cellerna i A-KOLUMNEN i blad2?
Detta tolkade jag (vilket jag ser nu var felaktigt) som att man vid autofyll till höger skall byta blad.
Det går ju att lösa med indirect ändå.
Du skall helt enkelt byta ut bladnumret mot radnumret:
=INDIRECT("Blad1!A" & COLUMN(A1))
/Niklas JanssonSv: Datatransponering mellan arbetsblad
TRANSPOSE() är en snygg lösning och förmodligen den man hade använt i realiteten.
Matrisfunktioner kan vara mycket användbara men tyvärr inte så kända. Niklas problem med viktad summa över flera blad hade man löst enkelt med matrisfunktion, om siffrorna hade legat på samma blad.
{=SUM(A1:A10*A2:A10)/SUM(A2:A10)}
mvh
/MichaelSv: Datatransponering mellan arbetsblad
>Matrisfunktioner kan vara mycket användbara men tyvärr inte så kända
Exakt men vi får väl fortsätta att sprida budskapet :-)
Trevlig Valborg och smäll inte bort fingrarna,
Mvh
XL-DennisSv: Datatransponering mellan arbetsblad
INDIRECT() förväntar sig en referens i den cell den pekar på. Alltså:
A1: =INDIRECT("A2")
A2: A3
A3: 15
Ger resultatet 15 i cell A1.
Men jag förstår hur ni tänker. ="Blad1!A" & COLUMN(A1) ger ju referensen till rätt cell. Nu är det bara att få värdet därifrån också.
mvh
/MichaelSv: Datatransponering mellan arbetsblad
>Returns the reference specified by a text string.
>References are immediately evaluated to display their contents.
>Use INDIRECT when you want to change the reference to a cell within a formula without changing the formula itself.
Jaha. Förväntar sig en referens?
Om du provar att skriva in det ska du se att det fungerar.
/Niklas JanssonSv: Datatransponering mellan arbetsblad
Följande formel löser det mha INDIREKT-funktionen:
=INDIREKT("Blad2!A"&KOLUMN())
På engelska :
=INDIRECT("Blad2!A"&COLUMN())
Placeras i cell A1 i Blad1 och kopieras därefter i raden. KOLUMN-funktionen får sitt värde utifrån den kolumn formeln placeras i:
A1 - 1
B1 - 2
C1 - 3
Så där nu har vi löst detta också :-)
Men Michael - din lösning?
Mvh
XL-DennisSv: Datatransponering mellan arbetsblad
Namnet på funktionen är ju INDIRECT, alltså värdet hämtas inte direkt från cellen som refereras utan indirekt via referensen som finns i cellen funktionen pekar på.
I exemplen för funktionen står det:
If cell A1 contains the text "B2", and cell B2 contains the value 1.333, then:
INDIRECT($A$1) equals 1.333
If you change the text in A1 to "C5", and cell C5 contains the value 45, then:
INDIRECT($A$1) equals 45
If the workspace is set to display R1C1-style references, cell R1C1 contains R2C2, and cell R2C2 contains the value 1.333, then:
INT(INDIRECT(R1C1,FALSE)) equals 1
If B3 contains the text "George", and a cell defined as George contains the value 10, then:
INDIRECT($B$3) equals 10
Har du fått din lösning att fungera är den bra mycket snyggare än den jag hade tänkt. Skicka den hemskt gärna till dahlander@hotmail.com
mvh
/MichaelSv: Datatransponering mellan arbetsblad
Märkligt, jag får inte er lösning att fungera. Har aldrig använt funktionen på det sättet men det skulle vara kul om det är så enkelt. Själv får jag resultatet #Ref. (kör 2000 eng, Win 2000).
Skicka gärna en fungerande lösning till dahlander@hotmail.com
mvh
/MichaelSv: Datatransponering mellan arbetsblad
Har skickat en exempelarbetsbok till den angivna adressen.
Hoppas den fungerar i din miljö.
Mvh
XL-DennisSv: Datatransponering mellan arbetsblad
Tack för filen och era förslag. Visst fungerar det. Min tidigare fiffiga lösning är nu den klumbiga lösningen.
Nu har man ännu en liten go funktion i sin verktygslåda.
mvh
/MichaelSv: Datatransponering mellan arbetsblad
Håller jag faktiskt inte med om (fastän det var jag som började snacka om indirect).
Indirect är så vitt jag vet en av de långsammaste metodena för att hämta värden.
Skälet till att skriva som jag gjorde var dels att jag trodde att det skulle vara flera blad, och dels att jag inte kan så jäkla många Excelfunktioner - jag använder det jag kan istället.
Jag har inte testat, men om det nu inte är smidigare med transpose, varför då? Det ser ju mycket mer lätthanterligt ut... :)
/Niklas JanssonSv: Datatransponering mellan arbetsblad
Transpose var Dennis lösning. Tror att min får ligga där den ligger.
mvh
/MichaelSv: Datatransponering mellan arbetsblad
Såväl INDIREKT som matrisformeln med TRANSPONERA har en sak gemensam, utöver att de löser problemet, och det är som Niklas påtalar.
Prestandan blir lidande ju större datamängd vi har att göra med.
En lösning (det finns ytterligare att tillgå) men som också är intressant att belysa är:
=INDEX(Blad2!$A1:$A256;PASSA(KOLUMN();Blad2!$A$1:$A$256))
Michael, jag vill fortfarande se din lösning. Vi kan ju alltid försöka utveckla den.
Mvh
XL-DennisSv: Datatransponering mellan arbetsblad
Min tanke påminner om din senaste lösning
=INDEX(Sheet2!$A:$A;COLUMN())
eller mer generell om jag vill transponera från Sheet2!D:D till E9 och framåt
=INDEX(Sheet2!$D:$D;COLUMN()-COLUMN($E$9)+1)
mvh
/Michael