CONFRONTA DATE



  • CONFRONTA DATE
    di Franci (utente non iscritto) data: 20/02/2013 11:21:00

    Buongiorno, avrei bisogno di una macro che mi confronti le DATE situate in una certa zona e/o area (es. A1:A25), con una singola data (es. B10) se quest'ultima è maggiore allora OK. Grazie



  • di Mister_x (utente non iscritto) data: 20/02/2013 11:44:52

    ciao
    perche' scomodare il VBA per fare questo lavoro quando si puo' fare tranquillamente in due modi

    primo modo in una cella metti la sequente formula
    =SE(B1>MAX(A1:A25);"OK";"NO")
    in questo caso se la data e' maggiore di qualsiasi data messa in a1:a25 ti da OK se falso ti ritorna NO
    altra possibilita'
    selezioni la cella B1
    formattazione condizionale
    la formula e'
    =B1>MAX(A1:A25)
    e metti nel formato un colore che ti piace per vero
    aggiungi un'altra condizione e metti
    =B1
    ciao da Mister_x





  • di Mister-x (utente non iscritto) data: 20/02/2013 11:48:07

    ciao
    ho visto che mi ha eliminato il secondo pezzo di formula

    te le posto sotto nel codice VBA


     
    =SE(B1>MAX(A1:A25);"OK";"NO")
    
    =B1>MAX(A1:A25) per il si
    
    =B1



  • di Mister_x (utente non iscritto) data: 20/02/2013 11:50:44

    niente
    continua a tagliare


     
    =SE(B1 maggiore MAX(A1:A25);"OK";"NO")
    
    =B1 maggiore MAX(A1:A25) per il si
    
    =B1 minore MAX(A1:A25) per il no
    






  • di Franci (utente non iscritto) data: 20/02/2013 16:30:52

    So benissimo che la soluzione puo essere una FUNZIONE, ma mi occorre una MACRO. Grazie per l'interesse



  • di Vecchio Frac data: 20/02/2013 17:31:57

    Mister_x ti ha dato un suggerimento valido, che puoi tradurre in codice VBA.
    Anzi puoi creare una Function personalizzata cui passare due argomenti, range in cui cercare e data di confronto, che ritorna True in caso di esito positivo (data > range di date).
    La mia domanda è, se la data di confronto deve essere superiore a tutte le celle del range o se basta che sia superiore a una di esse (questo è il caso dell'esempio che propongo).
     
    option explicit
    
    Public Function cfr_date(rng as range, d as date) as boolean
    dim cell as range
        for each cell in rng
            if d > cdate(cell) then
                cfr_date = true
                exit function
           end if
        next
    End Function






  • di Franci (utente non iscritto) data: 20/02/2013 18:51:55

    La data che definisco "UNICA" deve essere superiore a tutte quelle indicate nell'area di riferimento es. A1:A10



  • di Mister_x (utente non iscritto) data: 20/02/2013 19:10:03

    ciao

    dato che vuoi usare una macro, una sub() alternativa a quella di veccio frac, che saluto, e questa postata
    questa non fa altro che tutte le volte che cambi un valore an B1 a fare il confronto in A:A dandoti un messaggi positivo o negativo

    ciao da Mister_x
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("B1")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
      If Target > Application.Max(Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)) Then
       MsgBox "Dato Maggiore OK"
      Else
       MsgBox "Dato Minore NON Valido"
      End If
    Application.EnableEvents = True
    End Sub






  • di Franci (utente non iscritto) data: 20/02/2013 20:07:49

    OK provata e funzionante !!
    Ma.... scusate se continuo a chiedere, se volessi inserire il comando in una macro già esistente??