Toon posts:

[Excel] Dynamische verwijzing

Pagina: 1
Acties:
  • 2.226 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo!!!

Ik ben bezig om een zeer complexe ecelsheet te bouwen. Deze haalt data op uit andere excel bestanden, gewoon d.m.v. een koppeling. Nu wil ik deze koppeling een stukje dynamscher maken, dus in plaats van dat ik continu de filenaam "week21.xls" moet veranderen in "week22.xls" moet excel de verwijzing openbreken en de 22, die ergens in een cel staat, zelfs ophalen.
Dus in A1 heb ik 21 staan. In probeer dan nu een verwijzing te maken (in bijvoorbeeld B5) naar ='D:\Test\Weken\\[Week21.xls]Sheet1'!$C$10. Alle files beginnen met week, dus de 21 zal excel zelf uit cel A1 moeten halen.
Ik heb al allerlei &-tekens en aanhalingstekens overal geplaatst, maar ik kom er echt niet uit :'( . Mijn excel kennis schiet hier toch echt tekort....

Iemand misschien wel een oplossing?
Alvast bedankt,
Jeff.

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Met een klein beetje VBA is het simpel:
Cells(10, 3).FormulaR1C1 = "='D:\Test\Weken\\[Week" & Cells(1, 1).Value & ".xls]Sheet1'!R1C1"
Waarbij in A1 dan natuurlijk het weeknummer staat.

Anders kom je misschien aan rare constructies als lange if statements (if A1=21 then Week21.xls etc, en dat voor alle weken van het jaar). Of ik vergeet wat

[ Voor 9% gewijzigd door F_J_K op 04-04-2003 12:10 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 15-07 23:09

Skinny

DIRECT!

Als het weeknummer in A1 staat...haalt dit cel A1 op uit, uit die weeksheet.

code:
1
=INDIRECT(TEKST.SAMENVOEGEN("[week";A1;".xls]Blad1!$A$1"))


INDIRECT evalueert de waarde die je meegeeft en probeert daar een verwijzing van de maken.

HTH

SIZE does matter.
"You're go at throttle up!"


  • Coffeemonster
  • Registratie: Juli 2000
  • Laatst online: 13-07 11:08
En voor een absolute verwijzing naar het bestand (dus inclusief pad):
code:
1
=INDIRECT(TEKST.SAMENVOEGEN("'c:\pad\\[week";A1;".xls]Blad1'!$A$1"))

Look for something long enough and you will find it; look for something without understanding, and it will find you.
A normal day at the stock exchange


Verwijderd

Topicstarter
Ik krijg die laatste met geen mogelijkheid aan de praat (krijg gewoon #VERW! in cel te zien, verder weinig actie.... Heb alle mogelijke opties (incl. veranderen verwijzingen) geprobeerd, krijg er echt geen actie mee. Werkt dit bij jullie wel???
Die VBA ga ik nu maar eens proberen.... Alvast bedankt!!!

  • Coffeemonster
  • Registratie: Juli 2000
  • Laatst online: 13-07 11:08
Verwijderd schreef op 04 April 2003 @ 12:30:
Ik krijg die laatste met geen mogelijkheid aan de praat (krijg gewoon #VERW! in cel te zien, verder weinig actie.... Heb alle mogelijke opties (incl. veranderen verwijzingen) geprobeerd, krijg er echt geen actie mee. Werkt dit bij jullie wel???
Die VBA ga ik nu maar eens proberen.... Alvast bedankt!!!
Vreemd :? Bij mij werkt 'ie wel als ik het pad aanpas. Ik maak trouwens uit de eerste post op ('Sheet1') dat je een Engelstalige Excel hebt? Heb je dan ook de formulenamen vertaald en de ; door , vervangen?

En werkt de oplossing van Skinny wel?

Look for something long enough and you will find it; look for something without understanding, and it will find you.
A normal day at the stock exchange


Verwijderd

Topicstarter
Ik word gek..... Ik heb een NL-talige Excel, wel de 97 versie (kan niet anders op dit stomme netwerk....). De statische koppeling ziet er, nadat ik het even iets simpeler heb gemaakt, als volgt uit: ='U:\\[Wk10.xls]Sheet1'!$C$6 . Dit geeft een waarde, (399,0) doet het allemaal prima.
De regel =INDIRECT(TEKST.SAMENVOEGEN("'U:\\[Wk";A1;".xls]Sheet1!$C$6")) , waarbij in A1 het cijfer 10 staat, geeft als uitkomst #VERW! :? .
Van VBA heb ik helaas nog weinig verstand, heb dus eerlijk gezegd redelijk wat moeite om de oplossing van Skinny te implementeren :| .

Het samenvoegen gaat overigens goed, uitkomst is 'U:\\[Wk10.xls]Sheet1'!$C$6.......

[ Voor 11% gewijzigd door Verwijderd op 04-04-2003 12:55 ]


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 15-07 23:09

Skinny

DIRECT!

Hmm.. ik heb het hier dus ook (dat #VERW!)... het blijkt dat je de gewenste "bron" werkmap geopend moet hebben.

Open de werkmap met die formules en daarna Wk10.xls en zie... dan werkt het wel. Even kijken of ik hier iets wijzer over word. Lekker handig dit |:(

SIZE does matter.
"You're go at throttle up!"


Verwijderd

Topicstarter
Je hebt gelijk, dan doettie het wel....... Iemand een oplossing???
Wel raar, de dynamiek is op deze manier toch wel even verdwenen..... Wel vervelend, als je die files alleen maar wil grbruiken voor dynamische koppelingen.... :O

[ Voor 56% gewijzigd door Verwijderd op 04-04-2003 13:22 ]


  • Coffeemonster
  • Registratie: Juli 2000
  • Laatst online: 13-07 11:08
Erg fijn ja :(. Misschien dat je het kan omzeilen door een macro AutoOpen te bakken waarin alle week-documenten als alleen-lezen te openen en te verbergen, en deze weer met een AutoClose-macro weer te sluiten?

Look for something long enough and you will find it; look for something without understanding, and it will find you.
A normal day at the stock exchange


Verwijderd

Topicstarter
Mijn excuses dat ik een topic 9 maanden na opening nog een keer omhoogschop, maar ik zit nog steeds (.....) met dit probleem. VBA is niet helemaal een oplossing, lijkt me moeilijk omdat het om ongeveer 4000 cellen gaat.....
Misschien heeft iemand ondertussen al een oplossing voor dergelijke problemen... ??
Onderstaande oplossing is niet handig omdat het om files van ongeveer 4 MB het stuk gaat.... (52 weken openen duurt dan een beetje lang.....).
Coffeemonster schreef op 04 april 2003 @ 14:15:
Erg fijn ja :(. Misschien dat je het kan omzeilen door een macro AutoOpen te bakken waarin alle week-documenten als alleen-lezen te openen en te verbergen, en deze weer met een AutoClose-macro weer te sluiten?

Verwijderd

via INDIRECT krijg ik e.e.a. inderdaad ook niet aan de praat, maar door het bestand direct te koppelen:
='<padnaam>\\[<bestand>]<Werkblad>'!<cel>
lukt het wel.

Ik zat met hetzelfde probleem en heb het volgende lapmiddel gebruikt:
1) maak de namen aan als textveld:
="'<padnaam>\\[<begin_bestandsnaam>" & A1 & "<.xls>]<Werkblad>'!<cel>"

2) kopieer de WAARDEN van de texvelden naar een volgende kolom (plakken speciaal)

3) vervang '<padnaam> door ='<padnaam> en klaar is kees. (je krijgt wel veel foutmeldingen als de bestanden niet bestaan!)

Overigens maak ik gebruik van Excel2000, dus ik weet niet zeker of het ook bij jou zo werkt. iig succes!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

indirect werkt niet, omdat dat een formule is die automatisch altijd herrekend wordt; en excel kan nu eenmaal niet in gesloten bestanden lezen...

Ik zou het oplossen via koppelingsbeheer, maar daarvoor moet je even uitleggen hoeveel bestanden er betrokken zijn bij die verwijzingen, en hoe de verwijzingen elkaar opvolgen. Ik bedoel het volgende: verwijst je blad naar alle 52 weken of verwijst het iedere keer naar één of enkele bestanden in de vorm van weekxx.xls en wil je dat laatste automatisch aangepast hebben?

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Pagina: 1