Hjælp til opslag
Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Formler
Forum beskrivelse: Hjælp til formler i regneark og/eller brugen af disse.
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=455
Udskrevet den: 23.Nov.2024 kl. 09:09
Emne: Hjælp til opslag
Besked fra: peppe
Emne: Hjælp til opslag
Posteringsdato: 08.Sep.2011 kl. 19:43
Hej igen herinde Jeg får brug for hjælp til at slå nogle værdier op. Det kan virke kompliceret at forklare hvad jeg ønsker, men vedhæfter gerne et eksempel, hvis det kan gøre det mere forståeligt :-) I en projektmappe har jeg et antal faner hver med en tabel som jeg skal hente værdier fra. Jeg har også en fane, hvor jeg skal bruge den opslåede værdi (lad os kalde det dataark). Tabellerne i de enkelte faner er navngivet efter dato på følgende måde: "list0911" (for september 2011) "list0811" (for august 2011) "list0711" (for juli 2011) "list0611" (for juni 2011 Og så videre... Alle tabeller er sorteret efter første kolonne i forhold til et entydigt ID-nr fx 3000, 3001, 3002, 3003 osv. På dataarket ønsker jeg at slå værdien op, der står ud for det entydige ID-nr. Udfordringen er at det enkelte ID-nr måske kun findes i list0711 og så list0411 og list0111 osv. På dataarket skal jeg have værdien for det enkelte ID-nr de sidste 5 gange det er tastet ind - som nævnt fra fx list0711, list0411, list0111 osv. men ved ikke hvilken tabel det er tastet ind. Hvad ønsker jeg Excel gør for mig: - Jeg taster ID-nr ind på dataarket - Excel kigger på datoen som står på datoarket (=I DAG()) fx 08-09-2011 - Excel kigger i seneste liste fx list0911 og returnerer værdien, hvis den findes - Excel kigger næste liste (list0811) og returnerer værdien, hvis den findes - Dette fortsætter indtil Excel har fundet de sidste 5 værdier der er indtastet. Jeg har stor tiltro til at eksperterne herinde kan løse denne lille opgave... Peppe
|
Svar:
Besked fra: rassten
Posteringsdato: 10.Sep.2011 kl. 13:34
Hej Se vedhæftet eksempel, som vist nok tager udgangspunkt i et tidligere spørgsmål.
uploads/107/Opslag_i_liste-2.xlsx - uploads/107/Opslag_i_liste-2.xlsx
Kolonnerne M,N og O er nødvendige mellem regninger, disse kan selvfølgelig gemmes. De fejl meldinger som er i kolonne M og O skal du ikke prøve at rette, da de er nødvendige for lopslag. I kolonne N skal du selv skrive hvis der kommer nye navngivne områder.
------------- VH rassten
Arbejde excel 2010 Privat excel 2010
|
Besked fra: peppe
Posteringsdato: 10.Sep.2011 kl. 17:58
Hej Rassten Ja du har fuldstændigt ret. Jeg har lavet et indlæg tidligere, hvor du ligeledes har hjulpet mig en del videre. Sidste gang skulle jeg bruge værdier fra alle lister 12 mdr. tilbage. Denne gang skal jeg kun bruge de lister, hvor der er tal for det enkelte ID-nr. Derfor lavede jeg et nyt indlæg. Igen har det vist sig at det med opslag er noget du har helt styr på. Tak for hjælpen Rassten. Der er dog en lille detalje du sikkert også kan løse: Det skyldes faktisk en mangel i beskrivelsen, så beklager... Egentlig skal jeg ikke bruge selve opslaget men differensen mellem de enkelte opslag... Eksempel: ID-nr findes i list0711, list0411, list1110, list0610 mv. Jeg skal bruge de enkelte lister trukket fra hinanden fx list0711-list0411 og herefter list0411-list1110 og herefter list1110-list0610 og så videre indtil jeg har de sidste 5 differencer. Samtidig skal datoen (altså måneden) angives i to kolonner i forhold til de to tal der er trukket fra hinanden. I eksemplet ovenfor vil det så være fra April 2011 til Juli 2011 og herefter fra november 2010 til April 2011 og herefter fra Juni 2010 til November 2010 og så videre... Kan det fixes ??? På forhånd tak Jeg bukker og skraber og siger tak Peder
|
Besked fra: rassten
Posteringsdato: 11.Sep.2011 kl. 02:09
Hej Nu hvor du skriver det, kan jeg godt huske at det var et eksempel fra dig.
uploads/107/Opslag_i_liste-3.xlsx - uploads/107/Opslag_i_liste-3.xlsx
Prøv at se vedhæftet, jeg håber at det noget i den stil du har brug for.
Det er vigtigt at listen med navngivne områder i kolonne N, er sorteret med ældste øverst
------------- VH rassten
Arbejde excel 2010 Privat excel 2010
|
Besked fra: peppe
Posteringsdato: 11.Sep.2011 kl. 04:22
Tak tak og tak igen Så blev det vidst sat på plads. Det virker bare helt perfekt - der er ikke et øje tørt. Ja jeg ser det må være nødvendigt at sortere listen således, så det har jeg naturligvis fortsat ifølge dit eksempel. Peder
|
Besked fra: peppe
Posteringsdato: 12.Sep.2011 kl. 18:40
Hej igen Lidt i forlængelse af det tidligere spørgsmål, så vil jeg høre om følgende: Hvordan søger man i en tabel, hvor tre kriterier skal være opfyldt før Excel returnerer et ID-nr? Eksempel: Hvis man angiver adresse, nr. og Litra, hvordan får man Excel til at søge på de tre kriterier tilsammen og returnere ID-nr? PS. tabellen er sorteret efter ID-nr og dette skal helst ikke ændres. Det betyder samtidigt at adresse mv. ikke er sorteret. Venligst Peder
|
Besked fra: rassten
Posteringsdato: 12.Sep.2011 kl. 18:58
Umiddelbart kan jeg komme i tanke om 2 forskellige metoder. 1 bruge "Avanceret" filter, findes på fanen "Data" 2. Lave en ny kolonne i data, sammen træk adresse , nr og litre for alle med ID-nr. Et andet sted på samme ark, sammentræk adresse, nr og litre, på den som ikke du mangler ID-nr. på. Så brug en indeks - sammenlign formel. Begge virker dog kun hvis data er sat op på et ark, og ikke spredt ud over flere forskellige ark
------------- VH rassten
Arbejde excel 2010 Privat excel 2010
|
Besked fra: rassten
Posteringsdato: 12.Sep.2011 kl. 19:35
Eksempel uploads/107/Find_id.xlsx - uploads/107/Find_id.xlsx Formel på arket "indeks-sammenlign" forklarer næsten sig selv. Arket "Avanceret-filter", markere en celle i data området, vælg avanceret på fanen "Data",markere listeområdet, markere kriterieområdet (bemærk overskrifterne skal være med i områderne, samt ID også de rækker er tomme under kriterie området, da det er disse du vil finde), bestem om resultatet skal være lokalt eller et andet sted på arket. Avanceret filter er et godt redskab at kende til. Det kan blandt andet give en unik liste, og man kan bruge kriterie området som OG eller "ELLER" filter.
------------- VH rassten
Arbejde excel 2010 Privat excel 2010
|
Besked fra: peppe
Posteringsdato: 12.Sep.2011 kl. 20:05
Tak Avanceret filter er jeg ikke sikker på helt forstår. I begge tilfælde: hvordan sikrer man at Excel er "ligeglad" med om det er store eller små bogstaver? Peder
|
Besked fra: rassten
Posteringsdato: 12.Sep.2011 kl. 20:24
Øh-ikke sikker på jeg helt forstår indeks-sammenlign er i mit eksempel ligeglad med sToRe elle LilLe bogstaver. Det samme er avanceret filter. uploads/107/Find_id-2.xlsx - uploads/107/Find_id-2.xlsx Avanceret filter har endvidre den fordel at listeområdet og kriterieområdet kolonnerne ikke behøver at stå i samme rækkefølge. Ved godt at avanceret filter kan være lidt meget svært at forstå, men en google søgning på"avanceret filter excel" vil give en del forskellige gode resultater.
------------- VH rassten
Arbejde excel 2010 Privat excel 2010
|
Besked fra: peppe
Posteringsdato: 12.Sep.2011 kl. 20:26
Avanceret filter er efter lidt testforsøg egentlig meget smart, men... Hvis man nu som i dit eksempel angiver tre kriterier, kan man så lave en knap ved siden af til at trykke på der automatisk udfører den avancerede filtrering og skriver resultatet (ID-nr) ? Det kunne være for smart... Blot for at gøre det så brugervenligt som muligt? Peder
|
Besked fra: rassten
Posteringsdato: 12.Sep.2011 kl. 20:37
Selvfølgelig kan man det, prøv at se: http://www.youtube.com/watch?v=tw6x2Ljarc4 - http://www.youtube.com/watch?v=tw6x2Ljarc4 hvis linket ikke virker, gå til youtube søg efter: dueling excel+1420
------------- VH rassten
Arbejde excel 2010 Privat excel 2010
|
Besked fra: peppe
Posteringsdato: 12.Sep.2011 kl. 20:37
Ja det kan jeg se, hvis jeg ellers kunne åbne øjnene Begge metoder er simpelthen så logiske som kan være - super. To spørgsmål til eksperten: 1. kan man lave en knap, der automatisk laver filtreringen, som jeg ønsker (ingen brugerformular behøver komme op). 2. hvad menes der med "kun unikke poster" under avanceret filter? Venligst Peder
|
Besked fra: peppe
Posteringsdato: 12.Sep.2011 kl. 20:50
HOV HOV - hvad skete der lige der - de to gutter duelerer rigtig nok - DAMN de er for vilde. Tror lige jeg lader en ekspert med begge ben på jorden (dig) lader forklare det... Tror du jeg kan få dig til det (duelmester)
|
Besked fra: rassten
Posteringsdato: 12.Sep.2011 kl. 20:54
@2: Lille opgave: uploads/107/Find_id-3.xlsx - uploads/107/Find_id-3.xlsx Opgave i kolonne B har du samtlige køber, problem jeg vil gerne have en liste over alle de som køber(altså bruger navn). Men der er over 3000 rækker, som du så bør gå igennem for at være sikker på at du har fundet alle de forskellige brugerer som kan optræde. Løsning: markere celle B1, vælg avanceret filter, under handling, vælg kopiere til andet sted, listeområdet vælg 'Unikke-brugere'!$B:$B , eller blot vælg hele Kolonne B, vælg kopier til 'Unikke-brugere'!$R$1 eller vælg blot celle R1, markere Kun unikke poster. Tryk OK
------------- VH rassten
Arbejde excel 2010 Privat excel 2010
|
Besked fra: rassten
Posteringsdato: 12.Sep.2011 kl. 21:03
@1 prøver jeg gerne, men skal desværre først have noget at spise. Vender tilbage
------------- VH rassten
Arbejde excel 2010 Privat excel 2010
|
Besked fra: rassten
Posteringsdato: 13.Sep.2011 kl. 00:02
Prøv at se dette eksempel uploads/107/Find_id-41.xlsm - uploads/107/Find_id-41.xlsm Da jeg ikke ved noget om størrelsen på dit data sæt, har jeg lavet nogle variabler og nogle steder som du selv må lave om hvis resultatet skal stå andet sted på arket
Sub a_test() Range("U1").CurrentRegion.ClearContents fr1 = Cells(Rows.Count, 1).End(xlUp).Row 'hvor mange rækker er der i data fr2 = Cells(Rows.Count, 16).End(xlUp).Row 'hvor mange rækker er i kriterieområdet lr3 = Range("a1", Range("a1").End(xlToRight)).Count 'hvor mange kolonner er i data området Range("a1", Cells(fr1, lr3)).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "O1:R" & fr2), CopyToRange:=Range("U1"), Unique:=False End Sub
|
kriterieområdet er sat til O1 til R & fr2 , hvis det skal være andet sted, lav O om, og Cells(Rows.Count, 16), skal så laves om til antal kolonner til kriterieområde start+1 Resultatet af filter bliver kopieret til start celle U1, hvis du vil have det andet sted, lav U1 om, men husk at det skal begge stede i kode. Jeg håber du kan finde hoved og hale i ovenstående ellers skriver du bare igen
------------- VH rassten
Arbejde excel 2010 Privat excel 2010
|
Besked fra: peppe
Posteringsdato: 13.Sep.2011 kl. 23:44
Super sejt fedt (du er jo Excel haj for vildt...) Lidt forklaring følger: Jeg har et Excelark med kontaktoplysninger (ca.3500 rækker) Ud for hver række er der angivet følgende i de enkelte kolonner: Kolonne A: ID-nr (entydigt nr) Kolonne B: en anden oplysning Kolonne C: en tredje oplysning Kolonne D: en fjerde oplysning Kolonne E: adresse Kolonne F: nr (altså hus nr) Kolonne G: litra (oftest et bogstav, men kan være et tal) Kolonne H til AJ: andre oplysninger Hvis man ikke lige husker eller kender det entydige ID-nr, så vil jeg gerne have muligheden for at slår ID-nr op på adressen (altså adresse, nr og litra). Det specielle ved denne opgave: 1. Kontaktoplysningerne ligger på et andet ark (i samme projektmappe) end der hvor man slår op 2. Samme adresse (og nr. og litra) kan godt forekomme flere gange - op til 12 gange tror jeg (med hver sit ID-nr) 3. Der skal ikke ændres i excelarket med kontaktoplysninger 4. Adresse og nr. skal være nøjagtig opslag, men Litra kan nøjes med at være tilnærmet Det jeg ønsker: Man angiver hhv. - Adresse - Nr - Litra Herefter slår Excel adressen op og returnerer de entydige ID-nr der er ud for adressen (der er oftest kun et ID-nr, men der kan være op til ca. 12 ID-nr. Da der er personfølsomme oplysninger kan jeg ikke oploade selve arket Tror dog godt vi kan bruge et af de eksempler du tidligere har lagt herind. VBA kode er for sejt, men det kunne være fedt, hvis det kunne klares med Excels indbyggede funktioner. DAMN I OWE YOU BIG TIME Peder
|
Besked fra: peppe
Posteringsdato: 14.Sep.2011 kl. 01:53
... En "lille" detalje jeg netop har fundet ud af : Tilsyneladende så er der i adresser og nr angivet "blanktegn" - altså mellemrum før og efter adresse og ligeledes før og efter nr. Jeg ved ikke hvor udbredt problemet er, men tror det er generelt. FØØØØJ Hmm Nå, men det er en importeret fil fra et andet program. Fra dette program har jeg eksporteret alle oplysninger som en .csv fil (semikolonseparerat fil). Jeg går ud fra det er her den er gået galt.
Ligeledes er der sandsynlighed for at disse data ved indtastning (i det andet program) ved en fejl er indtastet forkert (fx ved at der er sat et mellemrum før litra), så det ikke nødvendigvis er importen/eksporten der er gået galt. Nogle steder er der flere mellemrum før/efter selve teksten. Det gør selvfølgelig at uanset hvad jeg så søger på, så finder Excel ikke noget pga. de dumme mellemrum. Hvordan fjerner jeg disse mellemrum før og efter teksten (ikke inde i teksten fordi det kan fx godt hedde "Hanne Ejlers Vej" men det skal ikke hedde " Hanne Ejlers Vej ". Håber også du kan hjælpe med det ? Venligst Peder
|
Besked fra: rassten
Posteringsdato: 15.Sep.2011 kl. 00:50
Beklager men jeg har ikke fået nogen mail om at du havde lavet et nyt indlæg.
Men jeg har lavet dette eksempel uploads/107/Find_id_51.xlsm - uploads/107/Find_id_51.xlsm
Dette bruger stadig en makro, men denne gang ikke avanceret filter, men almindelige loop.
Hvis koden virker som du ønsker, og derfor vil flytte kode over i din egen excel fil. Så skal du huske at rette i koden så ark navnene bliver som dine ark navne.
------------- VH rassten
Arbejde excel 2010 Privat excel 2010
|
Besked fra: rassten
Posteringsdato: 15.Sep.2011 kl. 01:03
Dit andet problem med for mange mellemrum før og efter en tekst, er desværre ikke ukendt ved import fra et andet program. I excel er der en funktion som =FJERN.OVERFLØDIGE.BLANKE(a1), som normalt kan løse problemet.
Men nu har du jo et meget stort data område og derfor vil jeg anbefale at bruge en makro vælg alle celler og kør makroen:
Sub a_test() For Each cell In Selection cell.Value = Trim(cell.Value) Next cell End Sub
|
Trim er næsten som FJERN.OVERFLØDIGE.BLANKE. Men FJERN.OVERFLØDIGE.BLANKE fjerne også overflødige mellemrum i teksten, altså " aa bbb " bliver til "aa bbb". Men det kan Trim ikke
" aa bbb " bliver til "aa bbb". Så hvis du også har for mange mellemrum i teksten, skal du have en anden makro, men det forventer jeg ikke skulle være nødvendigt.
------------- VH rassten
Arbejde excel 2010 Privat excel 2010
|
Besked fra: peppe
Posteringsdato: 15.Sep.2011 kl. 20:13
Hej igen Kan se denne tråd er ved at blive lang (2 sider nu he he). Nå men først og fremmest så tror jeg godt tør prøve lidt makro..... koden skal jeg lige have implementeret i mit ark. Da jeg ikke er superskarp til VBA kode, så tænker jeg at måske kunne få dig til at indlægge nogle kommentarer, i linierne, så jeg har mulighed for at begribe, hvad der sker ? Herefter, så er jeg pludselig blevet klogere på "Fjern.overflødige..." og "Trim" tak for det :-) , men kan TRIM kun bruges i makro (kan ikke finde den under funktioner) ? Peder
|
Besked fra: rassten
Posteringsdato: 15.Sep.2011 kl. 21:33
Hej jeg vil selvfølgelig gerne skrive nogle kommentar linier i koden. Men er ikke ved en computer lige nu. Trim er fjern.overflødige på engelsk. Men som jeg startede på at skrive i går. Fjern (Trim) i excel og i vba er ikke præcis det samme. Det betyder desværre at næsten alt i vba er på engelsk, og at de samme funktioner i vba og excel ikke er ens selv de kan have samme betegnelse. Derfor hvis du har problemer med for mange mellemrum mellem ord og vil bruge vba skal der en lidt anden kode end den du fik som nr 2.
------------- VH rassten
Arbejde excel 2010 Privat excel 2010
|
Besked fra: Allan
Posteringsdato: 16.Sep.2011 kl. 08:55
Hej med jer, Som en tilføjelse til rasstens kommentar.
rassten skrev:
Fjern (Trim) i excel og i vba er ikke præcis det samme. |
Hermed redigeret udgave af rasstens kode, blot baseret på Excels 'Fjern.overflødige.blanke'.
Sub a_test_2() For Each cell In Selection cell.Value = Application.WorksheetFunction.Trim(cell.Value) Next cell End Sub
|
Så kan du bruge den kode som passer bedst ind til netop dit behov. //Allan
|
Besked fra: rassten
Posteringsdato: 17.Sep.2011 kl. 00:11
Hej igen Både Peder og Allan
Allan har selvfølgelig helt ret i hans makro en god måde at få vba til bruge excel Fjern.over... og ikke vbas egen Fjern..(Trim).
Peder, jeg har skrevet de en del kommentar linier i min tidligere makro, for vise hvad og hvordan den virker. Hvis der er noget som du er i tvivl om eller har kommentar, skriver du bare igen. uploads/107/Find_id_5_2.xlsm" rel="nofollow - uploads/107/Find_id_5_2.xlsm
------------- VH rassten
Arbejde excel 2010 Privat excel 2010
|
Besked fra: peppe
Posteringsdato: 18.Sep.2011 kl. 19:48
Hej til Jer begge Først og fremmest vil jeg sige mange tak for de mange gode input. Det er superlækkert at mulighederne er så mangfoldige og man kan få det næsten helt efter eget ønske. Det er bare fedt. Det viser sig dog at ved at at benytte "arkbeskyttelse" (under fanen "gennemse"), så er der et par problemer... Excel brokker sig over: - flettede celler Det har jeg så rådet bod på ved at ændre dette - indsættelse at værdier betyder at cellerne ændrer format (bl.a. kant linier forsvinder) Da jeg har opbygget søgeområdet med kantlinier mv. så skal dette helst ikke ændres. Lidt primitivt har jeg lavet en makrooptagelse, hvor jeg ændrer bl.a. kantlinie og indsat det i VBA koden. - kantlinier Jeg har ændret celleområdet det handler om til at være "åbne" og er derved ikke "låst", men ønsker egentlig disse skal være låst Mine spørgsmål: 1. Kan jeg låse celler (naturligvis undtaget de celler man skal indtaste adresse i mv.) uden VBA-koden skaber problemer med låste ark ? Alternativt om man i VBA koden kan slå arkbeskyttelsen fra medens koden kører? 2. Den makrokode jeg har indsat i VBA-koden for at indsætte kantlinier virker meget voldsom Kan det gøres nemmere? Jeg indsætter Et excel-ark indeholdende VBA-koden herunder: /uploads/106/Eksempel_på_kode_VBA.xlsm" rel="nofollow">uploads/106/Eksempel_på_kode_VBA.xlsm Herundeer et word dokument, hvor søgeområdet ses: uploads/106/Word_med_udseende.docx" rel="nofollow - uploads/106/Word_med_udseende.docx Hvis der er spørgsmål for at gøre det forståeligt, så vend endelig tilbage... De bedste tanker Peder
|
Besked fra: rassten
Posteringsdato: 19.Sep.2011 kl. 00:59
Til 2.
Fra under "Range("AR14:BN50").Select" og ned til "Range("AR14").Select" burde kunne slettes og erstattes med:
Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).Weight = xlThin Selection.Borders(xlEdgeTop).Weight = xlThin Selection.Borders(xlEdgeBottom).Weight = xlThin Selection.Borders(xlEdgeRight).Weight = xlThin Selection.Borders(xlInsideVertical).Weight = xlThin Selection.Borders(xlInsideHorizontal).Weight = xlThin
|
------------- VH rassten
Arbejde excel 2010 Privat excel 2010
|
Besked fra: rassten
Posteringsdato: 19.Sep.2011 kl. 01:10
Til 1.
Som taget fra Allans svar: https://forum.excel-regneark.dk/kre-en-makro_topic264_post1434.html?KW=Password#1434
Øverst i din kode: ActiveSheet.Unprotect "123"
og til sidst i din kode: ActiveSheet.Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True
Du skal selvfølgelig lave 123 om til hvad ønsker koden skal være
------------- VH rassten
Arbejde excel 2010 Privat excel 2010
|
|