• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

matrix vermenigvuldigen+VBA

Status
Niet open voor verdere reacties.

nobody11

Gebruiker
Lid geworden
20 dec 2007
Berichten
552
matrixvermenigvuldigen in VBA

in bijlage vinden jullie een voorbeeldje met de input en de (verwachte) output.. helaas werkt mijn code niet perfect, heb al een paar keer geprobeerd het argument te veranderen bij product(fwd()), maar dat lukt niet.. iemand enig idee hoe ik eruit geraakt?

zie bijlage vr een voorbeeld..

Code:
Function test(fwd As Range)

Dim output(1 To 8, 1 To 3)

For i = 1 To 8
    For n = 1 To 3


     output(i, n) = Application.WorksheetFunction.Product(fwd(i))

    Next
Next

test = output

End Function

bedankt!!
 

Bijlagen

Het resultaat van een funktie is een waarde in 1 cel.
Het lijkt of je met de funktie een matrix van 8 *3 in een cel wil proppen.
 
Het resultaat van een funktie is een waarde in 1 cel.
Het lijkt of je met de funktie een matrix van 8 *3 in een cel wil proppen.

neen, ik selecteer eerst de 8*3 matrix.. voer dan de formule in, en vervolgens druk ik op ctrl shift enter.. dus per cel moet hij de formule evalueren zoals het in de "output" staat.. dat zou de oplossingn moeten zijn.. als het een 8*1 matrix is, lukt het mij perfect, maar niet met een 8*3 matrix..


dit is de code vr een 8*1 matrix.. ik selecteer eerst 8 rijen, en dan voer ik de formule in + CTRL SHIFT ENTER, de oplossing komt dan perfect..


Code:
Function test(fwd As Range)

Dim output(1 To 8)

For i = 1 To 8
   
     output(i, 1) = Application.WorksheetFunction.Product(fwd())

    Next
Next

test = output

End Function
 
Misschien dit:
Code:
output(i, n) = Application.WorksheetFunction.Product(fwd(i, n))
 
Misschien dit:
Code:
output(i, n) = Application.WorksheetFunction.Product(fwd(i, n))

ja, heb dit ook al geprobeerd, verschillende combinaties 1,n of i, 1 of i,n , maar lukt ook allemaal niet :(
 
nobody11, Zoals snb al heel terecht aangaf, het lijkt er op alsof je de uitkomst van een matrix in 1 cel wilt proppen! Je hebt een array gedefinieerd (output) die je wilt gaan vullen via de geneste lus. WAT wil je daar dan mee bereiken? Is het soms je bedoeling om die volledige array weg te schrijven naar de sheet? Dan moet je er een sub van maken (en nog wat dingen). Die is daar voor bedoelt, en niet een functie!

Groet, Leo
 
Selecteer cellen I12:K19
Typ =PRODUCT(A$12:A12)
en druk Ctrl-Enter.

Wigi
 
Selecteer cellen I12:K19
Typ =PRODUCT(A$12:A12)
en druk Ctrl-Enter.

Wigi

Wigi, tx!
die had ik al gevonden, maar ik had het graag in een UDF gestoken..

@Ginger, snb

ja, maar ik heb al eerdere UDF's die identiek gevormd zijn, en perfect werken via loops etc.. :-) dus zo raar is het niet , maar idd, ik begrijp jullie opmerking. momenteel ben ik via een omwegje er geraakt,ik doe het per 10x1 matrix van output cellen, waar ook een 10x1 inputcel matrix tegenover staat.. en dan trek ik het door nr rechts.. toch bedankt vr alle reacties!
 
Nobody11, Ik heb het idee dat het verschil tussen een Sub en een Functie niet helemaal duidelijk bij je is. Met een sub laat je code echt dingen 'doen', zoals bijvoorbeeld regels invoegen, de waarde van de ene naar de andere cel kopiëren of in een heel bereik van cellen een formule aanpassen. Een functie gebruik je alleen voor een berekening/vergelijk van waarden. Je verwacht dus een uitkomst van een formule.
Als je dus specifiek naar jouw vraag kijkt, zou je dus via een sub je lus kunnen maken die door alle cellen loopt van het aangegeven bereik. In die lus stuur je een functie aan die voor jou voor die ene specifieke cel je formule uitrekend. De waarde van die functie wordt dan weer teruggegeven aan de sub die je dan vervolgens in bijvoorbeeld een array kan proppen.
De sub heeft dan de mogelijkheid om deze array terug te plaatsen in je sheet...

Maakt dit eea duidelijk?

Groet, Leo
 
Nobody11, Ik heb het idee dat het verschil tussen een Sub en een Functie niet helemaal duidelijk bij je is. Met een sub laat je code echt dingen 'doen', zoals bijvoorbeeld regels invoegen, de waarde van de ene naar de andere cel kopiëren of in een heel bereik van cellen een formule aanpassen. Een functie gebruik je alleen voor een berekening/vergelijk van waarden. Je verwacht dus een uitkomst van een formule.
Als je dus specifiek naar jouw vraag kijkt, zou je dus via een sub je lus kunnen maken die door alle cellen loopt van het aangegeven bereik. In die lus stuur je een functie aan die voor jou voor die ene specifieke cel je formule uitrekend. De waarde van die functie wordt dan weer teruggegeven aan de sub die je dan vervolgens in bijvoorbeeld een array kan proppen.
De sub heeft dan de mogelijkheid om deze array terug te plaatsen in je sheet...

Maakt dit eea duidelijk?

Groet, Leo

ik begripj zeker het verschil tss een sub een functie hoor.. maar mijn punt is de volgende:

ik heb een paar udf's geschreven waarbij je eerst de volledige (!) outputmatrix selecteert, dan de functie invoegt met bijhorende (even grote) inputmatrix, en dan gebeurt er via verschillende lussen bewekringen, en de oplossing komt in alle cellen terecht (maar door de lussen zal de uitkomst telkens anders zijn per cel).. De udf's werken perfect aangezien ik door een vooraanstaande bank de berekeningen heb laten nakijken.. echter voor 1 udf lukte dit niet.. en dat heb ik hier proberen te vragen, maar blijkbaar lukt het echt niet via VBA.. de vorige UDF's die ik heb gemaakt zijn 90% hetzelfde.. dus het is zeker mogelijk ..
 
DIT is dus onmogelijk met een functie!!!

Groet, Leo

als je eerst alle output cellen selecteert,en dan de formule ingeeft,en bevestigt met ctrl shift enter, dan lukt het perfect. toch vr de eerste UDF's die ik heb geschreven..
 
Laatst bewerkt:
idd, dat wil ik ook :-)

Als iets onmogelijk is, en dat wordt je ook gezegd, dan kan je dat best aanvaarden.

Gelieve hier dan ook niet meer achter te vragen, of een moderator zal er wel een slotje op gooien.

Wigi
 
Als iets onmogelijk is, en dat wordt je ook gezegd, dan kan je dat best aanvaarden.

Gelieve hier dan ook niet meer achter te vragen, of een moderator zal er wel een slotje op gooien.

Wigi

ik snap het echt niet.. ik heb al 3 udf's geschreven die identiek doen wat ik wil, op 1 bepaald iets na, maar de idee erachter is identiek.. en die drie werken allemaal.. iets wat niet kan volgens jullie..
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan