Aggiornamento automatico dati



  • Aggiornamento automatico dati
    di Antonio (utente non iscritto) data: 20/05/2010

    Salve a tutti,
    volevo chiedervi gentilmente un aiuto per questo quesito di visual basic:
    immaginiamo una classifica a tre squadre...
    cella a1 milan
    cella a2 inter
    cella a3 roma
    poi i punti nella
    cella b1 20
    cella b2 25
    cella b3 27
    infine le partite vinte nella
    cella c1 5
    cella c2 6
    cella c3 7

    in pratica io sono riuscito a creare tutte le formule per il calcolo delle statistiche ma la roma che ha 27 punti mi rimane nella 3°cella in basso con più punti di quelle che sono in alto... come si fa a farla salire automaticamente nella cella a1?
    mi hanno riferito che creare l'aggiornamento automatico senza l'uso di un pulsante è possibile farlo solo con visual basic (sfruttando la funzione change del foglio).sono decisamente in panne perchè sono alle prime armi in vba.spero qualcuno possa aiutarmi.
    vi ringrazio anticipatamente



  • di Ricky53 (utente non iscritto) data: 20/05/2010

    Ciao,
    allora:
    1. apri l'editor del vb con alt+f11
    2. vai nel vbproject e posizionati sul foglio (quello che vba e non quello di excel) in cui hai scritto le formula
    3. copia la seguente macro (che dovrai adattare in base all'intervallo dei tuoi dati) nel foglio selezionato
    4. vai in excel sul foglio dei dati e cambia qualcosa

    avrai i dati ordinati per punteggio decrescente

    ciao da ricky53
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    ' I dat iniziano dalla riga "2" perchè la riga "1" è per le intestazioni di colonna
        RR = Range("A" & Rows.Count).End(xlUp).Row
    
    ' Se l'intervallo dei tuoi dati e oltre la colonna "C" sostituisci la "C" con l'ultima colonna contenente dati
        Range("A1:C" & RR).Select
        
    'Ordina per colonna "B" decrescente
    '    e poi per colonna "C" decrescente
    '    ---> vedi tu quali colonne devi ordinare
        Selection.Sort Key1:=Range("B2"), Order1:=xlDescending, Key2:=Range("C2") _
            , Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
            False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
            :=xlSortNormal
        
        Range("A1").Select
    End Sub
    



  • di Antonio (utente non iscritto) data: 21/05/2010

    Grazie mille ricky,
    provvederò ad adattare le tue indicazioni in base all'esempio analizzato.in pratica lo devo fare per una classifica di calcio e l'esempio calza a pennello.spero di riuscirci.comunque grazie ancora per l'aiuto.



  • di Ricky53 (utente non iscritto) data: 21/05/2010

    Di nulla.

    aggiornaci sull'andamento.

    ciao da ricky53



  • di Antonio (utente non iscritto) data: 24/05/2010

    Ciao ricky,
    non riesco proprio..come vedi sono tanti giorni che ho provato in tutti i modi a far funzionare il codice ma non va sto impazzendo… sicuramente sbaglio io in qualcosa perché sono alle prime armi e non riesco ad adattare il tuo codice a quello che mi servirebbe. ti illustro brevemente e in modo preciso il foglio a cui intendo applicare il codice vb.
    il mio foglio excel si chiama classifica lega
    nella colonna c sono elencate le 6 squadre (c4 squadra1 c5 squadra2 c6 squadra3 c7 squadra4 c8 squadra5 c9 squadra6
    nella colonna d i punti totalizzati da ciascuna squadra (d4..d5..d6..d7..d8..d9)
    nella colonna e le partite vinte (e4..e5..e6..e7..e8..e9)
    nella colonna f le partite pareggiate (f4..f5..f6..f7..f8..f9)
    nella colonna g le partite perse (g4..g5..g6..g7..g8..g9)
    nella colonna h i gol fatti (h4..h5..h6..h7..h8..h9)
    nella colonna i i gol subiti (i4..i5..i6..i7..i8..i9)
    nella colonna j la differenza reti (j4..j5..j6..j7..j8..j9)
    in tutte le celle elencate ho generato delle formule all’ interno che cambiano valore automaticamente quando sul foglio del calendario vado ad inserire i risultati.
    io praticamente ho bisogno che la classifica si aggiorni con riferimento all’ intervallo dei punti (d4:d9) ed ovviamente al salire o scendere posizione di una squadra si allineino sulla stessa riga anche le altre statistiche ad esempio (cioè l’ ordine decrescente vale solo per la colonna punti ma la selezione va comunque espansa alle colonna c,e,f,g,h,i e j).
    ho approfondito l’ argomento anche se ho intuito che già avevi capito il tutto.
    ti chiedo se per favore puoi aiutarmi a creare il codice in base al foglio descritto.
    come sempre cercherò di arrangiarmi da solo e cercare di imparare studiando da solo, ma in questo caso spero vivamente che tu o qualche altro bravo utente del forum riesca a risolvere il mio problema..
    ringrazio tutti voi per l’ alta competenza che dimostrate sempre in questo forum.
    antonio



  • di Antonio (utente non iscritto) data: 26/05/2010

    Salve ragazzi,
    con tanto impegno (nelle mie limitate conoscenze)sono riuscito ad adattare il codice gentilmente formulato da ricky sul mio file di lavoro ...però c'è un particolare: se provo a scrivere una classifica digitando squadre e numeri,il tutto va in ordine automaticamente come prefissato,ma io nelle celle della classifica ho tutte formule collegate ad un altro foglio di lavoro excel...
    in pratica le celle dei punti,le vinte,pareggiate etc... hanno la propria formula nella cella e credo che sia proprio quello il problema.. nella mia classifica si leggono normalmente le squadre e tutte le altre statistiche ma ogni cella ha la sua formula...
    mi sà il visual basic non riconosce ciò che visualizza una cella..ma "riconosce" il contenuto della cella.
    spero qualcuno di voi possa chiarirmi questo punto ed eventualmente darmi qualche suggerimento.
    vi ringrazio anticipatamente



  • di Antonio (utente non iscritto) data: 26/05/2010

    Vi espongo l'ultima cosa per rendervi quanto più possibile chiara questa situazione..
    provando ad eliminare tutte le formule dalle celle della classifica e digitando a caso punti vinte etc... il tutto funziona regolarmente ma volendo mettere il codice sulla stessa identica classifica con le formule all'interno (che mi fanno comodamente tutti i calcoli) non funziona..
    spero che esista una soluzione al problema..