Discussione:
moltiplicare due array via codice VBA
(troppo vecchio per rispondere)
Montalbano Sono
2010-07-16 08:22:54 UTC
Permalink
Buongiorno

sapreste dirmi se c'è un modo per ottenere la moltiplicazione di due
array tra di loro via VBA in modo conciso (cioè senza cicli)?

direttamente sul sheet basta scrivere in forma matriciale
A1:A5*B1:B5

in VBA un approccio tipo

range("A1:A5") * range ("B1:B5")

non pare funzionare...

grazie a tutti
plinius
2010-07-16 08:58:13 UTC
Permalink
Post by Montalbano Sono
Buongiorno
sapreste dirmi se c'è un modo per ottenere la moltiplicazione di due array
tra di loro via VBA in modo conciso (cioè senza cicli)?
direttamente sul sheet basta scrivere in forma matriciale
A1:A5*B1:B5
in VBA un approccio tipo
range("A1:A5") * range ("B1:B5")
non pare funzionare...
grazie a tutti
Infatti no!
Quello che pensa excel a fare quando ti servi delle sue funzioni e dei suoi
operatori, in VBA devi farlo tu...
r
2010-07-16 10:02:30 UTC
Permalink
On 16 Lug, 10:22, Montalbano Sono
Post by Montalbano Sono
Buongiorno
sapreste dirmi se c'è un modo per ottenere la moltiplicazione di due
array tra di loro via VBA in modo conciso (cioè senza cicli)?
direttamente sul sheet basta scrivere in forma matriciale
A1:A5*B1:B5
in VBA un approccio tipo
range("A1:A5") * range ("B1:B5")
non pare funzionare...
grazie a tutti
la moltiplicazione tra matrici è altra cosa
http://it.wikipedia.org/wiki/Moltiplicazione_di_matrici

quello tra due range è una operazione che somiglia più a un prodotto
tra una matrice e uno scalare.

argomento comunque ineterssante ... Montalbano sei stimolante :-)
ciao
r
Montalbano Sono
2010-07-16 11:44:29 UTC
Permalink
Post by r
la moltiplicazione tra matrici è altra cosa
http://it.wikipedia.org/wiki/Moltiplicazione_di_matrici
quello tra due range è una operazione che somiglia più a un prodotto
tra una matrice e uno scalare.
argomento comunque ineterssante ... Montalbano sei stimolante :-)
ciao
r
Ti ringrazio per il gradito complimento.. mi lusinghi!

Conosco l'algebra matriciale, nel post precedente non mi sono espresso
bene credo.

il mio intento è quello di calcolarmi il "MAX sotto più condizioni" di
una colonna di una tabella in un foglio via codice VBA evitando di
sbobbarmi una serie di cicli for..next e relativi IF

c'è un modo altrettanto elegante quanto quello utilizzabile nei
worksheets? vedi ad esempio quello che mi hai appena insegnato qualche
3d fa usanto la funzione GRANDE e la moltiplicazione di vettori di
condizioni booleane...

Grazie mille
Bruno Campanini
2010-07-16 12:34:08 UTC
Permalink
Post by Montalbano Sono
Buongiorno
sapreste dirmi se c'è un modo per ottenere la moltiplicazione di due array
tra di loro via VBA in modo conciso (cioè senza cicli)?
direttamente sul sheet basta scrivere in forma matriciale
A1:A5*B1:B5
in VBA un approccio tipo
range("A1:A5") * range ("B1:B5")
non pare funzionare...
[Sheet1!C1].FormulaArray = "=A1:A5*B1:B5"

Bruno
r
2010-07-16 15:58:23 UTC
Permalink
Post by Bruno Campanini
Post by Montalbano Sono
Buongiorno
sapreste dirmi se c'è un modo per ottenere la moltiplicazione di due array
tra di loro via VBA in modo conciso (cioè senza cicli)?
direttamente sul sheet basta scrivere in forma matriciale
A1:A5*B1:B5
in VBA un approccio tipo
range("A1:A5") * range ("B1:B5")
non pare funzionare...
[Sheet1!C1].FormulaArray = "=A1:A5*B1:B5"
Bruno
ciao Bruno,
così hai comunque bisogno di una cella C1 dove scrivere la formula ...
se volessimo il risultato in una variabile nel codice ... non sarebbe
certo comodo dover scrivere in una cella per recuperarne il
risultato ... non credi? credo che l'unica soluzione sia il doppio
ciclo proposto da plinius
ciao
r
Bruno Campanini
2010-07-16 18:08:15 UTC
Permalink
Post by r
ciao Bruno,
così hai comunque bisogno di una cella C1 dove scrivere la formula ...
se volessimo il risultato in una variabile nel codice ... non sarebbe
certo comodo dover scrivere in una cella per recuperarne il
risultato ... non credi? credo che l'unica soluzione sia il doppio
ciclo proposto da plinius
Ma certamente sì!
Peccato che Excel consenta l'operazione
Range = Array e non il suo contrrio.

Bruno

Loading...