• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Matrixformule: door de bomen het bos niet meer zien....

Status
Niet open voor verdere reacties.

Figaro75

Gebruiker
Lid geworden
12 dec 2011
Berichten
91
Ik ben bezig met een overzicht te maken uit een ander blad.

Zal proberen het probleem duidelijk te omschrijven met het doel wat ik wil. Ik denk dat de oplossing een matrixformule is maar ik ben al een middag aan het lezen en ik weet niet hoe ik deze formule moet opzetten. Ik heb nog nooit eerder een matrixformule geschreven...:confused:

Blad 1:

Dit bestaat uit een Groep met een variabel aantal onderdelen met momenteel een maximum van 3 (in het voorbeeld dan....)
De onderdelen worden automatisch opvolgend genummerd beginnend bij 1.
Stel dat onderdeel 2 van 3 vervalt en de teksten worden daar gewist dan verandert 3 automatisch in 2 en omgekeerd.
In het 'echte' bestand komen ook meerdere groepen (benoemde bereiken).

Elk onderdeel bestaat uit 1 of meerdere taken. Deze taken worden opvolgend genummerd startend bij 1 en afhankelijk van of hier kosten (€) aan hangen. Als er wel een taak is (omschrijving) maar geen kosten dan wordt deze niet genummerd. Stel dat hij opeens wel kosten krijgt dan hernummerd de lijst. Dit werkt allemaal....:thumb:

Alle onderdelen en taken bevinden zich binnen een benoemd bereik (in het voorbeeld "TEST").

Op Blad 2:
Hier wil ik een overzicht maken welke 'gevuld' wordt door Blad 1.
Omdat ik hier geen lege regels wil tussen de onderdelen maak ik gebruik van verticaal zoeken in blad 1 (anders zou ik gewoon met 'vaste' koppelingen kunnen werken).
Ik zoek bv naar nummer 1 en vervolgens worden alle gegevens uit die rij opgehaald. Als er geen gegevens staan wordt er ook niets getoond. Stel dat ik onderdeel 1, 2 en 3 heb dan komen deze netjes op het overzicht. Als ik nu 2 'leeg' maak schuift in het overzicht ook de gegevens uit 3 (wat dus 2 wordt) netjes onder 1 (Binnen een vast overzicht wat onderdeelrijen betreft).

Voor een verzochte uitbreiding willen ze nu in het overzicht ook de gegevens van de taken kunnen zien.
Hiervoor zal er echter op basis van kolom 1 een selectie moeten worden gemaakt en blijft de voorwaarde dat lege, ongenummerde taken niet meekomen. Ook kan de gebruiker taken zelf toevoegen (regels) binnen een onderdeel dus ik weet van te voren niet de grote van een onderdeel.

In het overzicht moet dus op basis van het onderdeelnummer en de aanwezigheid van een taaknummer dat taaknummer worden getoond. Vervolgens moet de bijbehorende taakomschrijving en kosten worden getoond. D.m.v. een macro zal hier t.z.t. dan ook taakregels moeten worden toegevoegd om het aantal taken van Blad 1 te kunnen volgen, maar dat terzijde.

In het voorbeeldbestand heb ik het 'overzicht' even op blad 1 laten staan. D.m.v. het benoemde bereik lukt het mij met zoeken al wel de juiste omschrijving bij het taaknummer te krijgen maar deze kijkt niet naar het onderdeelnummer.
In de formule kan ik niet gebruik maken van kolomverwijzingen (b.v. C14:C18) want ik weet van te voren niet wat het bereik zal zijn. Maar met VERSCHUIVING lukt het me wel om in de juiste kolom te zoeken.

Dus na een lang verhaal.....:

Wie kan mij op weg helpen met een matrixformule die onder een genummerd onderdeel eerst het (variabele) taaknummer toont op basis van het bijbehorende (variabele) onderdeelnummer.
En daarna de juiste omschrijving (en prijs) op basis van onderdeelnummer en taaknummer.
Het toevoegen van (nog) een hulpkolom waar ik kolom 1 en 2 samenvoeg wil ik voorkomen, daar staan er al genoeg van verborgen in het totale bestand.Bekijk bijlage Map1.xlsx

Ik heb al elk taaknummer voorzien van een cel waarin ook het onderdeelnummer staat (als dat makkelijker werkt).
Als het zonder dit (tijdelijke) onderdeelnummer kan zou dat helemaal geweldig zijn.
Anders wordt dit extra onderdeelnummer in het echte bestand gewoon wit gezet.
 
Laatst bewerkt:
Matrixformule aan de praat gekregen

Ik heb de matrixformule nu zelf aan de praat gekregen maar is wel wat gevoelig voor foutieve invoer (typefouten van mijn kant uit).

Zijn mijn formules zo goed (genoeg) of kunnen ze nog verbeterd worden?

Bekijk bijlage Map1.xlsx
 
Ik krijg toch nog een "0" en dus bij de volgende cel een #n/b als er maar 1 of geen taken binnen een onderdeel zitten.
Zag dat ik bij de ISFOUT de controle mis of er een waarde uit komt.
Na de INDEX heb ik dus ;ONWAAR))=WAAR toegevoegd maar dan laat hij helemaal niets meer zien (als er weer een 2e taak bij komt).

Waar gaat dit fout?

Code:
=ALS($M$22="";"";ALS(ISFOUT(INDEX(TEST;VERGELIJKEN($M$22&ALS(ISFOUT(VERT.ZOEKEN(N23+1;VERSCHUIVING(TEST;0;1);1;ONWAAR))=WAAR;"";VERT.ZOEKEN(N23+1;VERSCHUIVING(TEST;0;1);1;ONWAAR));VERSCHUIVING(TEST;0;0;AANTAL.ALS(TEST;""&"*");1)&VERSCHUIVING(TEST;0;1;AANTAL.ALS(TEST;""&"*");1);0);2;[B][COLOR="#FF0000"]ONWAAR))=WAAR[/COLOR][/B];"";(INDEX(TEST;VERGELIJKEN($M$22&ALS(ISFOUT(VERT.ZOEKEN(N23+1;VERSCHUIVING(TEST;0;1);1;ONWAAR))=WAAR;"";VERT.ZOEKEN(N23+1;VERSCHUIVING(TEST;0;1);1;ONWAAR));VERSCHUIVING(TEST;0;0;AANTAL.ALS(TEST;""&"*");1)&VERSCHUIVING(TEST;0;1;AANTAL.ALS(TEST;""&"*");1);0);2;[B][COLOR="#FF0000"]ONWAAR[/COLOR][/B]))))

Als ik in de cel na het onderdeelnummer een 0 plaats werkt het wel (Zonder de check toe te voegen). Dus er moet ergens een controle worden uitgevoerd dat de combinatie van wel een onderdeelnummer maar geen taaknummer geen 0 waarde creëert.
 
Laatst bewerkt:
Ik heb om eerlijk te zijn niet alle details begrepen maar krijg een beetje de indruk dat je met hele complexe formules een simpele draaitabel wil nabootsen. Als je je gegevens die nogal rommelig op je tabblad staan wat netter in een overzichtelijk (tussen)tabelletje kan plaatsen (nummer, taak, testtaak, uren, bedragen etc als kolomkopppen en de bijbehorende gegevens eronder) kun je er m.i eenvoudig een draaitabel op los laten en ontstaat het overzicht wat je wil hebben vanzelf.
 
@Arrie23
Ik ben er een tijdje niet meer mee bezig geweest maar van draaitabellen heb ik alleen nog maar de term voorbij horen komen. Daar heb ik nog nooit iets mee gedaan.
Waar ik naar zoek is een methode om gegevens vanuit het ene werkblad in een ander werkblad te tonen zonder plakken koppeling omdat ik van te voren niet weet hoe groot het gegevensblad wordt.

Het blad waar het op getoond wordt heeft wel een vaste opmaak maar hier moeten ook waarden kunnen worden ingevuld naast de gegevens die uit het andere blad worden opgehaald.

Het echte bestand is veel uitgebreider en de 3 onderdelen zijn hier een uitsnede van.
Deze zijn niet 'netter' in een tabelvorm te zetten aangezien ik van te voren niet weet hoeveel onderdelen en/of taken er benodigd zijn.
In beide bladen worden ook administratieve handelingen verricht zoals nacalculatie en facturatie, termijnen en wat niet meer.
 
Bekijk bijlage Map2.xlsx

In het bijgevoegde bestand creëert de matrix formule een nulwaarde (in voorbeeldbestand in cel N33) als er in het onderdeel geen uren voorkomen.
Door de lengte van de formule kan ik niet precies achterhalen waarom dit gebeurt.
Ook omdat als ik bij C14 een 0 invul dit niet gebeurt.....

Dus als iemand mij kan helpen waar en hoe ik de formule moet aanpassen dan ben ik geholpen :)

Het makkelijkste zou gewoon zijn om de cellen simpelweg te koppelen en ervoor te zorgen dat de range altijd groot genoeg is.
Maar ik vind het juist de uitdaging om het zo dynamisch mogelijk te hebben....
Dit voorkomt ook verbroken koppelingen mocht iemand 'per ongeluk' en rij verwijderen of het ontbreken van gegevens omdat iemand zomaar ergens een rij toevoegt.
 
Beste Figaro, gezien de hoeveelheid views in relatie tot de hoeveelheid reacties ben ik bang dat het voor de meesten (inclusief mijzelf) niet helemaal duidelijk is wat je nu precies wilt en wat het exacte probleem nu precies is.
De ene keer heb je het over een formule vanuit het ene werkblad (tabblad 2?) die gegevens uit het andere tabblad (tabblad 1?) moet ophalen, een andere keer verwijs je volgens mij naar niet werkende formules op tabblad 1.
Wat is het verschil tussen tabblad 2 en de tabel rechtsonder op tabblad 1?
Beide tabbladen staan boordevol complexe (en bovendien verschillende) formules waarvan onduidelijk is wat ze precies doen en waarom ze zo complex moeten zijn.
Om een goed antwoord te krijgen is het denk ik zaak om een duidelijker voorbeeld op te stellen en kort en bondig aan te geven wat je wil en waar nu precies het probleem zit,
 
Maar i.p.v. een 0 wil ik graag een lege cel, dus ""
Als ik bij C14 zelf een 0 invul krijg ik bij N31, N32 en N33 wel gewoon ""
 
De formule die nu in N32 staat:
Code:
=IF($M$30="";"";IF(ISERROR(INDEX(TEST;MATCH($M$30&IF(ISERROR([COLOR="#FF0000"]VLOOKUP(N31+1[/COLOR];OFFSET(TEST;0;1);1;FALSE))=TRUE;"";VLOOKUP(N31+1;OFFSET(TEST;0;1);1;FALSE));OFFSET(TEST;0;0;COUNTIF(TEST;""&"*");1)&OFFSET(TEST;0;1;COUNTIF(TEST;""&"*");1);0);2));"";(INDEX(TEST;MATCH($M$30&IF(ISERROR(VLOOKUP(N31+1;OFFSET(TEST;0;1);1;FALSE))=TRUE;"";VLOOKUP(N31+1;OFFSET(TEST;0;1);1;FALSE));OFFSET(TEST;0;0;COUNTIF(TEST;""&"*");1)&OFFSET(TEST;0;1;COUNTIF(TEST;""&"*");1);0);2))))
Hierbij is het gedeelte "N31+1" van belang. Vermits N31 evalueert tot een lege string ("") mag je de optelling niet uitvoeren met het plus-teken (+), gebruik in de plaats daarvan de functie SOM.
Dus "SOM(N31;1)" in plaats van "N31+1" overal in de formule waar dit voorkomt.
 
@WHER,

Ik ga het vanavond proberen, bedankt voor je input (jij ook arrie23).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan