Scelta della data precedente



  • Scelta della data precedente
    di pv78 data: 24/01/2015 10:40:27

    Buongiorno a tutti e grazie anticipatamente a chi vorrà darmi una mano.
    Il mio quesito è il seguente:ho un elenco di date da confrontare,e tra esse scelgo quella successiva alla data odierna.E questo è fatto.
    Il punto è:come faccio a far scegliere la data precente a quella selezionata?
    In pratica:rispetto alla data odierna,tra un elenco di date,vorrei scegliere quella successiva (già fatto) e quella precedente.

    Cordiali saluti



  • di scossa data: 24/01/2015 10:57:58

    cit.pv78: "scelgo quella successiva alla data odierna.E questo è fatto."

    Comincia col mostrare quello che hai fatto, magari allega il file così da avere tutti chiaro il contesto in cui operare.

    Una riflessione: se prima di postare la tua domanda avessi letto una richiesta uguale alla tua ma al contrario:
    "vorrei scegliere quella precedente (già fatto) e quella successiva, come faccio?"
    non avresti pensato: "mannagia, 'sto xxxxxx, poteva essere un po' più collaborativo e dire come ha fatto!"?


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di Mister_x (utente non iscritto) data: 24/01/2015 11:02:10

    ciao

    in questo caso servirebbe un tuo file per valutare come usere le funzioni adeguate in base ai tuoi dati
    comunque sul mio file che posto ho utilizzato due funzioni
    INDIRETTO() e CONFRONTA()
    i miei dati in colonna A:A
    in C1 la data di ricerca
    in D1 cerco quella maggiore =INDIRETTO("A"&CONFRONTA(C1+1;A1:A23;0))
    in E1 quella minore =INDIRETTO("A"&CONFRONTA(C1-1;A1:A23;0))

    ciao







  • di Santuberto (utente non iscritto) data: 24/01/2015 12:08:28

    Buongiorno Mister_X e buongiorno a tutti. Trovando molto utile l’argomento, provo ad intromettermi anch’io. Nel file allegato, la formula trova solamente la data del giorno prima e del giorno dopo. La mia esigenza, però, è che come data superiore, dorei trovare 18/01/15. E’ possibile? Grazie mille a chi mi potrà aiutare.



  • di Santuberto (utente non iscritto) data: 26/01/2015 05:13:25

    Buongiorno a tutti. Sono in partenza (con la forte speranza di tornare prestissimo), per cui, se non darò seguito ad eventuali risposte alla mia domanda, non si scambi il mio silenzio per noncuranza. Un cordiale saluto.



  • di ninai (utente non iscritto) data: 26/01/2015 07:42:10

    Ciao
    nel caso specifico basta:
    =INDIRETTO("A"&CONFRONTA(C1;A1:A23;0)+1)
    ma si può fare in tanti modi, anche in base alla struttura e collocazione dei dati



  • di pv78 data: 26/01/2015 08:59:49

    La funzione che ho usato per trovare la data successiva la trovate nel foglio alleato.....

    Cordiali saluti



  • di Mister_x (utente non iscritto) data: 26/01/2015 10:27:22

    ciao

    Visto il tuo file con la funzione inserita , e fatto due prove con aggiunte di date questa tiene sempre in considerazione la data che viene dopo a quella che tu definisci
    da come ho capito io la tua ricerca va fatta sulla data che viene prima e dopo a OGG() in un certo database di date, dove queste non sono in ordine di data, quindi non progressive,
    o veramente quella che viene prima o dopo la data che tu metti per la ricerca.
    nel mio caso ho utilizzato due funzioni da inserire in un modulo dove la prima cerca la data dopo a quella che tu immetti e la seconda quella prima
    io ho utilizzato oggi() per fare in fretta ma puoi utilizzare una qualsiasi data
    utilizzo
    =data_dopo(OGGI();A2:A8) trova quella piu' maggiore alla data immessa
    =data_prima(OGGI();A2:A8) quella piu' vicina minore alla immessa di ricerca

    Date
    30/04/2015
    11/07/2015
    09/10/2015
    11/12/2014
    11/06/2015
    15/12/2014
    24/01/2015
    Dopo Prima
    30/04/2015 24/01/2015

    riallego il file con le funzioni inserite

    ciao
     
    Option Explicit
    
    Function data_dopo(DataRif As Date, RangeRic As Range) As Long
    Application.Volatile
    Dim i As Variant
    Dim Dataver As Long
    Dataver = 100000
     For Each i In RangeRic
       If i > DataRif Then
         If Dataver > i Then
         Dataver = i
         End If
       End If
     Next
    data_dopo = Dataver
    End Function
    '''--------------------------------------------
    Function data_Prima(DataRif As Date, RangeRic As Range) As Long
    Application.Volatile
    Dim i As Variant
    Dim Dataver As Long
    Dataver = 0
     For Each i In RangeRic
       If i < DataRif Then
         If Dataver < i Then
         Dataver = i
         End If
       End If
     Next
    data_Prima = Dataver
    End Function
    






  • di scossa data: 26/01/2015 10:38:28

    @pv78: nella tua tabella
    Date
    30/04/2015
    11/07/2015
    09/10/2015
    11/12/2014

    la data successiva ad OGGI() è 30/04/2015 e non 11/07/2015 come risulta dalla tua formula:
    {=SCARTO(A$2;CONFRONTA(MIN(SE(A2:A8-OGGI()>0;A2:A8-OGGI()));(A2:A8-OGGI());0);;)}

    La data successiva la puoi ottenere con:
    =INDICE(A2:A8;CONFRONTA(VERO;INDICE((A2:A8)-OGGI()>0;);0);)


    la precedente con:
    =INDICE(A2:A8;CONFRONTA(VERO;INDICE(OGGI()-(A2:A8)>0;);0);)

    entrambe NON matriciali, da confermare col semplice invio.




    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di ninai (utente non iscritto) data: 26/01/2015 12:49:00

    Scossa

    oggi hai sprecato tu :

    precedente:
    =MAX(INDICE((A2:A5
    successiva:
    =MIN(SE((A2:A5>OGGI());A2:A5))
    questa è matriciale




  • di ninai (utente non iscritto) data: 26/01/2015 13:00:17

    =MAX(INDICE((A2:A5



  • di ninai (utente non iscritto) data: 26/01/2015 13:04:11

    non riesco a far comparire la formula correttamente:
    =MAX(INDICE((A2:A5minoreOGGI())moltiplicatoA2:A5;))



  • di Mister_x (utente non iscritto) data: 26/01/2015 13:14:24

    ciao Ninai
    da un consiglio di V.F. , anteporre uno spazio al segno di <

    =MAX(INDICE((A2:A5 < OGGI())*A2:A5;))

    ciao





  • di scossa data: 26/01/2015 13:44:06

    cit. ninai: "oggi hai sprecato tu "


    Se dobbiamo optare per la matriciale allora facciamolo anche per la precedente:

    =MAX(SE((A2:A8 < OGGI());A2:A8))



    P.S.: la mia per la data precedente è comunque sbagliata in quanto se ci fosse un 11/11/2014 in una cella prima del 11/12/2014 restituirebbe 11/11/2014


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)




  • di pv78 data: 27/01/2015 08:07:36

    La formula non matriciale proposta funziona benissimo!
    Grazie per il vostro aiuto.

    Cordiali saluti