[EXCEL2010]cellen selecteren afhankelijk van codelijst

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • fabstar81
  • Registratie: Maart 2003
  • Laatst online: 13-07 17:56
hoi tweakers,

ik ben een overzicht aan het maken van wat kosten. nu heb ik voor elke soort kosten een overzicht op een apart werkblad gemaakt.

ik wil dat op nog een apart werkblad -bijvoorbeeld "totaal"- middels een drop down menu kosten opgehaald worden uit een werkblad die uit de drop down komt.

Stel ik wil een totaal overzicht maken van kosten. middels een codelijst maak ik een selectie van kosten uit een specifiek werkblad die ik graag in het overzicht wil zien. de werkbladen zijn allemaal identiek, behalve de bedragen dan. hoe doe ik dit?

ik heb het volgende geprobeerd: middels concatenate exact de verwijzing in tekst kunnen reproduceren zoals je normaal een cel uit een ander werkblad selecteert ("=werkblad!B3", werkblad verschilt dan afhankelijk van de keuze uit de drop down lijst) maar excel ziet dit dan vervolgens als tekst en maakt er geen verwijzing van.

verder heb ik geen idee hoe dit op te lossen? iemand tips?

făbŞŤĄŘ - Mijn PC


Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Nu online

Reptile209

- gers -

Je bent op de goede weg. Combineer je tekst ("werkblad!B3") eens met de functie INDIRECT() en dan kom je er wel!

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

  • fabstar81
  • Registratie: Maart 2003
  • Laatst online: 13-07 17:56
ik heb nu dan

=INDIRECT(CONCATENATE("=";"'";D3;"'";"!";B3))

waar D3 de keuze in het drop down menu zal zijn, en B3 de cel in dat betreffende werkblad.

ik krijg nu een #REF fout. zonder de INDIRECT krijg ik netjes ='Reaal'!B3 waar B3 dus netjes het bedrag invult, maar helaas van het huidige werkblad. ik krijg dus: ='Reaal'!13,45 bijvoorbeeld.

făbŞŤĄŘ - Mijn PC


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Je bent er bijna, zie F1 voor wat indirect aan input verwacht:
=INDIRECT($A$2) De waarde van de verwijzing in cel A2 (1,333)
Ergo: vergeet de = :)
=INDIRECT(TEKST.SAMENVOEGEN(D3&"!B3")) werkt hier zoals je het, volgens mij, bedoelt: als in D3 "Blad2" staat wordt de inhoud van cel Blad2!B3 ingevuld.

Natuurlijk kan je B3 ook nog afhankelijk maken van de rij waar je op dat moment staat, met KOLOM() resp. RIJ() voor de huidige kolom resp. rij waar de formule in staat. Aanpassen naar wens met offsets. Als ik het goed heb is dat ROW() in het engels.

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


Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Nu online

Reptile209

- gers -

Ik volg je niet helemaal, misschien helpt dit.
Met
code:
1
=INDIRECT(CONCATENATE("=";"'";D3;"'";"!";B3))
plak je dus achtereenvolgens een aantal delen aan elkaar:
code:
1
2
3
4
5
6
=
'
<inhoud van D3: Reaal>
'
!
<inhoud van B3: 13,45>

Samen vormt dat ='Reaal'!13,45 en dat is geen geldige celverwijzing. Wat je - denk ik - bedoelt te doen is de letterlijke tekst "B3" in je verwijzing op te nemen. Dan moet je in de concatenate() die B3 ook tussen aanhalingstekens zetten.
code:
1
=INDIRECT(CONCATENATE("=";"'";D3;"'";"!";"B3"))

Probeer dit concept goed door te laten dringen, anders is INDIRECT() een hel voor je. De beste check is altijd om de formule binnen INDIRECT() - in dit geval CONCATENATE("=";"'";D3;"'";"!";"B3") - even los in een cel te gooien. De referentie die hij opbouwt moet *exact* gelijk zijn aan wat je krijgt als je handmatig naar de juiste cel verwijst. Pas dan gooi je je formule in de INDIRECT en kan je door.

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

  • fabstar81
  • Registratie: Maart 2003
  • Laatst online: 13-07 17:56
F_J_K schreef op maandag 08 februari 2010 @ 11:50:
Je bent er bijna, zie F1 voor wat indirect aan input verwacht:
[...]

Ergo: vergeet de = :)
=INDIRECT(TEKST.SAMENVOEGEN(D3&"!B3")) werkt hier zoals je het, volgens mij, bedoelt: als in D3 "Blad2" staat wordt de inhoud van cel Blad2!B3 ingevuld.

Natuurlijk kan je B3 ook nog afhankelijk maken van de rij waar je op dat moment staat, met KOLOM() resp. RIJ() voor de huidige kolom resp. rij waar de formule in staat. Aanpassen naar wens met offsets. Als ik het goed heb is dat ROW() in het engels.
yessssssssss, het werkt! moest wel wat aanhalingstekens nog erbij zetten voordat ie het deed! :) hij is nu als volgt:

code:
1
=INDIRECT(CONCATENATE("'";D3;"'";"!B3"))


Verschilde niet echt veel van wat ik zelf had. maar toch nét iets anders :)

[ Voor 9% gewijzigd door fabstar81 op 08-02-2010 12:42 ]

făbŞŤĄŘ - Mijn PC


Acties:
  • 0 Henk 'm!

  • fabstar81
  • Registratie: Maart 2003
  • Laatst online: 13-07 17:56
Reptile209 schreef op maandag 08 februari 2010 @ 11:56:
Ik volg je niet helemaal, misschien helpt dit.
Met
code:
1
=INDIRECT(CONCATENATE("=";"'";D3;"'";"!";B3))
plak je dus achtereenvolgens een aantal delen aan elkaar:
code:
1
2
3
4
5
6
=
'
<inhoud van D3: Reaal>
'
!
<inhoud van B3: 13,45>

Samen vormt dat ='Reaal'!13,45 en dat is geen geldige celverwijzing. Wat je - denk ik - bedoelt te doen is de letterlijke tekst "B3" in je verwijzing op te nemen. Dan moet je in de concatenate() die B3 ook tussen aanhalingstekens zetten.
code:
1
=INDIRECT(CONCATENATE("=";"'";D3;"'";"!";"B3"))

Probeer dit concept goed door te laten dringen, anders is INDIRECT() een hel voor je. De beste check is altijd om de formule binnen INDIRECT() - in dit geval CONCATENATE("=";"'";D3;"'";"!";"B3") - even los in een cel te gooien. De referentie die hij opbouwt moet *exact* gelijk zijn aan wat je krijgt als je handmatig naar de juiste cel verwijst. Pas dan gooi je je formule in de INDIRECT en kan je door.
het klopt wat je zegt. ik bedoelde inderdaad letterlijk de tekst weer te geven zodat dat een celverwijzing genereerde. ik had echter het resultaat gepost, waardoor het leek alsof ik een bedrag in een cel verwees zoals je terecht opmerkte.

wel vaag, ik had al met indirect zitten spelen, maar helaas niet het juiste resultaat eruit gekregen. nu wel!

făbŞŤĄŘ - Mijn PC


Acties:
  • 0 Henk 'm!

  • fabstar81
  • Registratie: Maart 2003
  • Laatst online: 13-07 17:56
die kolom, rij begrijp ik niet helemaal. ik zie nu inderdaad dat de !B3 in alle cellen wordt gekopieerd. die moet dus inderdaad relatief worden.

maar hoe?! :) je krijgt nl een getal terug en geen letter voor de kolom.

[ Voor 15% gewijzigd door fabstar81 op 08-02-2010 12:55 ]

făbŞŤĄŘ - Mijn PC


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Je kunt =ADRES() gebruiken: =ADRES(2;2) is $B$2, =ADRES(2;2;4) is B2.

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


Acties:
  • 0 Henk 'm!

  • fabstar81
  • Registratie: Maart 2003
  • Laatst online: 13-07 17:56
totally awesome to the max!
bedankt iedereen :)

het is (zij het wat uitgebreid) dit geworden:

=IF(AND(B3=0;INDIRECT(CONCATENATE("'";D3;"'";"!D";ROW()))="");"Er zijn geen prijzen en geen extra informatie beschikbaar";IF(INDIRECT(CONCATENATE("'";D3;"'";"!D";ROW()))="";"Er is geen extra informatie beschikbaar";INDIRECT(CONCATENATE("'";D3;"'";"!D";ROW()))))

[ Voor 80% gewijzigd door fabstar81 op 08-02-2010 13:55 ]

făbŞŤĄŘ - Mijn PC

Pagina: 1