Condividi:        

Prodotto matriciale

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Prodotto matriciale

Postdi Spartacus85 » 03/09/13 10:41

Salve a tutti,
come posso fare il prodotto tra 2 tabelle colonna per riga ra 2 tabelle?

Mi spiego meglio..

Supponiamo che 11A indichi la cella con riga 1, colonna 1 della Tabella A.
Supponiamo che in ingresso ho 2 tabelle A e B e voglio che in uscita ci sia la sola tabella C le cui celle sono composte da:

11C=11A*11B+12A*21B
21C=21A*11B+22A*21B
12C=.....
22C=.....

Esiste un'unica formula che posso adattare a tutte le celle senza inserire il $, magari usando le intestazioni delle 2 tabelle? considerate che la mia tabella e composta da 100 righe e 100colonne!

Spero sia stato chiaro nella spiegazione.
Spartacus85
Utente Junior
 
Post: 50
Iscritto il: 23/07/13 12:30

Sponsor
 

Re: Prodotto matriciale

Postdi Spartacus85 » 03/09/13 11:58

Ho temporaneamente risolto facendo la trasposta di una delle 2 matrici e inserendo nella cella dellq Tabella C
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO('Foglio1!H$4:H$41,Trasposta!$D$5:$D$42)


Questa formula posso usarla per tutta la prima riga pero se voglio usarla anche per le altre righe dovrei cambiare i riferimenti del foglio TRASPOSTA D5:D42 in E5:E42 e cosi via..esiste un modo per modificare automaticamente queste lettere abbassandosi man mano di riga?
Spartacus85
Utente Junior
 
Post: 50
Iscritto il: 23/07/13 12:30

Re: Prodotto matriciale

Postdi scossa » 03/09/13 12:58

Spartacus85 ha scritto:Ho temporaneamente risolto facendo la trasposta di una delle 2 matrici e inserendo nella cella dellq Tabella C
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO('Foglio1!H$4:H$41,Trasposta!$D$5:$D$42)



Ciao,

come da a funzionare quella formula, con un apice lasciato sospeso, con la virgola al posto del punto e virgola?
Dove sarebbe la trasposta??

Difficile aiutarti se sei così impreciso, molto meglio se alleghi il tuo file.
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 427
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Prodotto matriciale

Postdi Spartacus85 » 03/09/13 16:43

La formula funziona, la virgola e dovuta al fatto che uso una tastiera e una configurazione inglese (motivo per cui scrivo senza accenti).

Mi spiego meglio:
se nella riga 1 ho =MATR.SOMMA.PRODOTTO('Foglio1!H$4:H$41,Trasposta!$D$5:$D$42)

nella riga 2 voglio =MATR.SOMMA.PRODOTTO('Foglio1!H$4:H$41,Trasposta!$E$5:$E$42)

C'e un modo per farlo senza dover cambiare manualmente i riferimenti?
Spartacus85
Utente Junior
 
Post: 50
Iscritto il: 23/07/13 12:30

Re: Prodotto matriciale

Postdi ninai » 03/09/13 18:09

Ciao
Non ho capito bene lo scopo, ma la formula conclusiva alla quale sei arrivato credo la puoi modificare tramite la funzione INDIRIZZO() con RIF.RIGA() per determinare il riferimento di colonna. Non capendo tutto l'insieme, potrei sbagliarmi.
w8 + Office 2010 Ita
ninai
Utente Senior
 
Post: 271
Iscritto il: 12/06/13 05:23
Località: prov. Messina

Re: Prodotto matriciale

Postdi scossa » 03/09/13 18:50

Spartacus85 ha scritto:La formula funziona, la virgola e dovuta al fatto che uso una tastiera e una configurazione inglese (motivo per cui scrivo senza accenti).


Avrai una versione di Excel personalizzata fatto apposta per te, perché
=MATR.SOMMA.PRODOTTO('Foglio1!H$4:H$41)
è sbagliata nella sintassi, l'apice da solo non ci può stare, per funzionare devi "chiudere" l'apice:
=MATR.SOMMA.PRODOTTO('Foglio1'!H$4:H$41)

Poi non hai risposta alla domanda: dov'é la trasposta nella tua formula?
Se il file è segretissimo ..... sorry.
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 427
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Prodotto matriciale

Postdi Spartacus85 » 04/09/13 08:49

Grazie per le risposte.

Semplifico cosi la formula:

Se in riga 1 colonna A ho:
=MATR.SOMMA.PRODOTTO(H$4:H$41,$D$5:$D$42)


e in riga 2colonna A voglio:
=MATR.SOMMA.PRODOTTO(H$4:H$41,$E$5:$E$42)


e in riga 3 colonna A voglio:
=MATR.SOMMA.PRODOTTO(H$4:H$41,$F$5:$F$42)


Che formula posso usare per non dover riscrivere ogni volta la formula? in che modo posso combinare INDIRIZZO e RIF.RIGA()?

Grazie
Spartacus85
Utente Junior
 
Post: 50
Iscritto il: 23/07/13 12:30

Re: Prodotto matriciale

Postdi ninai » 04/09/13 11:43

Spiacente
Col suggerimento che ti avevo prima dato,(INDIRIZZO() e RIF.RIGA()) con le matriciali non viene proprio...., ho provato anche con la funzione SCARTO(), o sbaglio qualcosa nella sintassi oppure non sono queste la vie da seguire

le pubblico tanto per dettagliare le mie procedure, ERRATE, qualora fossero correggibili:
=MATR.SOMMA.PRODOTTO(H$4:H$41;SCARTO($D$5;0;RIF.RIGA(A1)-1;38;1))
oppure

=MATR.SOMMA.PRODOTTO(H$4:H$41;INDIRIZZO(5;RIF.RIGA(A4);1;1)&":"&INDIRIZZO(42;RIF.RIGA(A4);1;1))

se si usano per funzioni non matriciali (somma, conta, ecc.), funzionano ma con matr.somma.prodotto non considera l'intervallo.
w8 + Office 2010 Ita
ninai
Utente Senior
 
Post: 271
Iscritto il: 12/06/13 05:23
Località: prov. Messina

Re: Prodotto matriciale

Postdi scossa » 04/09/13 12:07

ninai ha scritto:Spiacente
=MATR.SOMMA.PRODOTTO(H$4:H$41;INDIRIZZO(5;RIF.RIGA(A4);1;1)&":"&INDIRIZZO(42;RIF.RIGA(A4);1;1))

se si usano per funzioni non matriciali (somma, conta, ecc.), funzionano ma con matr.somma.prodotto non considera l'intervallo.


Io la risolverei così:
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(H$4:H$11;D$5:F$12 INDIRETTO(CODICE.CARATT(RIF.RIGA()+64+3) & ":"&CODICE.CARATT(RIF.RIGA()+64+3)))

normale, da confermare con il solo invio

Se poi vogliamo semplificare la "lettura", pasta posizionarsi in A1 e definire un nome (LettCol) dove in Riferito a metteremo:
Codice: Seleziona tutto
=CODICE.CARATT(RIF.RIGA()+64+3)


così la nostra formula diventa:
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(H$4:H$11;D$5:F$12 INDIRETTO(LettCol & ":"&LettCol))
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 427
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Prodotto matriciale

Postdi scossa » 04/09/13 13:08

[quote="scossa"]
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(H$4:H$11;D$5:F$12 INDIRETTO(CODICE.CARATT(RIF.RIGA()+64+3) & ":"&CODICE.CARATT(RIF.RIGA()+64+3)))


Ovviamente funziona solo fino alla colonna Z (riga 26).

Edit:
Questa variante funziona per qualsiasi colonna:
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(H$4:H$11;D$5:F$12 INDIRETTO(SOSTITUISCI(INDIRIZZO(1;RIF.RIGA()+3;4); "1"; "") & ":"&SOSTITUISCI(INDIRIZZO(1;RIF.RIGA()+3;4); "1"; "")))
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 427
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Prodotto matriciale

Postdi ninai » 04/09/13 13:21

scossa ha scritto:
scossa ha scritto:
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(H$4:H$11;$D5:F$12 INDIRETTO(CODICE.CARATT(RIF.RIGA()+64+3) & ":"&CODICE.CARATT(RIF.RIGA()+64+3)))


Ovviamente funziona solo fino alla colonna Z (riga 26).

Ciao Scossa
ho capito che con i Codice.caratt(................), fai restituire {"D:D"} ma che questo range, messo lì, all'interno di indiretto, debba interagire con $D5:F$12, non lo dogerisco proprio. Ma che diavoleria è?????? :cry: :lol:
w8 + Office 2010 Ita
ninai
Utente Senior
 
Post: 271
Iscritto il: 12/06/13 05:23
Località: prov. Messina

Re: Prodotto matriciale

Postdi scossa » 04/09/13 13:51

ninai ha scritto:Ciao Scossa
ho capito che con i Codice.caratt(................), fai restituire {"D:D"} ma che questo range, messo lì, all'interno di indiretto, debba interagire con $D5:F$12, non lo dogerisco proprio. Ma che diavoleria è??????


Prendiamo la rappresentazione semplificata della formula:
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(H$4:H$11;D$5:F$12 D:D)

Quello spazio tra D$5:F$12 e D:D è l'operatore di intersezione (di cui ho parlato in questi giorni nell'altro forum), in pratica restituisce l'interszione tra D$5:F$12 e la colonna D cioè restituisce D5:D12, etc. etc.
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 427
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Prodotto matriciale

Postdi Spartacus85 » 04/09/13 15:05

Scossa direi GENIALE questa formula, non conoscevo per nulla la funzione INTERSEZIONE.

L'unico problema e che purtroppo le mie colonne arrivano fino a CZ! (File enorme).

Forse per farla funzionare va inserita, in modo non elegante certo, una funzione SE con la condizione rif.riga()>26. Modificherei la formula inserendo in CODICE.CARATT la funzione CONCATENA e poi successivamente per 2 voltge la funzione RIF.RIGA.
Spartacus85
Utente Junior
 
Post: 50
Iscritto il: 23/07/13 12:30

Re: Prodotto matriciale

Postdi scossa » 04/09/13 15:34

Spartacus85 ha scritto:Scossa direi GENIALE questa formula, non conoscevo per nulla la funzione INTERSEZIONE.

L'unico problema e che purtroppo le mie colonne arrivano fino a CZ! (File enorme).

Forse per farla funzionare va inserita, in modo non elegante certo, una funzione SE con la condizione rif.riga()>26. Modificherei la formula inserendo in CODICE.CARATT la funzione CONCATENA e poi successivamente per 2 voltge la funzione RIF.RIGA.


Avevo editato il mio post precedente:

scossa ha scritto:Edit:
Questa variante funziona per qualsiasi colonna:
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(H$4:H$11;D$5:F$12 INDIRETTO(SOSTITUISCI(INDIRIZZO(1;RIF.RIGA()+3;4); "1"; "") & ":"&SOSTITUISCI(INDIRIZZO(1;RIF.RIGA()+3;4); "1"; "")))


ovviamente D$5:F$12 diventerà D5:CZ12, ma qualcosa non quadra: H4:H11 sarebbe compreso!??!!
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 427
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Prodotto matriciale

Postdi Spartacus85 » 04/09/13 15:40

:)...no se vedi il mio primo post H:H proviene da un foglio e D:D da un altro foglio. Per rendere piu chiara la formula ho eliminato i nomi dei fogli.

Grazie scossa, provo subito la formula. Ripeto, davvero geniale la formula:)
Spartacus85
Utente Junior
 
Post: 50
Iscritto il: 23/07/13 12:30

Re: Prodotto matriciale

Postdi ninai » 04/09/13 18:13

Grazie Scossa della spiegazione, spero di riuscire ad attivare gli "enzimi" adatti, l'ho digerita come dei peperoni fritti e panna, mangiati alle 3 del mattino. :lol: :lol:
w8 + Office 2010 Ita
ninai
Utente Senior
 
Post: 271
Iscritto il: 12/06/13 05:23
Località: prov. Messina

Re: Prodotto matriciale

Postdi Anthony47 » 05/09/13 00:58

Altro che peperoni fritti...
Con un po' di ritardo io pero' ripartirei dal primo messaggio, che diceva:
"come posso fare il prodotto [. . .] colonna per riga tra 2 tabelle?"

Grazie al successivo "Mi spiego meglio.." (o forse: "nonostante il successivo Mi spiego meglio.." :D ) si capisce che Spartacus vuole sommare il prodotto tra la prima riga di tabella A e la prima colonna di tabella B.

Insomma, se Tab A e B fossero 10Righe*10Colonne allora si cerca la tab C, sempre 10 * 10 contenente quindi 100 somme (sappiamo che le colonne sono molte di piu', ma non cambia il ragionamento) con le relative somme di matrice.

Spartacus non ha dato le coordinate delle sue tabelle, quindi usero' le mie: Tab A in $K$1:$T$10, Tab B in $AA$1:$AJ$10.

Calcolerei quindi il primo risultato della tabella C (prima riga di tab A * prima colonna di tab B) con la formula
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(INDICE($K$1:$T$10;RIF.RIGA(A1);0);MATR.TRASPOSTA(INDICE($AA$1:$AJ$10;0;RIF.COLONNA(A1))))
Da confermare con Contr-Maiusc-Enter

Copiare quindi questa formula sulle 9 celle alla destra (questo dara' la somma tra i prodotti della prima riga di tab A per ognuna delle colonne della tab B), poi le 10 formule sulle 9 celle sottostanti.

Ovviamente non richiede l' uso dei dati su foglio Trasposta; gli indirizzi di tab A e tab B vanno completati con la componente "foglio" (se giacciono su fogli diversi da quello in cui vuoi calcolare la tabella C; e rispettando la sintassi dettata da excel).

Si potrebbe usare anche la funzione Scarto, invece che Indice; ma preferisco Indice perche' estrae da sola "l' intera riga o l' intera colonna", invece di dover specificare l' altezza e la larghezza.

Spero che la mia interpretazione non sia solo frutto della mia fervida fantasia e che quanto proposto sia di qualche utilita'.

Ciao a tutti
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Prodotto matriciale

Postdi scossa » 05/09/13 06:57

Ciao Anthony,

Anthony47 ha scritto:Altro che peperoni fritti...


A dire il vero io mi sono limitato a far funzionare l'idea di ninai, prendendo in considerazione la sola domanda di spartacus che abbia capito:
Spartacus85 ha scritto:Semplifico cosi la formula:
Se in riga 1 colonna A ho:
=MATR.SOMMA.PRODOTTO(H$4:H$41,$D$5:$D$42)

e in riga 2colonna A voglio:
=MATR.SOMMA.PRODOTTO(H$4:H$41,$E$5:$E$42)

e in riga 3 colonna A voglio:
=MATR.SOMMA.PRODOTTO(H$4:H$41,$F$5:$F$42)

Che formula posso usare per non dover riscrivere ogni volta la formula? in che modo posso combinare INDIRIZZO e RIF.RIGA()?


Ammetto che sia una soluzione maccheronica e difficile da digerire, e sicuramente dedicandoci tempo si potrebbe trovare una soluzione più elegante, ma non era l'estetica lo scopo prefissato.

Riguardo la tua soluzione, se quella che hai interpretato è la reale richiesta di spartacus, mi sembra perfetta, del resto è la classica, pragmatica soluzione per avere il prodotto riga per colonna tra due matrici.

Ciao.
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 427
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona


Torna a Applicazioni Office Windows


Topic correlati a "Prodotto matriciale":


Chi c’è in linea

Visitano il forum: Gianca532011 e 88 ospiti