RSS Feed

Syndicate content

CERCA.VERT o MATR.SOMMA.PRODOTTO?

Submitted by aterzaghi on Fri, 13/11/2009 - 21:39

Domanda: Ho la necessità di creare un file che mi gestisca le presenze del personale.
Ho 2 fogli di lavoro, il primo foglio è la scheda di ogni dipendente, il secondo e un riepilogo generale di tutti i dipendenti, dove ho tutte le voci della scheda. La necessità è quella di inserire i dati nel riepilogo e far aggiornare in automatico la scheda del dipendente. Quindi mi serve una funzione che va a leggere il valore nella cella in corrispondenza del numero di matricola (esempio: colonna A), la voce di interesse (esempio: "ore ordinarie, ore straordinario, ecc" nella colonna B) e il giorno lavorativo (esempio: che si sviluppa per 31 giorni C1:AG1). Pensavo di poter usare un doppio CERCA.VERT dove il primo va a filtrare la matricola, il secondo la voce di interesse e un CERCA.ORIZZ che va a ricercare il giorno, ma non funziona.
Ho utlizzato la funzione "MATR.SOMMA.PRODOTTO" che mi restituisce il valore, funziona, però è troppo lenta l'elaborazione e riconoscendo solo valori numerici, appena inserisco una lettera va in errore.
Allego un file con l'esempio per capire meglio la funzionalità.

 

Risposta:

Il file proposto utilizza la fonuzione MATR.SOMMA.PRODOTTO in modo efficace ma purtoppo per il numero di condizioni che vengono usate e per il numero di formule inserite nel foglio, il calcolo diventa lentissimo. Lo ho verificato direttamente sul mio PC quadriprocessore.

La formula usata è la seguente:

 

=MATR.SOMMA.PRODOTTO((Riepilogo!$C$12:$C$847=$C$5)*(Riepilogo!$H$12:$H$847=$E$15)*(Riepilogo!$I$1:$CF$1=D17)*Riepilogo!$I$12:$CF$847)

 

Come potete verificare è davvero complessa.

Si può però semplificare enormemente se si aggiunge una colonna di supporto dove si costruisce una chiave univoca del dipendente (codice) e del tipo di ore che questi sta esercitando attraverso una semplice formula:

 

=C12&H12

 

nel foglio di riepilogo. A questo punto è possibile con un semplice CERCA.VERT di riportare tuee le informazioni da un fogli all'altro in questo modo:

 

=CERCA.VERT($C$5&E$15;Riepilogo!$A:$BR;8+2*$D17;0)

 

Rendendo il foglio enormemente più veloce.

 

A volte MATR.SOMMMA.PRODOTTO è davvero troppo pesante e rallenta il calcolo. Una colonna o più colonne che permettono di creare dei codici univoci da utilizzare con CERCA.VERT è spesso la soluzione.

Nel file allegato troverete sia il foglio con le formule MATR.SOMMA.PRODOTTO (ne ho eliminate molte per rendere il foglio sufficientemente veloce), sia la soluzione con CERCA.VERT

AttachmentSize
Riepilogo presenze mensili.zip39.4 KB

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <style> <center> <p>
  • Lines and paragraphs break automatically.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.

Custom Search