Ga naar inhoud

Aanbevolen berichten

Geplaatst:

Hallo,

 

Ik probeer in een Excel bestand gegevens uit een ander Excel bestand op te halen.

Op zich weet ik hoe dit moet en lukt dit. Maar nu was het idee / noodzaak om de formule die ik gebruik aan te passen zodat door een paar gegevens in cellen te wijzigen, ook de formules met de linken in in het werkblad zich automatisch zouden aanpassen en de gegevens zouden ophalen uit het gewenste bestand.

 

Ik zal het even verduidelijken :

 

Huidige situatie :

 

- Bestand_1.Werkblad_1 : bevat een tabel met gegevens : Kolom1 (=namen, dezelfde naam kan in meerdere rijen voorkomen en gegevens hebben in Kolom2) ; Kolom2 (=cijfers)

                                        de range van de namen is van (A)2 tot (A)2000, die van de cijfers ook (B2 tot B2000) ...

 

- Bestand_2.Werkblad_1 : bevat een tabel met in Kolom1 namen (die overeen zouden komen, maar nu alfabetisch gerangschikt en slechts één maal ) met de namen uit Bestand_1.Werkblad_1.Kolom1

 

 

Nu haal ik met de formule SOM.ALS gegevens op uit Bestand_2 (deze formule bevindt zich in Bestand_2.Werkblad_2.KolomB :

 

                     =SOM.ALS([Bestand_1.xls]Werkblad_1!$A$2:$A$2000;TEKST($A2;"#############");[Bestand_1.xls]Werkblad_1!$B$2:$B$2000)

 

Dus een voorbeeld, (ik laat 'Werkblad_1' hier even weg omdat beide bestanden toch slechts 1 werkblad hebben, in de formule moet ik die wel zetten natuurlijk)

 

Bestand 1 :

 

Rij      Naam     Cijfer 

2         Jan             5

3         Kris           13

4         Tom            1

5         Jan             7

6         Tom            8

7         Tom            1

8         Kris             5

9         Jan              5

10       Tom            9

 

Wanneer in Bestand_2 in de eerste kolom de naam "Jan" staat, gaat de formule in Bestand_1.Werkblad_1 zoeken in de eerste kolom naar dezelfde naam (Jan) en de waarden in kolom2 die dan telkens gevonden worden, optellen bij elkaar. In bovenstaand voorbeeld resulteert dat in de waarde 17.

 

Dat loopt allemaal goed.  

 

Nu wil ik de formule meer "dynamisch" of "aanpasbaar" maken door een paar cellen te hebben (in Bestand_2) die aanpasbaar zijn en daardoor de formule naar een ander bestand kunnen laten wijzen.

 

Formule :      =SOM.ALS([Bestand_1.xls]Werkblad_1!$A$2:$A$2000;TEKST($A2;"#############");[Bestand_1.xls]Werkblad_1!$B$2:$B$2000)

Cellen :      D1    met waarde      C:\Gegevens\Jaar_

                 D2    met waarde      2019

                 D3    met waarde      Bestand_1.xls

                 D4    met waarde      Werkblad_1

                

                 D6    samenvoeging van bovenstaande cellen met tekst.samenvoegen en hierin het toevoegen van de tekens die normaal gezien bij een verwijzing horen  - bijvoorbeeld  [ en !   - etc

                         alsook de range geeft dus volgende formule   =TEKST.SAMENV(D1;D2;"\";"[";D3;"]";D4;"!";"$A$2:$A$2000) en dit geeft dus eigenlijk als resultaat

                        
                         C:\Gegevens\Jaar_2019\[Bestand_1.xls]Werkblad_1!$A$2:$A$2000

 

de formule wordt dan :      =SOM.ALS(D6;TEKST($A2;"#############");[Bestand_1.xls]Werkblad_1!$B$2:$B$2000)

 

Het is ook de bedoeling van hetzelfde te doen voor cel D7 maar met een andere range ($B$2:$B$2000 = de range van de cijfers) zodat er uiteindelijk zou komen te staan :

 

                                        =SOM.ALS(D6;TEKST($A2;"#############");D7) en bij uitbreiding zowel de cellen D6 als D7 een naamsverwijzing geven, maar in eerste instantie hoop ik het zo al te doen werken 😉

 

Door middel van bijvoorbeeld de cellen D2 naar 2020 en D3 naar Bestand_x.xls aan te passen zou de formule dan ipv naar  C:\Gegevens\Jaar_2019\[Bestand_1.xls]Werkblad_1!$A$2:$A$2000

naar C:\Gegevens\Jaar_2020\[Bestand_x.xls]Werkblad_1!$A$2:$A$2000 gaan kijken om gegevens op te halen.

 

Ik heb al verschillende zaken geprobeerd en notaties proberen aanpassen om deze formule te doen werken maar ik kom er niet uit ...

Ik heb ook al even getest met de HYPERLINK functie en daar werkt het wel !   Daar zet ik bijvoorbeeld de formule :  HYPERLINK(D8) waarbij in cel D8 volgende formule staat :

 

=TEKST.SAMENV(D1;D2;"\";D3;"#";D4;"!$A$2")       en dit geeft de waarde       C:\Gegevens\Jaar_2019\Bestand_1.xls#Werkblad_1!$A$2:$A$2000 

 

Wanneer er op de cel met de formule HYPERLINK geklikt wordt, opent dit effectief het juiste bestand.

Gezien de notatie in de functie HYPERLINK verschilt ( o.a. gebruik van het # - teken) van de notatie met mijn andere formule vermoed ik dat het aan de notatie ergens zal liggen dat mijn SOM.ALS formule niet werkt wanneer ik ze dynamisch / makkelijk aanpasbaar wil maken.

 

Iemand die ziet waar het fout loopt of een oplossing weet ?

 

Alvast hééééél erg bedankt (ben hier "nog maar" een weekje mee aan het sukkelen 😉 )

 

 

 




 

 

 

 

 

 

 

Geplaatst:

OK, ik weet niet of het veel gaat helpen maar hier voorbeeldbestanden.

Op mijn eigen PC heb ik deze gezet in

 

C:\Tijdelijk\Rapportage\Jaar_2019\

 

en is het Bestand1 het gegevensbestand (.xls)

het Bestand_2 is het bestand met de totalen (som.als) en verwijzing in de formule (.xlsx)

 

In Bestand_2 heb ik in de D kolom de "te wijzigen" gegevens gezet (bestand, locatie, jaar, ...) waardoor de formule in een ander bestand zou moeten gaan kijken wanneer dit gewijzigd wordt. Natuurlijk kunnen deze gegevens ook in een andere kolom of zelfs op een apart tabblad gezet worden, maar gezien ik in mijn tekst van kolom D sprak ...

 

Alvast bedankt !

Bestand_1.xls Bestand_2.xlsx

Geplaatst:

Wat jij wil bereiken is mogelijk door gebruik te maken van de functie Indirect.

 

Het nadeel is echter dat het bronbestand geopend moet zijn anders krijg je een foutmelding.

 

In de morefunc addin zit een versie van Indirect die werkt met gesloten bestanden maar de addin werkt dan weer niet op 64-bit systemen.

  • 4 weken later...
×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.