Hét vraag- en antwoordplatform van Nederland

Is er een manier in Excel om een (film)lijst alfabetisch te rangschikken (maar de lidwoorden uitzonderen) ?

Bijvoorbeeld - The Man from U.N.C.L.E. , zou moeten bij de M en niet bij de T staan.

Verwijderde gebruiker
7 jaar geleden
2.4K
Verwijderde gebruiker
7 jaar geleden
Ik weet niet hoe ik het in Excel zou doen, maar ik zie wel mogelijkheden via een andere oplossing. Persoonlijk zou ik een Awk scriptje schrijven dat via regular expressions de filmtitels scheidt en lidwoorden in een nieuwe kolom zet, dan sorteren op de kolom met de overgebleven lidwoordloze filmtitels, en dan de lidwoordkolom weer voor de titelkolom prakken.
Verwijderde gebruiker
7 jaar geleden
Even snel iets in elkaar gehangen: $ cat file This Is A Title
The Man From U.N.C.L.E.
Another Title
De Nederlandse Titel
Het Engelse Verhaal $ cat file | perl -wlpe "s/(^De\s*|^Het\s*|^The\s*)(.*)/\2\\t\1/g" 2>/dev/null | sort | awk 'BEGIN{FS=IFS="\\t"}{print $2 $1}' Another Title
Het Engelse Verhaal
The Man From U.N.C.L.E.
De Nederlandse Titel
This Is A Title Het is een beetje een houterige oneliner maar het werkt wel :)
Amadea
7 jaar geleden
Als bibliothecaris los ik dit als volgt op: ik noteer de titel als "Man from U.N.C.L.E., The."
Verwijderde gebruiker
7 jaar geleden
Ja Amadea, beter natuurlijk, maar je gaat niet altijd zelf over die gegevens :) Maar dat is met wat stringmanipulatie in Excel wellicht veel makkelijker te scripten/macroën.

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Het beste antwoord

Ik heb een Engelstalige excel en dus gaat mijn antwoord daar van uit.

Stel dat in A1, A2 en verder naar beneden je titels staan. Stel dat Z1 tot Z100 (bijvoorbeeld) alle (lid)woorden staan die je wilt 'excluden' als je titel daarmee begint.(Dus bv. de, het, een, a, the, le, ein, einer, einem, enz).

Voer nu in B1 deze formule in:

=IF(ISERROR(MATCH(LEFT(A1;FIND(" ";A1)-1);Z$1:Z$100;0));A1;RIGHT(A1;LEN(A1)-FIND(" ";A1)))


En trek dit door naar beneden. Nu staat in de B-kolom B1 de titel zonder de lidwoorden die in de array Z1:Z100 staan.

Je kan deze kolom sorteren, maar dat werkt nog net niet helemaal goed. Weet niet zeker waarom. Het werkt wèl goed als je in cel C1 zet =B1, en die formule naar beneden doortrekt, en dan op de C-kolom sorteert.



Uitleg formule:

FIND(" ";A1) geeft de positie van de eerste spatie in A1.

LEFT(A1;FIND(" ";A1)-1) geeft alles links van die spatie weer (dus het eerste woord in A1), zonder de spatie zelf

MATCH(LEFT(A1;FIND(" ";A1)-1);Z$1:Z$100;0) vergelijkt het eerste woord in A1 met de array in Z1-Z100. Komt het daar voor, dan wordt er een getal teruggegeven, anders een fout.

Er zijn verschillende redenen waarom een fout teruggegeven kan worden. Bijvoorbeeld kan het eerste woord niet voorkomen in Z1-Z100. Of er kan helemaal geen eerste woord zijn, omdat de hele titel slechts één woord is, zonder spatie.

Al deze gevallen worden door
IF(ISERROR(...) afgevangen. Komt er een foutmelding terug, dan wordt in B1 gewoon A1 weergegeven. Komt er géén foutmelding terug, dan wordt in B1
RIGHT(A1;LEN(A1)-FIND(" ";A1) gezet, ofwel, alles wat _rechts_ van de eerste spatie staat.

Het enige geval dat niet gedekt wordt, is als de gehele titel uit slechts één woord bestaat, dat in de lijst van Z1 tot Z100 voorkomt. Oh, en grapjes als titels die met bv. 'L'Hiver' beginnen (dus een lidwoord zonder spatie naar het volgende woord) zullen ook wel niet goed gaan.

Deze formule kan trouwens simpeler, maar dan moet je met meerdere kolommen werken , bv een tussenkolom om de waarde voor FIND(" ";A1) op te slaan, die je vervolgens kunt hiden.

Toegevoegd na 10 minuten:
Oh, en het zou nog mis kunnen gaan als de titel met een spatie begint (slordige database). Kan nog opgelost worden door overal met TRIM(A1) te werken.
(Lees meer...)
7 jaar geleden
Verwijderde gebruiker
7 jaar geleden
Dank je heb het geprobeerd maar voor mij werkt het niet, toch bedankt
kierkegaard47
7 jaar geleden
Dat is jammer. Kan je ook vertellen waar het fout gaat ? Accepteert ie de formule niet, bijvoorbeeld, omdat je een Nederlandse excel versie hebt , en hij bv commando's als 'match' niet herkent ? Of accepteert-ie de formule wel, maar werkt het daarna toch nog steeds niet goed ? Ik heb het zelf op mijn excel uitgeprobeerd, en daar werkt het -voor zover ik dat kan nagaan- wel goed, ook al heb ik niet een filmdatabase om mee te testen ...

Andere antwoorden (1)

Ja dat kan wel als je het lidwoord in een andere kolom zet
dus onder kolom A het lidwoord, en onder kolom B het woord waar je op wilt zoeken, of filteren
(Lees meer...)
Verwijderde gebruiker
7 jaar geleden
Verwijderde gebruiker
7 jaar geleden
Het is de bedoeling om in 1 kolom te werken

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 2500
Gekozen afbeelding