[Excel] Repeterende handelingen (wat Subs zouden zijn in C)

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Fantomaz
  • Registratie: Januari 2006
  • Laatst online: 26-05 20:55
Office 365/Excel

Ik heb een redelijk complexe vergelijking voor ogen die ik op verschillende plekken in mijn Excel blad moet toepassen.
Andersgezegd: Er komt een waarde in een veld te staan, waar een formule op losgelaten wordt met enkele andere variabelen, waar uiteindelijk een antwoord uit komt.

Kan ik dat op 1 plek doen, zoals in C++ dat kan met een Sub? Of moet ik voor elk veld waarop deze formule moet worden gebruikt opnieuw de hele formule zetten?

MvG
Fantomaz

Alle reacties


Acties:
  • 0 Henk 'm!

  • Kheos
  • Registratie: Juni 2011
  • Laatst online: 00:12

Kheos

FP ProMod
Hangt er van af hoe dikwijls die formule verandert, op hoeveel plaatsen je die gebruikt, hoe complex die is om te genereren, wie die gaat onderhouden, enz
Ja, ofwel plaats je die op x locaties of je werkt met VBA in excel

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Met VBA kan je direct een en ander automatiseren, of custom functions maken om die dan als formule aan te roepen in Excel.

Of misschien voldoet het om zonder VBA alle data (ook) in een tabel te zetten en dan met copypaste de formule doortrekken.

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


Acties:
  • 0 Henk 'm!

  • tritimee
  • Registratie: December 2006
  • Laatst online: 11:41
Je zou eens kunnen kijken naar dit: https://trumpexcel.com/user-defined-function-vba/

dmv VBA een custom functie bouwen

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Fantomaz schreef op woensdag 2 augustus 2023 @ 13:54:
Ik heb een redelijk complexe vergelijking voor ogen die ik op verschillende plekken in mijn Excel blad moet toepassen. Andersgezegd: er komt een waarde in een veld te staan, waar een formule op losgelaten wordt met enkele andere variabelen, waar uiteindelijk een antwoord uit komt.
Als je hier die vergelijking of waarde vermeldt waar een formule op moet worden toegepast, dan valt er wellicht wat meer te zeggen.

Acties:
  • 0 Henk 'm!

  • Fantomaz
  • Registratie: Januari 2006
  • Laatst online: 26-05 20:55
VBA? Waar staat dat voor?
Ik moet zeggen dat ik al eea heb gevonden op youtube qua instructies hoe ik bepaalde vergelijkingen wat korter kan maken.
Maar om een stuk of 30, 40x dezelfde formule in een aantal velden te zetten, leek me wat omslachtig. ;-)

Even een zijdelings vraagje... Ik zie in filmpjes dat men bepaalde velden aanhaalt in een formule, maar dat men daar vóór en áchter een $ plaatst.
Ik heb het idee dat het te maken heeft met het opslaan van de waarde van dat veld, maar het is me niet helemaal duidelijk.

Acties:
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Je begon met C++, dan was denk ik voor allen de aanname dat je het bestaan van Visual Basic for Applications kende, hier VBA voor Excel. Een eenvoudigere taal dan C++.

Maar gebruik van $ is -de- basis van Excel, ik zou dan adviseren eerst wat basic Excel tutorials door te nemen en dan pas na te denken over de concrete casus. Niet specifieke filmpjes maar algemene tutorials.

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


Acties:
  • 0 Henk 'm!

  • Sethro
  • Registratie: Maart 2017
  • Laatst online: 10-04 09:05
Fantomaz schreef op woensdag 2 augustus 2023 @ 20:48:
VBA? Waar staat dat voor?
Ik moet zeggen dat ik al eea heb gevonden op youtube qua instructies hoe ik bepaalde vergelijkingen wat korter kan maken.
Maar om een stuk of 30, 40x dezelfde formule in een aantal velden te zetten, leek me wat omslachtig. ;-)

Even een zijdelings vraagje... Ik zie in filmpjes dat men bepaalde velden aanhaalt in een formule, maar dat men daar vóór en áchter een $ plaatst.
Ik heb het idee dat het te maken heeft met het opslaan van de waarde van dat veld, maar het is me niet helemaal duidelijk.
Die formule kun je toch gewoon kopiëren en/of doortrekken?

Acties:
  • 0 Henk 'm!

  • Fantomaz
  • Registratie: Januari 2006
  • Laatst online: 26-05 20:55
F_J_K schreef op woensdag 2 augustus 2023 @ 21:09:
Maar gebruik van $ is -de- basis van Excel, ik zou dan adviseren eerst wat basic Excel tutorials door te nemen en dan pas na te denken over de concrete casus. Niet specifieke filmpjes maar algemene tutorials.
Nee, ik ga niet hele epistels doornemen voor een klein facet wat ik nodig heb.
Ik had Visual Basic VB genoemd en niet VBA. :-)
Ik ken Visual Basic maar ik had er nooit mee gewerkt.
Sethro schreef op woensdag 2 augustus 2023 @ 21:12:
[...]


Die formule kun je toch gewoon kopiëren en/of doortrekken?
Dat gaat niet helemaal op.
De formule wordt gevult met gegevens die telkens uit een andere bron komen.
Het leek me wel praktisch (en ook overzichtelijker) om deze repeterende formule éénmalig te gebruiken.

Inmiddels heb ik me er aan gewaagd om alles (om te testen) in 1 veld te plaatsen.
Het is een regel geworden die 2,5x de breedte van mijn scherm vult, maar OK hij werkt.
Ik zal echter per situatie deze regel moeten aanpassen aan de verschillende bronnen.
Ik denk daar wel uit te komen.

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Fantomaz schreef op woensdag 2 augustus 2023 @ 22:23:
Ik zal echter per situatie deze regel moeten aanpassen aan de verschillende bronnen.
Ik denk daar wel uit te komen.
Je kunt overwegen die op te splitsen in enkele cellen die gebruik maken van de deelresultaten van de andere. Dat maakt het aanpassen van de parameters misschien makkelijker / minder foutgevoelig.

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


Acties:
  • 0 Henk 'm!

  • Teun_2
  • Registratie: Oktober 2003
  • Laatst online: 02-10 21:19
Als je een nieuwere versie van excel hebt, zou ik je aanraden om naar de lambda functie te kijken. Daar kan je een complexe functie insteken waar je parameters aangeeft. Vervolgens kan je die functie een naam geven en kan je die elders in je werkblad gebruiken.

je kan dan je verschillende bronnen als parameters opnemen en de functie eenvoudig opnieuw gebruiken met de nieuwe bronnen als parameters in je custom functie.

Zie bijvoorbeeld:
https://www.ablebits.com/...tion-write-calculate-use/

Als dat wat overkill is, kan je ook de 'LET' functie gebruiken om een bepaald deel van je formule dat vaker terugkomt slechts één keer te moeten definiëren:
LET function - Microsoft Support.

[ Voor 42% gewijzigd door Teun_2 op 04-08-2023 16:41 ]


Acties:
  • 0 Henk 'm!

  • Fantomaz
  • Registratie: Januari 2006
  • Laatst online: 26-05 20:55
Voorlopig wordt het nog even knippen plakken van de hele formule, waarbij ik hoop dat hij de jusite variabelen (velden) erbij blijft zoeken.

Bedankt voor jullie inzet en meedenken!

Acties:
  • 0 Henk 'm!

  • Kheos
  • Registratie: Juni 2011
  • Laatst online: 00:12

Kheos

FP ProMod
Fantomaz schreef op woensdag 2 augustus 2023 @ 22:23:
[...]
Nee, ik ga niet hele epistels doornemen voor een klein facet wat ik nodig heb.
Niemand heeft het over hele epistels, maar als daar niet mee mee bent ga je echt echt niet ver geraken in excel.
Fantomaz schreef op woensdag 2 augustus 2023 @ 22:23:
Ik had Visual Basic VB genoemd en niet VBA. :-)
Ik ken Visual Basic maar ik had er nooit mee gewerkt.
[...]
Het is nogal lastig om jouw kennis niveau in te schatten: wel C en subs, maar geen VB(A) of basis excel...

[ Voor 8% gewijzigd door Kheos op 04-08-2023 22:18 ]


Acties:
  • 0 Henk 'm!

  • The_Vice
  • Registratie: Augustus 2002
  • Laatst online: 01:21
Je kan het met één sub doen, en die op meerdere plekken iets laten invullen,
zeg rij 1, 12, 13, 15.
Alleen als de variabelen dan niet allemaal relatief meelopen, of uit een vaste referentie komen, zeg bijvoorbeeld range("BTWtarief"), dan wordt het gauw complex.

Maar alles in een custom VBA formule/functie prakken is toch vaak het meest overzichtelijk, zeker als je in een standaard formule nested IFs gaat creëren.
Dan kan je binnen een formule nog wel wat variaties toepassen als iets de ene keer uit bijv kolom A, en de andere keer uit kolom B moet komen.

Maar voor berekeningen probeer ik zelf toch altijd de invoerkant zoveel mogelijk te stroomlijnen. Houdt het ook wel traceerbaar.
Pagina: 1