Toon posts:

[Excel 2007]Syntax voor het "splitsen" van cell referenties

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

Verwijderd

Topicstarter
Ik zit al enkele dagen met hetzelfde probleem maar ik kan, ongetwijfeld wegens verkeerde trefwoorden, het juiste antwoord niet vinden:

Stel ik heb in Sheet1 een kolom A met een reeks getallen en een kolom B met een reeks getallen.
In Sheet2 wil ik de getallen in kolom A gebruiken om te bepalen welke getallen in B getoond moeten worden: stel in cell A1 staat het getal 10 en in cell B11 staat het getal 5, dan wil ik dat cell A1 in Sheet2 het getal 5 weergeeft omdat A1 hiernaar verwijst door middel van =Sheet1!R[A1+1]C2, of iets dergelijks. Echter, deze syntax is onjuist. Sorteren mag niet.

Wat is hiervoor dan wel de juiste wijze?

  • sewer
  • Registratie: November 2000
  • Nu online
Even een disclaimer vooraf, ik werk bijna nooit in Excel en ken het pakket niet zo goed.

Eerlijk gezegd denk ik niet dat niet kan met de standaard commando's in Excel, net zoals je in een hedendaagse programmeertaal ook niet dynamisch variabelenamen kan opbouwen en daarna gebruiken (itt met basic vroeger).

Echter kan je het volgens mij wel gewoon in vba oplossen met de evaluate functie. Probeer eens iets als: Evaluate("Sheet1!B" + cstr(A1+1)) ofzo.

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 19:03

Dido

heforshe

Het woord dat je zoekt heet OFFSET

in Sheet2!A1 iets als
code:
1
=OFFSET(Sheet1!$B$1,Sheet1!A1,0)

zou in de buurt moeten komen.

Dit is een Engelstalige Excel 2003, ik verwcaht dat 2007 niet veel anders zal reageren, maar de Nederlandse vertaling mag je zelf opzoeken als dat nodig is.

Wat betekent mijn avatar?


  • sewer
  • Registratie: November 2000
  • Nu online
Dat is in het nederlands: =VERSCHUIVING(Sheet1!$B$1,Sheet1!A1,0) toch wel handig, die meertalige excel 2007, vooral voor de commando's

Heb het even met VBA getest, dat werkt iig wel: bijv. msgbox Evaluate("B" + str(Evaluate("A1")) geeft de waarde van B10 als A1 = 10.

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 19:03

Dido

heforshe

In VBa zijn er waarschijnlijk 258328 manieren om te bereiken wat de TS wil, hij zou ook kunnen overwegen een mainframe aan te schaffen en daarop een applicatie te laten ontwikkelen om het te doen.

In dit geval zijn beiden echter een beetje overkill ;)
Je doet alsof OFFSET niet doet wat de TS wil, maar voor zover ik uit zijn vraag opmaak is het exact het antwoord op zijn vraag :)

Overigens doet je VBa dat niet precies, want hij wil niet de waarde uit B10, maar uit B11 hebben als er 10 in A1 staat ;)

Wat betekent mijn avatar?


  • sewer
  • Registratie: November 2000
  • Nu online
De mate van overkill en de vergelijking met een applicatie/mainframe zie ik niet zo. Het gaat volgens mij echt om een scriptje van een regel ofzo, i.p.v. "A1" doe je "A" + Activecell.Row, en je telt er in die str() functie inderdaad eentje bij op. Maar ik ga ervan uit dat de TS het idee snapt en het zelf kan uitwerken ;)

Maar als de interne functie offset hetzelfde doet heeft dat natuurlijk de voorkeur. Ik probeerde nergens te impliceren dat dat niet werkt, alleen dat datgene wat ik dacht wel werkt (ik heb dus ook alleen dat getest) :)

edit: heb die 'verschuiving' ook maar even uitgeprobeerd, die doet het idd ook goed.

[ Voor 16% gewijzigd door sewer op 16-11-2007 23:32 ]


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Afhankelijk van de situatie zou ik eerder de voorkeur geven aan index() of indirect() ipv verschuiving(). Die laatste gebruik je eigenlijk alleen als een positie relatief wordt bepaald tov een andere cel en dat lijkt hier niet het geval?

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

Pagina: 1