Cerca Vert 2 condizioni



  • Cerca Vert 2 condizioni
    di ricc86 (utente non iscritto) data: 26/11/2013 15:59:03

    Salve a tutti per lavoro mi ritrovo di fronte un problema, in pratica ho un file con + fogli dove giornalmente aggiorno le efficienze ed i rendimenti di ciascun dipendente, in pratica per semplificarla ho una tabella con le colonne : data, nome, efficienza, ecc. In un altro foglio dello stesso file dovrei inserire solamente l'efficienza , ricercandola dal foglio precedente in base al nome e alla data! qualche aiuto? grazie


  • cerca.vert 2 condizioni
    di canapone (utente non iscritto) data: 26/11/2013 16:02:49


    Ciao,

    si puoi fare con un INDICE/CONFRONTA, ma avrei bisogno di un file d'esempio.

    questo è lo schema

    =INDICE(FOGLIO1!Z1:Z100,CONFRONTA("NOME"&"DATA";INDICE(LISTANOMI&LISTADATE;0);0))

    Non c'è bisogno neppure del control+maiusc+invio

    Saluti


  • efficienza
    di canapone (utente non iscritto) data: 26/11/2013 16:08:12


    Ciao di nuovo,

    se cerchi un numero, basta anche una matr.somma.prodotto o un somma.più.se o una somma(indice(...;))

    esempio di schema

    =somma.più.se(rangeefficienza,rangenomi;"nomecercato";range date;"datacercata"

    matr.somma.prodotto può essere utile se devi leggere da file esterni.

    Saluti


  • Cerca Vert 2 condizioni
    di ricc86 (utente non iscritto) data: 26/11/2013 16:25:08

    in allegato il file, su "Foglio 4 " devo inserire i dati ricercati!


  • indice
    di canapone (utente non iscritto) data: 26/11/2013 16:29:43

    Quale colonna devi far leggere?



  • di ricc86 (utente non iscritto) data: 26/11/2013 16:36:46

    in pratica dal foglio "calcolo giornaliero" devo prendere l'efficienza x dipendente in quella data! Forse sono poco chiaro?


  • efficienza
    di canapone (utente non iscritto) data: 26/11/2013 16:40:14

    Ciao,

    non avevo visto la colonna BT

    In B3 del foglio4 da copiare a destra ed in basso


    =MATR.SOMMA.PRODOTTO(('Calcolo Giornaliero'!$B$2:$B$37=$A3)*('Calcolo Giornaliero'!$A$2:$A$37=B$2)*'Calcolo Giornaliero'!$BT$2:$BT$37)

    Spero sia d'aiuto


  • Cerca Vert 2 condizioni
    di ricc86 (utente non iscritto) data: 26/11/2013 16:55:44

    sembra non andare, però io per snellire il file per allegarlo ho rimosso tante righe da calcolo giornaliero!


  • matr.somma.prodotto
    di canapone (utente non iscritto) data: 26/11/2013 17:31:56


    Ciao,

    nel file che hai condiviso - se ci ho visto bene - la formula trovava i dati solo del 25/11 , ho fatto qualche controllo a totale e per persona le percentuali della colonna Bt mi sembreno riportate correttamente.

    la formula

    =se.errore(INDICE('Calcolo Giornaliero'!$BT$2:$BT$100;CONFRONTA($A3&B$100+0;INDICE('Calcolo Giornaliero'!$B$2:$B$100&'Calcolo Giornaliero'!$A$2:$A$100;0);0));0)

    ha restituito gli stessi risultati

    Se servisse.





    Se l'accoppiata nome/data è univoca la formula non dovrebbe dare problemi.





  • Cerca Vert 2 condizioni
    di ricc86 (utente non iscritto) data: 27/11/2013 08:12:48

    Non riesco a capire dove sbaglio, e non riuscendo a caricare il file completo ho fatto una schermata e la sto caricando in allegato!


  • indice 2 condizioni
    di canapone (utente non iscritto) data: 27/11/2013 09:02:20

    Ciao,

    nella colonna in BT hai messo


    =SE.ERRORE(SE(BS2=0;"";BS2/(D2-BQ2));0,01)

    Il segmento

    SE(BS2=0;""

    sarebbe meglio scriverlo

    =SE.ERRORE(SE(BS2=0;0



    Se non puoi cambiare la formula della colonna BT in
    =SE.ERRORE(SE(BS2=0;0;BS2/(D2-BQ2));0,01)

    Nel foglio4 cambia le formule in

    =SE.ERRORE(INDICE('Calcolo Giornaliero'!$BT$2:$BT$100;CONFRONTA($A3&T$2;INDICE('Calcolo Giornaliero'!$B$2:$B$100&'Calcolo Giornaliero'!$A$2:$A$100;0);0));0)


    Spero sia d'aiuto


  • indice
    di canapone (utente non iscritto) data: 27/11/2013 09:04:01

    Ciao,

    scusa un refuso - sto traducendo da un Excel in inglese-

    in B3

    =SE.ERRORE(INDICE('Calcolo Giornaliero'!$BT$2:$BT$100;CONFRONTA($A3&B$2;INDICE('Calcolo Giornaliero'!$B$2:$B$100&'Calcolo Giornaliero'!$A$2:$A$100;0);0));0)

    Saluti



  • di ricc86 (utente non iscritto) data: 27/11/2013 10:46:47

    non riesco a capire cosa sbaglio, se mi potrebbe dare una mail o qualcosa per inviarle il file completo sarebbe perfetto!



  • di ricc86 (utente non iscritto) data: 27/11/2013 11:37:43

    sono riuscito a caricarlo online
    rapidshare.com/share/84C6CC441173928A012B6D9A4EA3BFCA


  • indice
    di canapone (utente non iscritto) data: 27/11/2013 11:55:17

    ciao,

    per restrizioni di rete non posso scaricare documenti in filesharing.

    Posso solo darci un'occhiata stasera






  • di ricc86 (utente non iscritto) data: 27/11/2013 12:31:14

    ok grazie mille!


  • indice confronta
    di ricc86 (utente non iscritto) data: 27/11/2013 14:26:02

    Risolto da solo, erano da sistemare i riferimenti alle celle, a volte mi sorprende la mia incapacità!! :) Grazie mille per la disponibilità. Alla prossima



  • di ricc86 (utente non iscritto) data: 28/11/2013 09:30:20

    salve sono ancora qui a romperle le scatole, solo che da quando ho inserito la formula il foglio mi è notevolmente rallentato. Forse con SOMMA.PRODOTTO cambierebbe qualcosa? grazie


  • Cerca Vert 2 condizioni
    di Riccardo (utente non iscritto) data: 28/11/2013 09:44:03

    Tempo fa mi trovai nella stessa situazione di dover cercare ed elaborare 2 condizioni.
    Dopo un po di "smanettamenti" ho risolto col SET di funzioni che ripropongo qui sotto, se possono essere utili .......
     
    Function Conta2Condizioni(Zona1 As Range, cond1, Zona2 As Range, cond2) 'CONTA quante volte ricorrono 2 CONDIZIONI
    
    Dim cartella As String, foglio As String, rng As Range, contatore As Long
    Dim cella1 As Range, cella2 As Range
    On Error Resume Next
    
        cartella = Zona1.Parent.Parent.Name
        foglio = Zona1.Parent.Name
       
        For Each rng In Zona1
            Set cella1 = Workbooks(cartella).Worksheets(foglio).Cells(rng.Row, Zona1.Column)
            Set cella2 = Workbooks(cartella).Worksheets(foglio).Cells(rng.Row, Zona2.Column)
            If Trim(UCase(cella1)) = Trim(UCase(cond1)) And Trim(UCase(cella2)) = Trim(UCase(cond2)) Then contatore = contatore + 1
        Next
        Conta2Condizioni = contatore
    End Function
    
    Function Trova2Condizioni(Zona1 As Range, cond1, Zona2 As Range, cond2, Offset) 'TROVA il primo risultato di 2 CONDIZIONI in Campo Offset
    Dim cartella As String, foglio As String, rng As Range
    Dim cella1 As Range, cella2 As Range
    On Error Resume Next
    
        cartella = Zona1.Parent.Parent.Name
        foglio = Zona1.Parent.Name
    
        For Each rng In Zona1
            Set cella1 = Workbooks(cartella).Worksheets(foglio).Cells(rng.Row, Zona1.Column)
            Set cella2 = Workbooks(cartella).Worksheets(foglio).Cells(rng.Row, Zona2.Column)
            If Trim(UCase(cella1)) = Trim(UCase(cond1)) And Trim(UCase(cella2)) = Trim(UCase(cond2)) Then
                Cella = Workbooks(cartella).Worksheets(foglio).Cells(rng.Row, Offset)
                Exit For
            End If
        Next
        Trova2Condizioni = Cella
    End Function 'Trova2Condizioni
    
    
    Function Somma2Condizioni(Zona1 As Range, cond1, Zona2 As Range, cond2, Offset)  ' SOMMA Risultato di 2 CONDIZIONI in Campo Offset
    Dim cartella As String, foglio As String, rng As Range
    Dim cella1 As Range, cella2 As Range
    On Error Resume Next
    
        cartella = Zona1.Parent.Parent.Name
        foglio = Zona1.Parent.Name
    
        For Each rng In Zona1
            Set cella1 = Workbooks(cartella).Worksheets(foglio).Cells(rng.Row, Zona1.Column)
            Set cella2 = Workbooks(cartella).Worksheets(foglio).Cells(rng.Row, Zona2.Column)
            If Trim(UCase(cella1)) = Trim(UCase(cond1)) And Trim(UCase(cella2)) = Trim(UCase(cond2)) Then
                Somma = Somma + Workbooks(cartella).Worksheets(foglio).Cells(rng.Row, Offset)
            End If
        Next
        Somma2Condizioni = Somma
    End Function 'Somma2Condizioni
    



  • di ricc86 (utente non iscritto) data: 29/11/2013 08:23:43

    salve scusate il ritardo , ma ieri non ho trovato il tempo di controllare il forum, grazie Riccardo per la tua risposta, il problema è che io non ho mai inserito delle funzioni su excel, potreste spiegarmi come inserirle e poi come usarle? grazie


  • Cerca Vert 2 condizioni
    di riccardo (utente non iscritto) data: 29/11/2013 10:20:06

    Ci sono varie tecniche. Io personalmente inserisco le funzioni in un modulo all'interno del "Personal.xls" in modo da avere sempre disponibili le funzioni per chiamarle da qualsiasi cartella e qualsiasi foglio di lavoro.
    Tuttavia va benissimo (ed è anche più semplice la sintassi di chiamata) inserirle nel tuo singolo foglio di lavoro. con le seguenti semplici operazioni, io uso un excel vecchissimo 2002 SP2, quindi può darsi che l'aspetto del tuo non sia proprio identico, ma con questa traccia dovresti riuscire:

    1 - Apri il tuo foglio excel.
    2 - premi i tasti ALT-F11
    3 - Nella finestra in alto a destra "Progetto - VBAProject" seleziona il tuo nome file excel
    4 - col tasto destro del mouse scegli l'opzione "inserisci modulo"; lui crea un modulo di nome Modulo1
    5 - Apri il nuovo modulo con un doppio click del mouse sinistro
    6 - all'interno di questo modulo copia le funzioni che ti ho inviato

    A questo punto puoi chiudere il modulo VisualBasic e tornare nel tuo foglio di lavoro dove chiamerai le funzioni, ammesso che siano efficaci per il tuo impiego (sui miei lavori lo erano) con la seguente sintassi di esempio:

    A)
    =Trova2Condizioni(Foglio2!B7:B80;341,64;Foglio2!C3:C90; 54,51; 6 )
    la chiamata a "Foglio2" è facoltativa, cioè: se ricerchi le 2 condizioni nello stesso foglio dove chiami la funzione non è necessario precisare il "Foglio", ma tu puoi anche ricercare le 2 condizioni in un altro floglio ed anche in una altra cartella di lavoro; per questo ho previsto la sintassi un po' più complessa per avere un utilizzo più portabile della funzione stessa.
    Il significato di chiamata è:
    Trova2Condizioni : nella zona Foglio2!B7:B80 trova il valore 341,64 e nella zona Foglio2!C3:C90 trova il valore 54,51 - restituisci il valore trovato all'OFFSET n° 6 cioè la sesta colonna del foglio che, nel mio caso era il numero 4370
    Nota anche che le zone assegnate non devono essere necessariamente simmetriche, infatti B7:B80 non corrisponde esattamente a C3:C90; ovviamente il conteggio avverrà solo su valori "allineati per riga"

    B)
    =Conta2Condizioni(B9:B26; 341,64; C9:C26; 54,51)
    in questo esempio non dichiarando il foglio si intende il conteggio di 2 condizioni nel medesimo foglio dove esegui la chiamata di funzione.
    Il significato di chiamata è:
    Conta2Condizioni : nella zona B9:B26 trova il valore 341,64 e nella zona C9:C26 trova il valore 54,51 - conta quante volte ricorre questa doppia circostanza (341,64 e 54,51) nelle zone assegnate


    C)
    =somma2Condizioni(B1:B90;341,64;C1:C90;54,51; 5 )
    stesse spiegazioni di prima, con la differenza che il programma somma i valori trovati all'OFFSET assegnato (n° 5) per tutte le volte che ricorre la doppia condizione.

    Infine tieni presente che le funzioni lavorano soltanto per Ricerca Verticale ma non su zone estese in orizzontale: ciò a causa della stessa struttura da me elaborata; per ricerche su aree orizzontali bisognerebbe modificare le funzioni trasponendo i riferimenti verticali su riferimenti orizzontali, insomma bisognerebbe riscrivere adeguatamente le funzioni.

    Più difficile da spiegare che da fare: prova, sono convinto che ti riuscirà facile, una volta "entrato" nella logica.

    Ciao



  • Cerca Vert 2 condizioni
    di Riccardo (utente non iscritto) data: 29/11/2013 11:45:26

    ERRATA CORRIGE:
    Ho sbagliato la Destra con la Sinistra:

    3 - Nella finestra in alto a destra "Progetto - VBAProject" seleziona il tuo nome file excel

    mi scuso e correggo

    3 - Nella finestra in alto a SINISTRA "Progetto - VBAProject" seleziona il tuo nome file excel


    Riccardo



  • di ricc86 (utente non iscritto) data: 29/11/2013 12:25:46

    grazie mille per l'aiuto! ci sono riuscito grazie alle tue indicazioni! Solo che il problema non cambia, anzi rispetto alla soluzione di canapone, il foglio è ancora + lento. Forse usando SOMMA.PRODOTTO, riesco a snellire un pò?


  • Cerca Vert 2 condizioni
    di Riccardo (utente non iscritto) data: 29/11/2013 12:35:07

    Per la lentezza non riesco ad aiutarti, ma secondo me non dipende dalla formule, ma da possibili errori interni al foglio, come dei loop giganteschi o simili ....
    Quando incorro in simili situazioni (me ne sono successe varie volte) io provo a rifare un foglio simile ricostruendolo da capo, copiando solo le voci principali e attivando le formule con singoli passaggi fino a quando trovo (se lo trovo) il passaggio che rallenta. Dopo di che il gioco è fatto.
    Tutto ciò richiede calma e pazienza ........... ma funziona.
    Auguri!



  • di ricc86 (utente non iscritto) data: 29/11/2013 14:42:36

    proverò, grazie mille per l'aiuto!