Just nu i M3-nätverket
Jump to content

Hämta ett värde från en tabell till annan


Camilla.L

Recommended Posts

Hej

 

Jag håller på att få tag i ett kommando där man kan hämta ett värde ur en tabell i xls, till annan om två rader är lika danna. Dessa två tabeller är sparade på helt olika ställen.

 

Jag har klurat en bit, men kom inte hela vägen eller kanske är inne på helt fel spår.

 

Det jag har skrivit är:

 

="[c:\\camilla\test1.xls]blad1!INDEX(B;OM(A)'='B1)"

 

Där B1 är från den tabell jag står i.

 

Någon som vet vad jag gjort för fel?

 

//Camilla

 

Link to comment
Share on other sites

ett annat kommando jag gjort är:

 

='\\ED\KBA\m\Prislistor\PrislistorS[Prislista.xls]Svensk'!DHÄMTA(;price;OM(C=C8))

 

Där allt fungerar utom OM(C=C8)). Vet ej hur jag skriver detta kommandot. första C står för den exelbladet jag ger länken till och C8 för det ruta i tabellen som jag står i. Någon som vet hur jag får detta att fungera??

 

 

Tack på förhand!

mvh Camilla

 

[inlägget ändrat 2004-10-07 13:31:26 av Camilla.L]

Link to comment
Share on other sites

Nja, det ser inte riktigt bra ut.

 

Rådet jag kan ge är att du börjar med att testa dina formler inom en arbetsbok, gärna inom ett blad däri. Testa de oika delarna av formeln för att se att de beräknas till det du önskar. Titta även i hjälpen i Excel hur formlerna ska utformas.

 

Om-satserna se inte rätt ut, ska de ens vara där i funktionen?

 

[log]Syntax

 

DHÄMTA(databas;fält;villkorsområde)

 

Databas är det intervall av celler som listan eller databasen består av. En databas är en lista med relaterade data, i vilken rader med relaterad information utgör poster och datakolumner utgör fält. Första raden i listan innehåller etiketter för varje kolumn.

 

Fält anger vilken kolumn som används i funktionen. Fält kan anges som text med kolumnetiketten inom citattecken, t ex "Ålder" eller "Vikt", eller som ett nummer som representerar kolumnens position i listan: 1 för den första kolumnen, 2 för den andra kolumnen, och så vidare.

 

Villkorsområde är intervallet av celler som innehåller de egenskaper du anger. Intervallen du använder som villkorsargument måste innehålla minst en kolumnetikett och minst en cell under kolumnetiketten som anger ett villkor för kolumnen.[/log]

 

Som sagt, testa först dina formler inom ett blad.

 

 

 

/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, för svaret men jag får ingen ordning om hur vilkorsområdet skrivs. Vet du det???

 

//Camilla

 

Link to comment
Share on other sites

Inte alls van vid att använda DHämta eller dess syskonfunktioner.

 

Ta en titt hos XLDennis så kanske du får inspiration

http://www.xldennis.com

eller mer specifikt:

http://www.xldennis.com/TabellerV.htm

där finns ett exempel med dhämta.

 

Villkortområdet ska vara ett område på arbetsbladet där en post i en tabell beskrivs unikt. Testa först med någon av syskonfunktioner, typ Dantal, då dessa är enklare och inte kräver unik träff.

 

Kanske om du säger mer exakt vad du är ute efter så kanske vi kan hjälpa med mer specifika råd. Just Index och sökfunktionerna kan man krångla till precis hur mycket som helst och det kan vara svårt att beskriva utan ett praktiskt exempel.

 

 

/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

 

Jag har redan varit inne på den hemsidan, men den gjorde mig inte mycket klokade.

 

Är det någon som vet om det finns ett "sling-kommando" i excel?? typ While.

 

Jag har följande kommando:

 

=OM(B1:B20=H19;E4;)

men det reurerar falskt/falskt/... och eftersom första är faskt skrivs falskt ut på skärmen.

 

//Camilla

 

Link to comment
Share on other sites

=OM(B1:B20=H19;E4;FALSKT)

Returnerar värdet i E4 om och enbart om alla värden inom området B1:B20 är samma som i H19

 

Är det vad du önskar?

 

Beskriv ditt problem och kanske via kan ge dig tips, problemt i någorlunda klara ordalag.

 

While finns inte som ett Excel-kommand, då får du gå in VBA. Men troligen går det du önskar göra att lösa utan VBA. Med lite kunnande och en del tankekraft ska vi se att det går. Det mesta (!) går att utföra med Excels formler.

 

 

/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

Nej tvärtom jag vet att inom intervallet B1:B20 finns ett (endast ett) värde som är lika med H19. Igentligen är det så att om det visar sig att B5 är lika med H19 ska E5 skrivas ut osv.

 

tack för att du hjälper mig.

 

//camilla

 

Link to comment
Share on other sites

Jag är helt ute när jag försöker lista ut vad du vill - beror kanske på att du använder dig av helt olika formler.

 

Är det så att du vill ha ett pris från en cell i ett blad i en annan arbetsbok om du har i din aktiva cell t.ex. ett produktnummer?

 

Kanske nedanstående formel?

Villkoret i cell A3, Sheet!A:D är området där datan finns (flera kolumner) och 3 är kolumnen från vilket värder returneras. Om letarad ger fel visas inget i cellen.

 

[log]=IF(ISERROR(VLOOKUP(A3;[test.xls]Sheet1!$A:$D;3;FALSE));"";VLOOKUP(A3;[test.xls]Sheet1!$A:$D;3;FALSE))

 

=OM(ÄRFEL(LETARAD(A3;[test.xls]Sheet1!$A:$D;3;FALSKT));"";LETARAD(A3;[test.xls]Sheet1!$A:$D;3;FALSKT))

[/log]

BI

 

Dessa formler är inte bra titta på mitt andra inlägg kl 17:09 istället

[inlägget ändrat 2004-10-07 17:11:46 av BI]

 

/Log-taggar även här/

/Monshi - moderator för Officeprogram/

 

 

 

[inlägget ändrat 2004-10-07 21:22:02 av Monshi]

Link to comment
Share on other sites

Kanske följande:

 

[log]=OM(ÄRFEL(PASSA($H$4;'\\test2\testBI\[test.xls]Sheet1'!$B:$B;0));"";FÖRSKJUTNING($E$1;PASSA($H$4;'\\test2\testBI\[test.xls]Sheet1'!$B:$B;0)-1;0))[/log]

 

BI

 

 

/testar med en LOG-tag för att minska bredden på inlägget /

/Monshi - moderator för Officeprogram /

 

[inlägget ändrat 2004-10-07 17:51:44 av Monshi]

Link to comment
Share on other sites

Tack!!

 

Jag började med att försöka få VLOOKUP att fungera och så började jag testa i endast en tabell.

 

Men när jag skriver =VLOOKUP(H19;$B:$C;3) får jag #värdefel! på H19, men förstår ej värför??

 

//Camilla

 

Link to comment
Share on other sites

För VLookup gäller att

=VLOOKUP(letauppvärde;tabell;kolumnindex;ungefärlig)

där letauppvärde ska vara ett värde som finns i vänstraste kolumnen inom den tabell som anges som andra variabel.

Om ungefärlig är utelämnad eller SANT (true) krävs det att tabelln är sorterad, om falskt returneras enbart en exakt matchning.

Vlookup returnerar då värdet i den kolumn kolumnindex indikerar.

 

 

med andra ord, som praktiskt exempel, något som är svårt att åskådliggöra i eforum men jag försöker.

 

I kolumn A har vi värden 5, 10, 15, 20

I kolumn B har vi bokstäverna A, B, C, D

 

I en annan cell har vi formeln:

=VLOOKUP(G5;A1:C4;2;FALSKT())

I cell G5 kan du skriva in det värde du vill söka efter. Skriv ex.v. 10 och Vlookup returnerar B

 

Men men. Vad är det du egentligen vill göra.

Har fatta det som om du har två tabeller med gemensama data, något som gör att du kan söka utifrån tabell1 i tabell2. Du vill sedan returena resten av raden i tabell2 till tabell1.

 

Nu spånar jag utifrån detta;

Om det är flera värden som ska hämtas från samma rad är funktionerna, PASSA och INDEX att rekommendera. Först används PASSA för att hitta vilken rad som det gäller, PASSA ska då söka efter ett unikt index.

INDEX tar sedan det värde som PASSA returnerat och hämtar data inom vald kolum. Om flera kolumner, flera celler med INDEX.

Med samma data om ovan:

=PASSA(G5;A1:A4;0)

och

=INDEX(A1:B4;H6;2)

där H6 är den cell som PASSA är skriven i.

 

Om det krävs sökning över flera kolumner, om inte det räcker med en cell för att identifiera raden, ja då kan man mata in PASSA som följande matrisformel:

{=PASSA(F5&G5;A1:A4&B1:B4;0)}

Där F5 och G5 innehåller värden 10 och B

Där A1 till B4 innehåller samma tabell som tidigare.

Avsluta inmatningen via tangentkombiationen CTRL+SHIFT+ENTER

 

 

Nu har jag nyttjat de svenska namnen, hoppas du förstår ändå.

De motsvarande engelska namnen är:

PASSA - MATCH

INDEX - INDEX (ingen skillnad)

 

Dessa formler är effektiva eftersom man man nyttja sökningen som PASSA (match) gör i flera celler med INDEX. Att söka i hel matris efter exakt värde är annars tidskrävande och om man har en stor arbetsbok är PASSA och index en slagkraftig kombination.

 

Hoppas jag hjälper dig lite med detta.

 

 

/T

 

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

 

Edit:

Missade en tangent vid inmatningen av matrisformeln. CTRL+SHIFT+ENTER ska det vara.

Alternativt till PASSA man man då använda DHÄMTA, men passa är enklare och mer begriplig. DHÄMTA hämtar bara ett värde och är även svårare att arbeta med.

 

 

Edit2:

Missade en hel formel!

Lagt till Passa och Index formel

[inlägget ändrat 2004-10-08 09:45:38 av Monshi]

 

[inlägget ändrat 2004-10-08 09:50:18 av Monshi]

Link to comment
Share on other sites

Hej

 

Igentligen är det så du beskriv, som jag vill göra.

 

=VLOOKUP(H19;$B:$C;5;FALSKT())

 

i rutan H19 står det 40-030-10 och det ska visa sig att det gör det i även B19 och då vill jag att det som står i E12 ska skrivas i den rutan formlen står i. Men jag får felet #värdefel! på rutan H19 och det är det felet jag inte förstår.

 

Tanksam för förslag, på vad jag gör för fel.

//Camilla

 

 

 

Link to comment
Share on other sites

haha, nu ser jag:

=VLOOKUP(H19;$B:$C;5;FALSKT())

 

Bör stå:

=VLOOKUP(H19;$B:$F;5;FALSKT())

 

5 indikerar att du ska returnera värdet i kolumn 5 inom B:C. B:C är endast två kolumner. Det måste med andra ord stå $B:$F i formeln.

Är det bara ett värde per rad som ska hämtas?

 

Edit: Fast kanske något mer är fel, om kolumnindex är större än antalet kolumner för jag felet #referens. Värdefel lyckas jag inte få..

Och:

 

H19 står det 40-030-10 ... gör det i även B19 ...det som står i E12 ska skrivas...

du menar väl E19, då ska femman (5) i formeln ovan bytas mot en fyra (4)

Ser inte allt vid första genomläsningen, förlåt.

 

/T

 

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

 

 

[inlägget ändrat 2004-10-08 10:47:05 av Monshi]

Link to comment
Share on other sites

TACK, men problemet med värdefel kvarstår på H19. H kolumnen har formatet allmänt, är detta något som kan vara fel?

 

//Camilla

 

Link to comment
Share on other sites

1 2 3 #Namn? 1

4 4 4

5 6 1

6 6 5

 

Jag gjorde en egen liten tabell för att testa med bara heltal, då får jag inget värde fel men jag få inte ut något annat än #Namn?.

 

Är det så att VLOOKUP kräver heltal???

 

=VLOOKUP(E1;A1:C4;3;FALSKT())

 

//Camilla

 

Link to comment
Share on other sites

Om jag förstår er rätt så har ni kommit fram till (på ett helsvenskt system):

=LETARAD(H19;$B:$E;4;FALSKT)

Stämmer det?

 

Dvs om H19=B19 så kommer den att returnera E19.

Du (Camilla) skriver att du vill ha E12. Är det ett tryckfel? Annars måste du nog röra till det ännu mer.

 

2. Letarad/vlookup kräver att både vilkorsdata och uppslagsdata är inskrivet på precis samma sätt .

 

Visningsmetoden (allmänt/text osv) spelar ingen roll. Men det måste vara inskrivet på precis samma sätt. Dvs en inmatad text, exempelvis 2004-10-08 är inte samma sak som ett "riktigt datum" som visas som 2004-10-08 (där det verkliga värdet är 38268). Du kan lätt kontrollera om data är inmatat på samma sätt genom att välja "format text" för båda områdena.

 

Men jag tror inte att det är ditt problem. Då borde du få "#Saknas" istället för "#värdefel!".

Hmm, om du har ett helsvenskt system och försöker skriva VLOOKUP så får du "#Namn?" som felmeddelande. Men du skulle kunna få "#värdefel!" om excel faktiskt försöker köra "laga formel", men misslyckas.

 

Vad har du för några språk på datorn? Excel är ganska känsligt. Både för sina egna inställningar och windows.

 

För att vara säker bör du gå via "infoga funktion, leta upp och ref...". och lägg in dina vilkor istället (reservation för att den logiska strukturen är borttagen i excel XP). Då blir skiljetecken och liknande rätt.

 

/M

 

 

[inlägget ändrat 2004-10-08 11:59:16 av MH]

Link to comment
Share on other sites

mmh, nu får jag en helt annan tanke i huvudet. *skäms*

Vlookup är engelska namnet, Letarad är det svenska.

 

Kör du på svensk eller engelsk version av Excel?

Felmeddelandet #Namn tyder på att funktionsnamnet inte stämmer samt att du kör svensk version. Förlåt förlåt om jag blandat ihop språken. Fick för mig att du körde engelsk version...

 

och nej, Letarad kräver inte heltal, den fungerar även till exempel med text.

 

Förlåt än en gång.

 

 

/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, jag ska testa allt på måndag.

 

(fel av mig E12 ska vara E19 precis som ni misstänkte.)

 

Kör svensk version tror jag eftersom allt jag hittar i hjälpen är på svenska. Är själv lite förvirrad av att se kommandona på svenska eftersom dem språk jag har programmerat i innan är på Engelska.

 

//Camilla

 

Link to comment
Share on other sites

Tack!

 

har fått det att fungera och så har jag bytt VLOOKUP mot LETARAD.

 

men jag hade tänkt att krongla till det lite mer:

 

Har nu skrivit:

 

=LETARAD(B4;'[Prislista.xls]Svensk'!$B:$E;4;0)

 

problemmet är att dett som skrivs ut inte kommer från tabellen i prislistan utan E4 altså B4+4.

Någon som vet hur jag får datorn att förstå att jag ska hämta värdet ur tabell $B:$E???

 

Tacksam för alla förslag!!

 

//Camilla

 

Link to comment
Share on other sites

 

=LETARAD(B4;'[Prislista.xls]Svensk'!$B:$E;4;0)

 

Ser korrekt ut.

 

Bygg formeln via det klicka formulär Excel har så borde du få det att fungera. Som sagt, ser inget fel i formeln.

 

Enda jag kan tycka något om är sista nollan (0). Noll = Falskt vilket ger att formeln söker efter "bästa" match i en sorterad lista. Om du vill söka efter exakt match kan du antingen utelämna sista ;0 eller skriva ditt SANT (=1).

 

Prislista är väl inte den arbetsbok du nu står i, där du har formeln? Det är väl en annan bok? Ta inte illa upp, men det är egentligen enda orsaken jag kan se till det fel du får att du söker inom samma arbetsblad...

 

Hoppas att vi får rätsida på ditt problem!

 

 

/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

Det är lite där problemmet ligger. Jag är i en tabell där jag har artikelnr för olika produkter, men inte priserna. I den andra arbetsboken finns både artikelnr och pris. Det är priset jag vill åt genom att leta upp det artikeln nummer jag söker efter och plocka med priset och skriva i den rutan där jag har skrivit formeln.

 

Detta kanske inte går??

 

//Camilla

 

Link to comment
Share on other sites

Om jag har förstått ditt problem rätt bör följande formel lösa det:

 

=INDEX([prislista.xls]prislista!$B$1:$B$5,PASSA(A1,[prislista.xls]prislista!$A$1:$A$5,0))

 

I ovansåtende formel är:

 

[prislista.xls]prislista!$B$1:$B$5 = område innehållandes priser.

 

[prislista.xls]prislista!$A$1:$A$5 = område innehållandes artikelnummer.

 

A1 = cell innehållandes det artikelnummer du vill hämta i arbetsboken prislista.

 

Formeln skriver du i cellen dit du vill ha priset retunerat.

 

 

Hoppas att detta var någorlunda förståligt, och att jag uppfattat ditt problem korrekt.

 

 

 

Gabriel.

 

Link to comment
Share on other sites

Archived

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



×
×
  • Create New...