Trovare ultimo valore inserito



  • Trovare ultimo valore inserito
    di Santuberto (utente non iscritto) data: 26/03/2013 17:41:59

    Buongiorno. Altra esigenza ed altro problema (per me di sicuro). Si tratta di questo: in una tabella del Foglio 1, ogni giorno inserisco dei valori in una colonna. Il primo giorno inserisco alcuni numeri nelle celle della colonna C; il secondo giorno inserisco i numeri nelle celle della colonna D … fino al 31 dicembre. A me interesserebbe far apparire l’ultimo numero scritto (non di ogni colonna, ma solo l’ultimo in assoluto), in una cella del Foglio 2. Provo ad allegare un esempio. Grazie mille a chi mi può aiutare.



  • di totygno71 data: 26/03/2013 18:45:54

    io sfruttere l'evento change del foglio1 ed assegnerei al target la cella a1 foglio2



  • di totygno71 data: 26/03/2013 19:05:22

    ti allego il tuo esempio



  • di Santuberto (utente non iscritto) data: 26/03/2013 19:22:27

    Non capendo nulla di certe cose, non riesco a vedere nulla. Ho visto il tuo esempio, ma nel Foglio2, non c'è nulla.



  • di totygno71 data: 26/03/2013 19:57:00

    hai provato a scrivere qualcosa nel foglio 1?



  • di mabolsie (utente non iscritto) data: 26/03/2013 20:09:09

    Per vedere il lavoro di totygno devi aprire l'editor VBA con alt+f11.

    Ciao

    max



  • di Santuberto (utente non iscritto) data: 26/03/2013 20:15:56

    Si. Fatto più volte, ma non c'è nulla. Io apro l'esempio, schiaccio alt+f11, aggiungo un numero, ma sul foglio 2 non compare niente.



  • di totygno71 data: 26/03/2013 20:20:23

    hai aperto il file giusto???
    o hai riaperto il tuo? ^_^



  • di Santuberto (utente non iscritto) data: 26/03/2013 20:23:05

    Per non correre pericoli, li ho provati entrambi. Nel mio c'è ancora (nella cella A1) quello che avevo scritto io, mentre nel tuo non c'è nulla. Ciao



  • di mabolsie (utente non iscritto) data: 26/03/2013 20:27:38

    Io l'ho provato e funziona, nel foglio 2 resta l'ultimo valore scritto nel foglio 1.

    max



  • di totygno71 data: 26/03/2013 20:29:40

    santumberto... non sarai mica VF sotto mentite spoglie????



  • di Santuberto (utente non iscritto) data: 26/03/2013 20:32:09

    Mi spiace, ma sono proprio Santuberto. Certo che in questo modo mi metti in imbarazzo: capisco d'essere proprio imbranato con il Vba, ma insomma ... Comunque ti assicuro che a me non funziona nulla. Ho provato e riprovato, ma proprio non va. Ciao



  • di totygno71 data: 26/03/2013 20:33:42

    non avrai mica le protezione a livello alto??? che disabilita le macro???
    dovrebbe comunque avvisarti quando apri il file



  • di santuberto (utente non iscritto) data: 26/03/2013 20:34:58

    A totygno71 ed a mabolsie. Intanto vi ringrazio per la cortesia. Una domanda: non ci sarà qualcosa da fare per attivare la macro (oltre a premere alt+f11)?



  • di mabolsie data: 26/03/2013 20:36:56

    Allora :

    1. Apri il file A1

    2. Nel foglio 1 scrivi una cifra decimale in una cella qualsiasi

    3. Seleziona il foglio2 e vedrai che nella cella A1 c'è scritto l'ultimo numero che hai digitato.

    4. Studia... Studia... Studia...


    Max



  • di Santuberto (utente non iscritto) data: 26/03/2013 20:37:05

    Grazie totygno. I nostri messaggi si sono accavallati. Dove devo controllare il livello di protezione?



  • di totygno71 data: 26/03/2013 20:37:18

    alt +f11
    e inserici il codice sotto selezionando il folgio1
    poi chiudi editor vba e utilizza il foglio
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Target.Value = "" Then
    Foglio2.[A1].Value = Target.Value
    End If
    End Sub
    



  • di mabolsie data: 26/03/2013 20:38:48

    non devi attivare nessuna macro il file funziona in automatico.



  • di Vecchio Frac data: 26/03/2013 20:41:35

    @totygno
    La tua macro non dà comunque il risultato giusto.
    Al nostro amico serve poter avere l'ultimo numero inserito in assoluto, quello oltre il quale non c'è più alcun dato; con il tuo codice, se lui inserisce un ultimo numero e poi torna indietro e ne inserisce uno prima, nel foglio2 troverà quest'ultimo valore appena inserito, e non l'ultimo in assoluto ("... A me interesserebbe far apparire l’ultimo numero scritto (non di ogni colonna, ma solo l’ultimo in assoluto)..."
    Forza, spremiti ^_^

    p.s. sì secondo me Santuberto ha le macro disattivate. Non so come si fa in Excel 2010.





  • di Santuberto (utente non iscritto) data: 26/03/2013 20:42:37

    Veramente trovo che la cosa sia assurda! In fin dei conti, ci sono solo quattro tasti da premere. Io apro il fil(l'esempio di totygno), attivo alt+f11, mi appare la macro, vado sul foglio 1 e scrivo il numero sotto l'ultimo scritto in precedenza, ma nella cella A1 del foglio 2 non c'è ...



  • di totygno71 data: 26/03/2013 20:45:03

    forse ho capito male allora...
    io ho capito che vuole l'ultimo dato digitato... o sbaglio???

    P.s. secondo me santumberto è clone di VF ^_^



  • di Vecchio Frac data: 26/03/2013 20:46:24

    @Santuberto
    E' solo un problema di attivazione delle macro.
    Che versione hai di Excel?





  • di mabolsie data: 26/03/2013 20:47:15

    Allora se le cose stanno come dice vecchioFrac bisogna lavorare con la funzione dataora e far rilevare il numero seriale della dataora al momento dell'inserimento dell'ultimo valore




  • di Vecchio Frac data: 26/03/2013 20:48:24

    @Santuberto, per cortesia interpretaci questa tua frase:
    "A me interesserebbe far apparire l’ultimo numero scritto (non di ogni colonna, ma solo l’ultimo in assoluto)"

    Se ti basta avere l'ultimo numero di volta in volta inserito, in qualsiasi posizione del calendario lo metti, è un conto, e va benissimo il codice di totygno; se invece ti serve l'ultima entry del giorno più avanti del calendario, è un altro discorso.





  • di Santuberto (utente non iscritto) data: 26/03/2013 20:51:07

    Buonasera, Vecchio Frac. Hai puntualizzato correttamente quelle che sono le mie esigenze.



  • di Vecchio Frac data: 26/03/2013 20:53:33

    @max
    Esagerato :)
    Stabilito il range dei valori fin lì inseriti, basta ricavare l'ultima colonna, quindi scorrere dall'ultima riga alla prima di quella colonna, il primo valore che trovi è l'ultimo inserito ^_^





  • di Vecchio Frac data: 26/03/2013 20:55:24

    @Santuberto
    Che versione hai di Excel?
    E qual è l'interpretazione autentica della tua esigenza?
    a) voglio l'ultimo valore di volta in volta inserito, anche se non è l'ultimo del calendario;
    -oppure-
    b) voglio l'ultimo valore che compare nel calendario, anche se successivamente ne inserisco altri in date antecedenti





  • di Santuberto (utente non iscritto) data: 26/03/2013 20:55:32

    Sempre per i messaggi che si accavallano, arrivo ancora in ritardo. Nel file allegato, se io inserisco un numero nella cella M25, devo avere questo numero nella cella A1 del foglio 2 I numeri vanno inseriti senza mai tornare indietro: una volta passato l'orario, non posso scrivere nulla sulle celle precedenti. A me interessa sempre l'ultimo numero inserito. Ciao e grazie



  • di Santuberto (utente non iscritto) data: 26/03/2013 20:57:34

    Per Vecchio Frac: l'opzione b (l'ultimo del calendario)



  • di totygno71 data: 26/03/2013 20:57:46

    @VF
    vedi che... "come al solito" ho sempre ragione io.... ^_^
    bahahahah ^_^



  • di Santuberto (utente non iscritto) data: 26/03/2013 21:03:56

    Vecchio Frac: "Che versione hai di Excel?"
    Sull'icona c'è scritto Excel 2007. Per il resto non saprei dove cercare.



  • di Vecchio Frac data: 26/03/2013 21:10:50

    Intanto faccio rodere totygno, che ha cannato in pieno a capire il tuo problema ^_^
    E ti allego il codice che fa al caso tuo.
    O meglio, una mia versione, che non è detto che sia la migliore.
    Funziona solo se la struttura della tabella è quella dell'esempio che ho visto negli allegati.
    Per attivare le macro in Excel 2007, la procedura non è difficile, dovrebbe essere così, prova (io non ho Excel 2007):
    Quoto qualcosa che ho trovato in Rete:
    "
    Dal Pulsante Office (per intenderci quello nuovo in alto a sinistra con l'iconcina di Office) selezioni "Opzioni di Excel"
    Da li selezioni dall'elenco a sx la voce "Centro protezione", e clicchi a dx sul bottone "Impostazione Centro Protezione"
    Li selezioni "Impostazioni macro" dall'elenco a sx e attivi "Attiva tutte le macro" nell'elenco a dx
    "
     
    Sub find_last()
    Dim r As Range, i As Integer
    Dim bDone As Boolean
    
        Set r = [c1].CurrentRegion
        
        For i = r.Columns.Count To 1 Step -1
            If WorksheetFunction.CountA(r.Columns(i)) - 2 > 0 Then
                bDone = True
                Exit For
            End If
        Next
        If Not bDone Then
            MsgBox "Nella tabella non c'è neanche un valore inserito :)"
            Exit Sub
        End If
        
        Set r = [c1].CurrentRegion.Resize([c1].CurrentRegion.Rows.Count, 1).Offset(, i - 1)
        For i = r.Rows.Count To 3 Step -1
            If r.Cells(i) <> "" Then
                Foglio2.[a1] = r.Cells(i)
                MsgBox "Ultimo valore trovato e inserito in foglio2: --> " & r.Cells(i)
                Exit Sub
            End If
        Next
       
    End Sub
    






  • di Santuberto (utente non iscritto) data: 26/03/2013 21:19:22

    Ho modificato le impostazioni. Prima era nella scelta "Disattiva tutte le macro con notifica". Ho provato nel file di totygno ed in quello originale (il mio) ma ...
    Comincio a sentirmi in imbarazzo. La vs cortesia, potrebbe avere un limite.



  • di totygno71 data: 26/03/2013 21:57:49

    Quindi????



  • di Raffaele_53 (utente non iscritto) data: 26/03/2013 22:08:29

    Se hai attivato le macro, come detto da VF
    "Attiva tutte le macro(scelta non consigliata...ecc ecc)"
    La macro di totygno funziona.

    Non devi aprire l'editor, solo scrivere un numero in foglio1 appena l'hai scritto e premuto INVIO oppure cambiato cella, nel Foglio2 in cella A1 appare il numero scritto.

    Se non funziona ancora, forse hai (sempre nell'icona d'excel) a sinistra dove c'è FORMULE e poi a destra in Opzioni di Calcolo, la cella AUTOMATICO disattivata.

    Ps. Secondo me, sia totygno che VF in qualche modo errano (posso sbagliarmi)
    @totygno se scrivo un numero OK, se lo cancello subito dopo (cella vuota)
    ...
    anche per altri numeri!
    Foglio2.[a3].Value =Foglio2.[a2]
    Foglio2.[a2].Value =Foglio2.[a1]
    Foglio2.[a1].Value = Target.Value
    ...
    potrebbe tornare utile per sapere il secondo/terzo/quarto digitato per ultimo

    @VF , credo che non intendeva solo nell'ultima cella dell'ultima colonna.



  • di Mabolsie (utente non iscritto) data: 26/03/2013 22:17:37

    A questo punto visto che non riesci a far funzionare l'ambaradan, ti consiglierei un banale rimedio, visto che (se ho capito bene ) non devi fare calcoli sul foglio1 metti in ogni cella un riferimento numerico tipo codice tra parentesi es. 1.530(10).
    Cosi con un rapido colpo d'occhio sul foglio individui l'ultimo dato immesso e te lo trasferisci sul foglio2.

    Ciao Max



  • di Vecchio Frac data: 26/03/2013 22:45:16

    @Raffaele
    Hai provato il mio ultimo codice? vedrai che non tratta il dato "nell'ultima cella dell'ultima colonna", ma qualsiasi dato "ultimo" inserito, e infatti se la tabella è vuota ti informa e si ferma :)

    @max
    La soluzione non va bene. Magari per adesso non deve fare calcoli ma in un futuro?

    @Santuberto
    cit. " La vs cortesia, potrebbe avere un limite."
    ---> Questa affermazione, almeno nei miei riguardi, è falsa ^_^
    Non riesco a capire, se hai le macro attivate, cosa ci sia che non va.





  • di Raffaele_53 (utente non iscritto) data: 26/03/2013 23:17:07

    Penso/credo che Ti sbagli (correggimi se Vuoi)
    Appena fatto, inserisco 5 in qualsiasi cella e usando il codice di totygno funziona.

    Faccio partire il Tuo e msgbox 2.345
    Inserisco in M:26 3333 e msgbox 3.333
    Inserisco in M:12 2222 e msgbox 3.333



  • di Raffaele_53 (utente non iscritto) data: 26/03/2013 23:31:17

    @VF
    Cancellando tutta la tabella che.....
    E solo un esmpio, dato che dice fino alla fine dell'anno.

    La Tua macro mi dice 24 ossia cella B:26
    Sicuramente sbaglio, però devi spiegarTi.



  • di Santuberto (utente non iscritto) data: 27/03/2013 08:28:17

    Buongiorno e grazie a tutti. Le macro sono attiavate; La scelta Automatico è attivata (spuntata; selezionata ...). Una cosa ho notato: il file che apro, è "solo lettura". Può significare qualcosa?



  • di Santuberto (utente non iscritto) data: 27/03/2013 08:35:00

    Questa mattina, prima di rispondere (messaggio delle 08.28) avavo provato e non funzionava. Ora, rileggendo quanto scritto da Raffaele 53, ho fatto la prova senza la macro (senza alt+f11) e il tutto funziona. Ma non si doveva attivare alt+f11 per far funzionare il file? In questa situazione, se non devo utilizzare alt+f11, come faccio a trasportare la funzione nel file che mi interessa? Ho combinato qualcosa io, oppure c'è qualche strana impostazione, oppure ...



  • di Vecchio Frac data: 27/03/2013 08:40:33

    Buongiorno a tutti :)

    @Raffaele
    Il mio codice funziona perfettamente, infatti 24+2 sono i valori della prima colonna.
    E' ovvio (errore mio) che la riga
    For i = r.Columns.Count To 1 Step -1
    andava scritta così:
    For i = r.Columns.Count To 2 Step -1
    affinchè non venisse conteggiata la prima colonna della tabella :)

    @Santuberto
    Alt F11 serve solo per accedere all'area di codice e scrivercelo; per farlo funzionare poi devi stare nel foglio, premere Alt F8 e scegliere la macro da eseguire.
    Sola lettura? uhm :)





  • di Santuberto (utente non iscritto) data: 27/03/2013 08:51:35

    Un’ulteriore precisazione. Nel file postato (che è solo un esempio) io devo inserire ogni giorno dei dati. In realtà l’orario di lavoro considerato è dalle 08.00 alle 22.00. Quando mi arriva un rapportino, io devo inserire un numero nella cella corrispondente a quell’ora di quel giorno. Non devo mai inserire numeri nelle celle corrispondenti alle ore precedenti. Inoltre, nel file ci sono anche altri calcoli e numeri. Io devo avere nell’altro foglio solo l’ultimo numero inserito nelle celle dalle 08 del 1° gennaio alle ore 22 del 31 dicembre



  • di Vecchio Frac data: 27/03/2013 09:24:47

    cit. " Io devo avere nell'altro foglio solo l’ultimo numero inserito nelle celle dalle 08 del 1° gennaio alle ore 22 del 31 dicembre"
    ---> E' come avevo capito io.
    Allora il mio codice (con la modifica di stamattina) funzionerà correttamente secondo questa indicazione.





  • di Santuberto (utente non iscritto) data: 27/03/2013 09:33:13

    OK! Grazie mille



  • di Raffaele_53 (utente non iscritto) data: 27/03/2013 17:56:05

    A diventar vecchi, si diventa rimbambiti "si capisce solo il giorno dopo"
    Ultimo numero riferito all'ultima cella scritta nell'ultima colonna (tra la riga 10 = ore 8.00 e riga 24 = ore 22.00, intese come orario).

    "Non come inteso all'ultimo numero digitato sulla tastiera"

    Se Desideri sulla macro di VF, puoi mettere sostituire la 1° riga con
    Private Sub Worksheet_Change(ByVal Target As Range) 'questa avvia la macro in automatico.

    Forse, dopo la riga
    MsgBox "Nella tabella non c'è neanche un valore inserito :)"
    Inserire una riga con---> Foglio2.[a1] = "" 'potrebbe tornare utile con l'anno nuovo

    e mettere l'apostrofo davanti alla riga
    'MsgBox "Ultimo valore trovato e inserito in foglio2: --> " & r.Cells(i) 'evita di vedere il messaggio



  • di Santuberto (utente non iscritto) data: 28/03/2013 14:10:24

    Buongiorno Raffaele_53. Grazie infinite per il suggerimento e la disponibilità. Ora sono qui in ufficio solamente di passaggio. Proverò tra qualche giorno, al mio rientro. Un cordiale saluto a tutti