Jeg har en Filemaker-database med 33.000 poster. Indholdet er klassiske CD'er. Mine ønsker kan sikkert "programmeres" i Filemaker, men der er jeg endnu mere uerfaren end jeg er i Excel, så jeg udtrækker de relevante felter og indlæser dem i Excel
Jeg har et felt med "Komponist" - altså med angivelse af komponist(er) på den pågældende CD. Jeg ønsker nu at tilføje en kolonne (faktisk en slags database) med alle de komponistnavne jeg kender.
For hver CD skal der nu checkes for om et af komponistnavnene i "databasen" forekommer i komponistfeltet i samtlige poster. Hvad der i givet så skal ske, er lidt uklart for mig p.t. Det kan jeg ikke lige overskue, da der er flere problemer involveret.
Jeg har leget lidt med Jan Kronsells artikel: http://kronsell.net/lopslag.htm Med den kan jeg komme et stykke af vejen, men der opstår hurtigt problemer.
Hvis min "database" (som blot kan være to kolonner på samme ark) bl.a. indeholder en stribe à la:
EFTERNAVN - FORNAVN - TEKST Shostakovich - Dmitri - Her er en tekst om Shostakovich
Opgaven består i at konstatere, at et af mig kendt komponistnavn findes i feltet "Komponist" for hver CD (= alle poster i databasen). Hvis der er match, skal "TEKST" skrives i et nyt felt til højre for "FORNAVN".
Problemet er at mit felt med "KOMPONIST" er en blandet landhandel. Der vil f.eks. kunne forekomme følgende: Dessau Dessau, Paul DESSAU / SHOSTAKOVICH / BEETHOVEN
Jeg kan kun få det til at virke med de felter der kun indeholder "Shostakovich", men ikke hvor dette navn indgår som en del af en streng.
Æhhh, VB ... det er en makro, ikke? VB er helt sort for mig. Ved at bruge den indvendige side af hovedet kan jeg godt følge logikken i dit forslag, men hvordan implementerer og eksekverer jeg det?
xl-Enthusiast skrev: > Om jeg forstår dig ret, så prøv denne i B2: > > =IF(ISERROR(FIND(" ";A2));VLOOKUP(A2;$G$2:$H$20;2;FALSE);VLOOKUP(MID(A2;1; > FIND(" ";A2;1)-2)&"*";$G$2:$H$20;2;FALSE)) > > Kopier ned.
Jo, men får den får et hit på "Mozart / Dessau" skriver den teksten for Mozart. Jeg glemte at fortælle hvad der skal ske, når den finder flere navne i et felt (f.eks. "Mozart / Dessau / Shostakovich / Nielsen"). Jeg skrev:
> Hvad der i givet så skal ske, er lidt uklart for mig p.t. Det kan > jeg ikke lige overskue, da der er flere problemer involveret.
Du har jo faktisk løst opgaven og så skal du selvfølgelig også have point. Giv et pip så du kan få dem.
Nu ved jeg så ikke om jeg kan fortsætte i denne tråd og sætte nye point på spil, for jeg skal jo videre herfra?
Men hvis der står "Mozart / Dessau" er det jo ikke let at vide, hvis det er essau der skalæ ledes efter, derfor var min formel indrettet efter at søge på det første navn.
Spørg løs, men vær meget konkret i opågaveformuleringen
Nu står der "Dessau" i kolonne B, men der kunne også stå "Dessau Dessau, Paul", ligesom "Mozart" kunne have været "Mozart, W.A.".
Det skal bare ændres til at den søger efter om et givent navn overhovedet forekommer i B - ikke som det første med bare eet eller andet sted. jeg har kun behov for at vide om Ja eller Nej.
Et af mine problemer herefter er, at der i min "komponistdatabase" (kolonne G+H) godt kan være flere med samme efternavn, f.eks. Leopold Mozart og Wolfgang Amadeus Mozart. Det ved jeg ikke lige hvordan jeg skal håndtere.
Hvis jeg skriver f.eks. "Mozart-L" og Mozart-WA" i kolonne G, findes disse jo ikke i kolonne B. Medmindre, selvfølgelig, at man beder den om at ignorere eventuelle bindestreger og alt efterfølgende. Måske en mulighed, men jeg er lydhør over for smartere løsninger.
Det ville være mere hjælpsomt hvis du ville uploade en fil med flere eksempler (til http://gratisupload.dk/) og så var noget mere klar i beskrivelsen, eksempelvis:
Hvor står det navn der skal søges efter (eksempelvis A2:A100) Hvis det står i A2:A100 og hvis der står flere navne i en given celle, hvilket af navnene skal der søges efter, eller skal der søges efter alle navne.
Hvor mange skilletegn kan der forekomme (, /) osv.
Hvor står det der skal returneres (eksempelvis i H2:H100)
(Brug også gerne overskrifter der relaterer til emnet og ikke til noget fuldstændigt andet. Muligvis er det indlysende for dig selv , hvad der menes, men prøv at sætte dig i en andens sted).
Puha, det så overskueligt ud i det lille eksempel jeg lavede, men når jeg på, på opfordring, udbygger med rigtige data, vælter det op med problemer og jeg har forståelse for hvis du står af her.
Den nye fil ligger her:
Et par indledende og overordnede kommentarer: 1. Der er ca. 3000 tomme felter i kolonne B i databasen - altså hvor der ikke er angivet en komponist. Jeg har udelade 2.997 i min fil. 2. Det højeste antal navne i kolonne B er 15, adskilt med / 3. Jeg er p.t. i gang med at afluse databasen for fejl, f.eks. "Abelc.F." i stedet for "Abel, C.F.". 4. Jeg er også i gang med at indsætte de manglende kommaer som adskiller mellem efternavn og fornavn (en gammel uhensigtsmæssighed fra før min tid). Abstrahér venligst fra disse fejl, som vil blive rettet.
Måske er opgaven slet ikke egnet til Excel alligevel? Lad mig, så kort og præcist som det er mig muligt (jeg er højrehjernet), forsøge at beskrive hvad det overordnede formål er:
I tillæg til den eksisterende database med varer (CD'er) vil jeg oprette en komponistdatabase og forbinde disse relationelt i Filemaker. Denne komponistdatabase vil blive fodret med alle de lister jeg kan finde rundt om og vil givetvis indeholde en masse navne som vi slet ingen CD'er har med, men hellere for mange end for få.
Det endelige mål er at kunne slå op i komponistdatabasen og se hvilke CD'er vi har med musik af Mozart, hvis navn vil optræde som et link i varedatabasen, da han findes i komponistdatabasen. Det er altsammen Filemaker-teknik og derfor denne tråd uvedkommende.
Formålet med den øvelse jeg har gang i nu er at få identificeret sammenfaldene mellem de to databaser - altså hvilke CD-komponister der findes i komponistdatabasen (eller omvendt).
Det jeg gerne vil opnå er således at danne det materiale jeg skal bruge for at opbygge komponistdatabasen. At der er op til 15 navne i komponistfeltet i CD-databasen og der derfor vil blive dannet 15 nye felter i kolonnerne C-Q i denne Excel-række (databasepost), skal jeg nok finde ud af at håndtere. Eksempel:
Hvis der er 4 navne i et felt i CD-databasen og disse alle findes i komponistdatabasen, så skal der altså dannes 4 nye felter til højre for kolonne B med eet navn i hver.
Desværre viser det sig (i det nye live-eksempel), at der er langt flere forekomster af komponister med samme efternavn end jeg regnede med. Havde det være nogle få, kunne jeg have fixet det med knofedt, men med det store antal skal der nok findes en anden løsning og her er jeg helt blank.
Jeg har prøvet også at lave en opstilling ud fra de kriterier som du forsøger at angive. Men som xl-Enthusiast skriver, ville det være bedre (og nemmere) hvis du sendte en fil, hvor dit eget oplæg er angivet, og hvad det er du nøjagtigt ønsker. Dette har du gjort nu på Gratisupload.dk, men har så indsat et password til at hente filen.
Så det ligger noget tungt med at prøve at hjælpe dig. Så enten skal du levere filen uden password, eller også angive password herinde. Det andet giver ikke rigtig mening.
Og så en lille detalje :-). Når du skriver herinde, så angiv dit indlæg som en kommentar, og ikke som et svar, med mindre da, at du vil lægge et svar på en løsning.
Towle! Din uploadede fil gav da, om ikke andet, så en oversigt over hvad det er du har af navne i din database, og hvordan data ser ud fra den.
Men det er stadig (for mig) lidt svært helt at danne sig et overblik over, hvordan du har tænkt dig et slutresultat.
I det uploadede eksempel, har du 2 sæt overskrifter som er ens (Navn og Tekst); men når jeg kigger på disse 2 sæt kolonner, så kan jeg ikke se sammenhængen i disse. Kun i kolonne H og I ser jeg sammenhæng.
I den opstilling som jeg har lavet, søges der i et søgefelt efter et navn i kolonne B, og i alle de match som der matcher denne søgning, angives der så i en ny kolonne, på hvilken CD disse match findes. Er dette ikke det overordnede mål med dit ønske ?
Navn og forklaringsfeltet i H og I kolonnen, er vel som sådan ikke nødvendige for søgningen, eller hvad ? Og skal de overhovedet indgå i dette søgeresultat ? Navn og forklaringen på disse har du jo i din Filemaker database, hvor du (formentlig) går tilbage med de fundne søgeresultater, og slår dem op.
Eller korriger venligst, hvis jeg helt har misforstået hvad det er du ønsker.
Der foretages et opslag i hvert felt i kolonne B for at checke om et eller flere af navnene findes i komponistdatabasen.
Komponistdatabasen, som endnu kun eksisterer som kolonne K-L har jeg nu forsynet personerne med et unikt ID-nummer.
B38 indeholder "Adam / Weber / Stankelbein / Chopin / Delibes / Tchaikovsky / Debussy / Berlioz". Hvis "Adam" findes, skrives hans ID-nummer i C38. Hvis "Weber" findes, skrives hans ID-nummer i C39. Nye kolonner oprettes on-the-fly efter behov. Som det ses findes "Stankelbein" ikke og derfor skrives der blot et nul.
Towle! - Hvori består Columbusægget. Jeg ser ingen formler, som gør at du er kommet frem til den løsning du beskriver. Ej heller hvori du får returneret CD nummeret i kolonne A (som jo var et af dine kriterier).
Jeg kan ikke finde ud af, om det er dig som er forvirret nu, eller mig!
Det er stadig ganske uklart for mig, hvad du ønsker, og ud fra hvad.
Når nu du har dine rådata i Filemaker Pro, hvorfor udtrækker du så ikke disse i enten en CSV fil, eller som en Excel fil, som programmet også kan, og så sender dem i en fil på Gratisupload.dk Så ville det være ganske meget nemmere, at se hvad der er af data, og hvordan de hænger sammen. Som du fremlægger dem i dine fil eksempler, er det ikke til at se. Som beskrevet i et tidligere indlæg, kan jeg ikke se sammenhængen i dine kolonner (Navne og Komponister)
Men hvis du mener at du kan bruge din løsning nu (Columbusægget), så er det jo fint.
Øh, nej. jeg har lavet en principskitse. Det er jo netop hjælp til formlerne der er mit ærinde her.
ebea skrev: > Men hvis du mener at du kan bruge din løsning nu > (Columbusægget), så er det jo fint.
Joeh, men jeg mangler jo netop den formel der udfører opslagene og skriver data i de nye felter.
Hvordan skal formlen være der læser B38 og slår op i kolonne K for at se om der er bid. Hvis der er det, skrives ID-nummeret i et nyt felt ... her C38. Er der flere hits i B38, skrives i (nye om nødvendigt) felter (C38, D38 o.s.v.).
Lidt ærgerligt hvis det skal strande her, da jeg selv synes det er så simpelt og indlysende. Jeg kan bare ikke komme i tanker om andre måder at beskrive det på.
Towle! - Jeg har ikke helt opgivet endnu (men tæt på). Men jeg har i mellemtiden, opdelt alle dine navne i din nye database, så de befinder sig som opdelte for, mellem, og efternavne, for at lette en søgning.
Og så prøver jeg at få lavet en sammenligning med dine databaser (som jeg tror er meningen med det hele), og så finde den bedste løsning for dette. Disse 2 databaser er nu opdelt på 2 ark. Og på det ene ark kommer resultaterne med navn og ID Nr. Jeg har prøvet med formler, men det endte op med en MEGET langsom søgning; så det er ikke den vej det skal løses.
Sammenligning mellem "databaserne" er meningen, ja. Hvis en funktionsdygtig løsning er langsom, spiller det ingen rolle. Det skal jo kun bruges een eller ganske få gange i Excel, da de genererede data skal overføres til Filemaker.
Du har ikke uploadet endnu, så vidt jeg kan se. Fint nok, jeg venter gerne.
Towle! - Jeg har noget løsning klar, som jeg tror er det som du har kigget efter.
Jeg kunne godt uploade den til gratisupload.dk, men jeg har en fornemmelse af, at du måske nok har 10 ekstra spørgsmål til løsningen, og ændringer på Regnearket.
Så for at gøre det lidt nemmere, kan du svare på min private email, så sender jeg Regnearket til dig.
post@ebe.dk
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.