Immaginiamo che io abbia 24 gatti, e che mettiamo ai voti quale fornitura di scatolette comprare per la settimana, scegliendo fra pollo, manzo e salmone.
Supponiamo che io sia pure un cattivo padrone e che in base a quanto mi piacciano, prenda in considerazione di più l’opinione di alcuni dei miei gatti piuttosto che di altri. E che abbia messo in un foglio di calcolo il grado di preferenza verso quel gatto, in questa maniera:
Supponiamo che in questo caso, e per tutti gli altri in cui metteremo ai voti quali scatolette comprare, alcuni dei gatti si astengano, quindi ogni volta deve essere generato un foglio diverso, in questa maniera.
Normalmente ogni voto varrebbe 1, ma come posso fare in modo che il voto venga moltiplicato per il peso che attribuisco a quello specifico gatto?
Ovvero che Calc cerchi nel foglio 2 la riga che inizia per lo stesso valore (il nome del gatto), quindi prenda il valore di una specifica colonna per quella riga (il peso dell’opinione di quel gatto) e che quindi lo moltiplichi per il voto del gatto nel foglio 1, di modo che ogni votazione risulti pesata rispetto al peso di ciascun gatto?
So che potrei includere la colonna con il peso di ogni gatto all’interno del foglio, ma siccome i fogli delle votazioni vengono generati automaticamente, e che i gatti non votanti non vengono inclusi neanche come valore nullo, vorrei fare in modo di poter creare un riferimento flessibile sempre verso il foglio dei pesi.
Includo allegato.
Cattivo Padrone.ods
Ciao. Cioè tu vorresti che se nel foglio1, ad esempio per tiger che ha un voto 3 in foglio2, scrivi uno venga automaticamente moltiplicato per 3?
Se è così mi sa che si può fare solo con una macro.
Aggiungi un altro foglio, o nuove colonne nel foglio 2. Per comodità, adotto la seconda opzione, utilizzando la colonna F per il pollo, la G per il manzo e la H per il salmone.
Nella cella F2 inserisci la funzione CERCA.VERT moltiplicandola per il voto espresso dal gatto Oscar, in questo modo:
=CERCA.VERT($A2;$Foglio2.$A$1:$B$26;2;0)*B2
Quindi ricopi la funzione su tutta l’area F2:H13.
CERCA.VERT va a cercare il nome del gatto scritto in colonna A nell’area del Foglio 1 indicata, si sposta sulla seconda colonna e preleva il peso che vi trova. Includendo nell’area del foglio 1 la riga d’intestazione e una (o più righe) sotto l’ultimo nome attuale, se in futuro avrai più gatti ti basterà inserire in quell’'area nuove righe e CERCA.VERT amplierà automaticamente l’area di ricerca, senza bisogno che tu corregga la formula manualmente.
Gli zeri che compaiono in corrispondenza dei voti non espressi possono essere nascosti con un’opportuna formattazione condizionata (li fai scrivere in bianco); altrimenti includi la funzione scritta sopra in un SE che non faccia scrivere nulla quando il voto non c’è.
INTEGRAZIONE: per eliminare i risultati #N/D, includi la funzione di cui sopra in una funzione SE.ERRORE, così:
=SE.ERRORE(CERCA.VERT($A2;$Foglio2.$A$1:$B$26;2;0)*B2;"").
Nel caso l’indicazione “” (cella vuota) ti crei problemi con la somma, sostituisci “” con zero)
Se la mia risposta ti ha aiutato, votala con (qui a sinistra)
Mi sembra perfetto, ho dovuto solo stare attento a cambiare i riferimenti alla colonna. Un’ultima domanda molto triviale: se un gatto nonn ha votato, il suo valore pesato diventa ND, ed è giusto, ma la funzione SOMMA non computa se in mezzo ci sono celle con valori ND.
Come posso fare perché SOMMA consideri gli ND come zero?