PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerExcelExceldropdown (validering) returnera data från flera kolumnerdropdown (validering) returnera data från flera kolumner
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2019-03-25 20:37
 

 Hej!

Jag sitter och försöker få till en "enkel" funktion i Excel där jag har flertalet kolumner uppdelat i par.

Typ:

(Col1)        (col2)         (col3)  (col4)         (col5)

Namn 1                                  namn 2

värde 11.1 värde 11.2            värde 21.1 värde 21.2
värde 12.1 värde 12.2            värde 22.1 värde 22.2
värde 13.1 värde 13.2            värde 23.1 värde 23.2

Och så vidare, ovan är alltså i det här fallet 5 kolumner, en blank mellan namn 1 och namn 2.

Så, jag skapar en validerad lista från raden med namn 1, namn 2.

Dropdown funkar naturligtvis bra, inga konstigheter.

Jag skapar sedan en definnierat namn från kolumn 1, och en från kolumn 4.

Sedan skapar jag en validering med =INDIRECT(N2) där N2 är den första listan.

Här funkar det fint, t.ex. så väljer jag Namn 1 i första dropdownen, och kan sedan välja t.ex värde 12.1

Men, jag vill hämta värdet till höger och visa det i en cell till höger om den andra dropdownen.

Testar jag VLOOKUP (LETARAD) så funkar det på första kolumnen, men väljer jag kolumn 4 (namn 2) så ger vlookup likväl värdet från första kolumnen.

Jag har klurat på INDIRECT, MATCH och liknande, men det är för invecklat för mig :-(

Vette tusan om jag lyckats förklara riktigt här, men gör ett försök iallafall...

 

Nytt inlägg
 2019-03-26 09:11
 
 Ändrad av anonymous  på 2019-03-26 10:13:01

 

Hej. Med stor risk för missförstånd:

Jag  TROR att du är ute efter förskjutning (OFFSET).

Dina namngivna områden är väl bara en kolumn?  och om du vill använda Letarad så måste ju de andra kolumnen ingå i området på något sätt. Med OFFSET kan du utöka markeringen. Den här formeln ber t.ex excel att utöka område1 till 2 kolumner:

FÖRSKJUTNING(område1;0;0;;2)

(lite förvirrande att använda ordet förskjutning när du inte förskjuter utan expanderar området. men men...)

Så, om du vill expandera område1 till 2 kolumner, söka efter "12.1" i den vänstra kolumnen och returnera värdet från kolumn2 blir det något i den här stilen:

=LETARAD("12.1";FÖRSKJUTNING(område1;0;0;;2);2;FALSKT)

 

Men. Som du är inne på så skulle en PASSA/INDEX vara lite flexiblare (även om letarad gör exakt samma sak  det här fallet)

Med hjälp av PASSA tar du reda på vilken rad i område1 som innehåller "12.1"

PASSA("12.1";område1;0)

med hjälp av förskjutning hitta du området som ligger en kolumn till höger om område1 (det är förskjutning på riktigt den här gången)

FÖRSKJUTNING(område1;0;1)

Lägg ihop med index som Returnerar värde i från det högra området som ligger på samma (områdes)rad som "12.1" (enligt Passa)

=INDEX(FÖRSKJUTNING(område1;0;1);PASSA("12.1";område1;0))

 

Nytt inlägg
 2019-03-26 11:51
 
 Ändrad av Christian  på 2019-03-26 12:52:35
Hej hej

Jag är inte helt säker på att jag greppade det heller. Men om Anon är på rätt spår så räcker det med:

=INDEX("områdettillhöger;PASSA("12,3"område1;0))

Mvh
Christian
Nytt inlägg
 2019-03-26 18:27
 

 Ok, stort tack för svaren, ska försöka testa förslagen.

Testade att klistra in bladet, och det verkade ju funka.

Jag jobbar på tryckeri och vi räknar bl.a. ut hur tjock en tidning eller bok kommer att bli.

Formeln är ganska enkel: Sidantal / 2 * tjockleken på papperet. T.ex. en bok har 200 sidor av Gprint-papper 90 gram,blir alltså 200/2=100, gångrar det med papperstjockleken 1.068 = 6,8 mm tjock bunt med papper.

Vad jag vill göra med excel-dokumentet är att 1. välja papper, 2. välja ytvikt, 3. skriva in antalet sidor i specifik cell och då få tjockleken uträknad i en sista cell.

Tabellerna jag får tag på ser ut som nedan, kopierat och inklistrat rakt av från papperstillverkarens sida.
Det här är bara början, det finns en uppsjö papper som ska klistras in, och ju mer jag funderar på det här så kanske det är Access som gäller :-/

MultiArtMatt     MultiArtSilk     Gprint     MultiOffset  
Ytvikt Tjocklek µm   Ytvikt Tjocklek µm   Ytvikt Tjocklek µm   Ytvikt Tjocklek µm
90 0,82   90 0,78   70 0,68   60 0,75
100 0,91   100 0,87   80 0,77   70 0,9
115 0,107   115 0,94   90 0,87   80 0,102
130 0,125   130 0,111   100 0,98   90 0,114
150 0,145   150 0,128   115 0,113   100 0,125
170 0,165   170 0,145   130 0,129   120 0,143
200 0,203   200 0,176   150 0,15   140 0,163
250 0,255   250 0,225   170 0,172   170 0,187
      300 0,279   300 0,318   190 0,207
      350 0,345         250 0,272
                  300 0,326
Nytt inlägg
 2019-03-27 09:53
 
 Ändrad av anonymous  på 2019-03-27 11:16:31

Ignorera detta inlägg och kolla nästa istället

 Det absolut enklaste skulle vara att lägga alla data under varandra med en extra kolumn för Papperstyp. Någonting i stil med (avkortat):

Papperstyp

Ytvikt

Tjocklek µm

MultiArtMatt

90

0,82

MultiArtMatt

100

0,91

MultiArtMatt

115

0,107

MultiArtSilk

90

0,78

MultiArtSilk

100

0,87

MultiArtSilk

115

0,94

Gprint

70

0,68

Gprint

80

0,77

Gprint

90

0,87

Gprint

100

0,98

Gprint

115

0,113

MultiOffset

60

0,75

MultiOffset

70

0,9

MultiOffset

80

0,102

MultiOffset

90

0,114

MultiOffset

100

0,125

MultiOffset

120

0,143

 

Och hämta data från den tabellen. Exempelvis med en pivotttabell. Om du skapare pivottabellen från ovanstående tabell (INFOGA-pivottabell) och lägger:
papperstyp och Ytvikt som rapportfilet
Tjocklek som summa (värden) 

Nu kan du ställa in både papper och ytvikt och få fram tjockleken.

PROBLEMET är naturligtvis att du får alla ytvikter för alla papper. Dvs om du t.ex väljer MultiArtMatt så syns 60gr trots att det inte finns. Om det är oacceptabelt så måste du tyvärr släppa pivotten.

 

Hursomhelst. Vi behåller tabellen men skippar pivoten.

Skapa ett hjälpblad (som du kallar hjälpblad) i cell A1 skriver du Papperstyp

i Cell  A2 skriver du in en formel i stil med: 

=OMFEL(INDEX(Blad1!$A$2:$A$2000;PASSA(0;ANTAL.OM($A$1:A1;Blad1!$A$2:$A$2000); 0));"")

Mata in som matrisformel (Ctrl+shift+enter) och kopiera ner ett lämpligt antal rader (din gissning om hur många papperstyper det kommer att finnas)

Engelska formler och förklaring finns t.ex här https://www.extendoffice.com/documents/excel/4032-excel-dynamic-list-of-unique-values.html

skapa sedan ett namngivet område 

Ctrl+F3, Nytt. Kalla det papperstyp och skriv in den här formeln i referenser

=FÖRSKJUTNING(hjälpblad!$A$2;0;0;PRODUKTSUMMA((hjälpblad!$A:$A<>"")*1)-2)

Nu kan du använda Papperstyp i din första dropdown. 

Antag att du väljer Papperstyp i Cell E2 i blad1. Då kan du skapa en lista med aktuella ytvikter för detta papper på hjälpbladet.

Vi antar att du skrivit in rubriken Ytvikt i cell E1. Då kan du skriva in den här formeln i cell E2 (inte matris)

=OMFEL(MÄNGD(15;6;Blad1!$B$2:$B$2000/(Blad1!$A$2:$A$2000=Blad1!$E$2);RAD()-1);"")

Kopiera ner ett lämpligt antal rader . MÄNGD() är ett slags hållare för olika slags beräkningar. Men man kan få den att ignorera felmeddelanden. argument 15 är samma sak som "MINSTA" och 6 "ignorera fel". Man framvingar ett felmeddelande när A kolumnen inte är = värdet i E2. Det sista argumentet RAD()-1) säger att man vill se dem minst, det näst minsta osv när du kopierar ner formeln.

Skapa ett nytt namngivet område Ctrl+F3, Nytt. Kalla det Ytvikt och skriv in den här formeln i referenser

=FÖRSKJUTNING(hjälpblad!$E$2;0;0;ANTAL(hjälpblad!$E$2:$E$200))

Använda Ytvikt i din andra dropdown.  Tex i cell F2 i blad1

Hämta tjockleken med en formel i stil med 

=SUMMA.OMF($C$2:$C$2000;$A$2:$A$2000;$E$2;$B$2:$B$2000;F2)

Det ger 0-värden om du t.ex har valt 60gr och sedan byter till en papperstyp som saknar 60gr's papper.

Nackdelen med den här metoden är att det är väldigt beräkningskrävande formler som används för att hitta unika värden.

 

Nytt inlägg
 2019-03-27 10:15
 
 Ändrad av anonymous  på 2019-03-27 11:19:11

Hmm. Jag glömde Utsnitt. Det går att använda pivottabel!!!

Skapa din data-tabell i långformat (med papperstyp i en kolumn, se början på mitt förra inlägg ). Gör gärna om den till tabell ( Ctrl+T). Då blir det lättare att uppdatera.

Skapa en pivottabell som du placerar i ett hjälpblad. 

Rapportfilter= Papperstyp och Ytvikt

Värden = Tjocklek

markera din pivottabell och gå till ALTERNATIV->infoga utsnitt. 

Välj papperstyp och Ytvikt

Utsnitten kan du flytta runt och lägga på din rapportsida

När du väljer en papperstyp så blir ogiltiga ytvikter gråa. 

 

Nu är det enkelt att hämta tjockleken till dina beräkningar. Det är bara att se var pivoten lämnar data exempelvis

=hjälpblad!$A$5

Eller, om du vill krångla till det.

=HÄMTA.PIVOTDATA("Tjocklek µm";hjälpblad!$A$4)

Där hjälpblad!$A$4 berättar vilken pivottabell som avses (övre vänstra hörnet)

Den enda nackdelen är att du måste uppdatera pivottabellen när du lägger till nya papper. Högerklicka i pivoten och välj uppdatera, eller tryck Ctrl+shift+F5

Nytt inlägg
 2019-03-27 10:20
 

 wow!

Stort tack för hjälp och engagemang :-)

Jag ska testa mig fram, nybörjare med formler som jag är.

/Erik

Nytt inlägg
 2019-03-27 15:07
 

 Dra mig baklänges på en liten vagn, det funkar!

Stort tack!

/Erik

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerExcelExceldropdown (validering) returnera data från flera kolumnerdropdown (validering) returnera data från flera kolumner

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter