Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    5

    Problemino con Excel... mi arrendo...

    Ho un piccolo problema con excel…..
    Ho due fogli excel, in uno (FOGLIO 1) sono presenti tutti i dati relativi al personale che vengono aggiornati quotidianamente, nell’altro foglio (FOGLIO 2), sono presenti altri dati, (in parte comuni vedi MATRICOLA, NOME) che ogni mese circa, a seguito dei continui spostamenti, devo aggiornare soprattutto per quanto riguarda le sedi.
    Per evitare di aggiornare a mano i nominativi, uno ad uno, ho provato con la funzione cerca.vert ma non riesco a venirne a capo….
    Ecco parte del primo foglio - FOGLIO 1- (che contiene tutti i dati del personale):

    A B C D E
    1 COGNOME NOME MATRICOLA REPARTO SEDE
    2 ANTONIO 21374 MAGAZZINO M1
    3 LUISELLA 45638 RAPP. CLIENT. S1
    4 GIORGIO 23470 MAGAZZINO M2
    5 FRANCESCA 87690 VENDITA S1
    6 LUIGI 22001 MAGAZZINO M1
    7 PIPPO 20678 SEGRETERIA SP
    8 PAOLO 33234 MAGAZZINO M2
    9 MARIO 45679 DIREZIONE SP
    10 MASSIMO 45346 RAPP. CLIENT. S2
    11 LUCA 34520 MAGAZZINO M3
    12 FRANCO 34567 VENDITA S2
    13 SIMONA 87659 RAPP. CLIENT. S3
    14 RENATO 67540 VENDITA S3
    15 LUCIA 98641 VENDITA S3
    16 GIUSEPPE 76543 DIREZIONE SP

    Ecco parte del secondo foglio – FOGLIO 2 - che devo aggiornare ogni mese:
    A B C D
    1 NOME CODICE REPARTO SEDE AGGIORNATA
    2 PIPPO 20678 SEGRETERIA
    3 FRANCO 34567 VENDITA
    4 LUCIA 98641 VENDITA
    5 PAOLO 33234 MAGAZZINO
    6 GIUSEPPE 76543 DIREZIONE
    7 GIORGIO 23470 MAGAZZINO
    8 ANTONIO 21374 MAGAZZINO

    In poche parole, incrociando i valori comuni dei due fogli (attraverso la colonna matricola) vorrei poter visualizzare in una nuova colonna del foglio 2 le sedi aggiornate dei dipendenti che sono stati spostati, senza cercarli e modificarli uno ad uno.
    Le ho provate tutte…. Sono arrivato ad aggiungere altre cose ma non riesco…. Ecco l’ultima mi prova =SE(VAL.ERRORE(CERCA.VERT(B2;Foglio1!$C$2:$C$16;1; FALSO));Foglio1!$C$2:$C$16; "ERRORE") ma non vorrei che non si potesse fare…..

    HELP !!

  2. #2
    Ciao,
    non ho capito un paio di cose:

    - Il primo foglio contiene Nome, Matricola e Reparto che mi sembrano dati fissi, e poi c'è la Sede, è quello il dato che viene aggiornato ogni giorno? E da chi? Da te, da una procedura automatica o a mano dai dipendenti?

    Te lo chiedo perché se vuoi tener traccia dei cambiamenti di sede occorre che quando viene cambiata una sede venga memorizzata da qualche parte la sede vecchia in modo che la si possa confrontare con quella attuale.

    Ma forse sono completamente fuori strada?


    - Il secondo foglio contiene un sottoinsieme dei nominativi del primo quindi mi sembra che non aggiunga informazioni e non ne capisco l'utilità. A che serve? E che dati aggiorni ogni mese?
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    5
    Mi sono spiegato male... quello di cui ho bisogno è fondamentalmente questo:


    Confrontando i due fogli attraverso il numero di matricola vorrei che nel campo "sede aggiornata" (del foglio 2) mi comparisse il valore presente nel campo sede (del foglio 1) aggiornato.
    Ho cercato malamente di semplificare il meccanismo per farlo capire ma.... in realtà ho complicato le cose....
    il foglio 1 non è nella mia disponibilità (è gestito dalla Direzione) mi farebbero collegare ad esso solo per visualizzare la colonna "sede".
    Devo visualizzare la sede aggiornata per inviare ai dipendenti le comunicazioni che li riguardano....

  4. #4
    Ah, ok, se ti basta copiare nel foglio2 le sedi del foglio1 a parità di matricola non è difficile ma purtroppo non si può fare con una CERCA.VERT perché le matricole del foglio1 non sono ordinate, occorre un VBA (o una macro) come questo:

    codice:
    ' indicare le colonne delle matricole e delle sedi del foglio1 e del foglio2
       F1_col_matr = 2
       F1_col_sede = 4
       F2_col_matr = 3
       F2_col_sede = 5
     
       For Each Matricola_F2 In Sheets("Foglio2").Range(Sheets("Foglio2").Cells(2, F2_col_matr), Sheets("Foglio2").Cells(2, F2_col_matr).End(xlDown))
       
          Sheets("Foglio2").Cells(Matricola_F2.Row, F2_col_sede).ClearContents
    
          For Each Matricola_F1 In Sheets("Foglio1").Range(Sheets("Foglio1").Cells(2, F1_col_matr), Sheets("Foglio1").Cells(2, F1_col_matr).End(xlDown))
          
             If Matricola_F1 = Matricola_F2 Then
                Sheets("Foglio2").Cells(Matricola_F2.Row, F2_col_sede) = Sheets("Foglio1").Cells(Matricola_F1.Row, F1_col_sede)
                Exit For
             End If
          
          Next
       
       Next
    Sostanzialmente sono due cicli for nidificati che vanno a confrontare ogni matricola del foglio2 con tutte quelle del foglio1 finché non si trova corrispondenza e, a quel punto, la sede del foglio1 viene scritta nel foglio2.
    Tutto qui.

    Devi solo impostare i numeri di colonna (A=1, B=2 ecc...) in cui si trovano le matricole e le sedi e dovrebbe funzionare.
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    5
    Ecco perchè mi intestardivo con cerca.vert e non ne venivo a capo...
    Per adesso grazie...
    appena avrò un momento di tranquillità cercherò di mettere in pratica il tuo suggerimento...
    poi ti farò sapere...

    GRAZIE !!!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    5
    Ho provato a seguire le tue indicazioni ma non ne sono venuto a capo... non riesco a gestire le indicazioni dei numeri di colonna, come indicare alla macro le colonne e le sedi ... quindi sono al punto di prima...

  7. #7
    Nel tuo esempio iniziale ho visto che c'era anche una colonna di cognomi che non avevi riportato e allora non sapendo bene come sono organizzati i dati e che colonne effettivamente ci sono ho preferito lasciare quel dato parametrico per darti maggior flessibilità.

    Si tratta solo di dire alla macro dove deve cercare i dati che le servono, cioè le matricole e le sedi, e per farlo basta indicare il "numero di colonna" in cui si trovano.

    Nel foglio excel la colonne sono indicate da una lettera, nelle macro invece si indicano con un numero e la corrispondenza, ovvia, è A=1, B=2, C=3 ecc...

    Quindi se le sedi del foglio1 si trovano, per esempio, in colonna F, che è la sesta, dovrai dare il valore 6 alla variabile F1_col_sede che attualmente vale 4 (se vale 4 è solo perché nelle prove che ho fatto le sedi del foglio1 erano in colonna D). E lo stesso per le altre tre variabili.
    F1 ed F2 chiaramente si riferiscono al foglio1 e al foglio2.

    Le righe non occorre indicarle perché la macro è fatta per esaminare tutte le matricole del foglio2, riga per riga, fino alla prima casella vuota.

    Fammi sapere se ci riesci
    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    5
    NonCeLaFaccio+ GRAZIE.

    Finalmente.... grazie alle tue ultime indicazioni sono riuscito a venirne a capo.
    Funziona tutto....
    ANCORA GRAZIE

    Ciao.

  9. #9
    Oh, bene!
    Buon lavoro
    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.