Welkom op het forum.
Tja, het samenvoegen van cellen in Excel moet je zoveel mogelijk zien te vermijden.
Edit: zoals ExcelAmateur al aangaf, terwijl ik bezig was om mijn reactie te formuleren.
Ik zou dat zelf hooguit doen bijvoorbeeld in een kopregel die verder nergens in een formule gebruikt wordt.
Misschien dat iemand anders nog jouw vraag als zodanig wil/kan beantwoorden.
Ik zou het anders aanpakken: zie bijlage
(edit: de gecorrigeerde versie in post #5) en onderstaande toelichting.
Toelichting:
Data staat in een tabel (A1:F4), opgemaakt als tabel.
Voordeel is dat formules nog steeds goed gaan als rijen worden toegevoegd/verwijderd.
Nieuwe rijen worden vanzelf toegevoegd als je onder de tabel gaat typen.
De formule in kolom F wordt dan ook automatisch in de nieuwe rij gezet.
Rijen verwijderen moet je doen met rechtsklikken in een cel van de rij die je wilt verwijderen, kies verwijderen, tabelrijen.
Verder heeft elk data-element zijn eigen kolom.
In jouw voorbeeld was de kwalificatie onderdeel van de omschrijving die je er dan in de formule weer met VIND.SPEC moest uithalen: dat is niet handig.
Opbouw van het schema
Kopjes
De kopjes I2 t/m L2 zijn alleen de nummers; met aangepast nummerformaat is hier "Baan " voor gezet.
Voordeel hiervan is dat deze in formules rechtstreeks kunnen worden vergeleken met de baannummers in de tabel, zoals je hierna kunt zien.
Formule in schema
Het schema wordt gevuld met een uniforme matrixformule (dat zijn formules die je intypt en dan bevestigt met Ctrl+Shift+Enter; Excel zet er dan accolades omheen {}). In I3 en gekopieerd naar rechts en naar beneden, t/m L8:
Code:
=ALS.FOUT(INDEX(tabWedstrijden[Hulpveld];1/(1/MIN(ALS(tabWedstrijden[Start]<=$H3;ALS(tabWedstrijden[Einde]>$H3;ALS(tabWedstrijden[Baan]=I$2;RIJ(tabWedstrijden[Hulpveld])-RIJ(tabWedstrijden[#Kopteksten])))))));"")
In de basis geeft de formule de waarde van het hulpveld terug van de eerste tabelrij waarvan: start<=tijd in schema, einde > tijd in schema; baan nummer = baan in schema.
In cellen waar geen wedstrijd is op dat tijdstip/die baan, levert de MIN functie 0 op en de uitkomst van de formule zou dan het hulpveld van de eerste wedstrijd zijn.
Dat wil je natuurlijk niet (het resultaat van de formule moet dan leeg zijn). Daarom heb ik de truc toegepast van 1/(1/resultaat van de MIN functie).
Ingeval van nul levert dat een fout op (delen door 0) die ik dan weer afvang met ALS.FOUT zodat een lege string teruggegeven wordt. Bij elk ander getal levert 1/(1/getal) gewoon dat getal weer op. Bijvoorbeeld 1/(1/3) = 1 / 0,333333... = 3.
Verder is de formule zodanig opgebouwd, dat je de tabel met data rustig kunt verslepen naar een andere plek; eventueel zelfs naar een ander tabblad en dan gaat het nog steeds goed.
Voorwaardelijke opmaak
Ik heb voorwaardelijke opmaak toegepast om het effect van samengevoegde cellen te simuleren.
Hiertoe heb ik 2 regels gedefinieerd:
1. Als een veld inhoud heeft dat ongelijk is aan de inhoud van het veld erboven dan is er sprake van een nieuwe wedstrijd.
In dat geval krijgt het veld een rand links, rechts en boven.
2. Als een veld inhoud heeft dat gelijk is aan het veld erboven, dan hoort die regel nog bij diezelfde wedstrijd.
In dat geval wordt de tekst onzichtbaar door aangepast nummerformaat
;;;.
En het veld krijgt een rand links, rechts en onder.
In beide gevallen wordt het veld ook nog opgevuld met wit om de standaardrasterlijnen weg te poetsen.
Personen per kwalificatie aan het werk
Dit staat in de kolommen N:S.
Ik heb maar een lijstje gemaakt mat kwalificaties A t/m F, zodat de kwalificatie niet hard gecodeerd in de formule wordt opgenomen.
Formule in N3, gekopieerd naar rechts en naar beneden t/m S8:
Code:
=AANTALLEN.ALS(tabWedstrijden[Start];"<="&$H3;tabWedstrijden[Einde];">"&$H3;tabWedstrijden[Kwalificatie];N$2)
Zie post #5 voor de gecorrigeerde bijlage.