Risultati da 1 a 3 di 3

Discussione: Funzione MATCH con le date



  1. #1
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3209
    Versione Office
    Excel2010
    Likes ricevuti
    625
    Likes dati
    155

    Funzione MATCH con le date

    Salve a tutti
    Alcuni giorni fa mi sono imbattuto (ancora una volta) in un problema con le date.
    Un Utente chiedeva, fra le altre cose, il “confronto” fra due date elencate in due Fogli differenti. Ovvio che la prima funzione che viene in mente è MATCH ma, poiché il confronto doveva soggiacere ad altre condizioni, era necessario ricorrere al VBA.
    Di primo acchito, imposto il seguente codice:
    rg = Application.WorksheetFunction.Match(data,Foglio2.Range(elenco),0)
    e il VBA digrigna i denti perchè non può trovare corrispondenza.

    Nel rivedere il codice mi ricordo che in VBA il confronto per le date può esser fatto solo su numeri seriali. Dopo diversi tentativi andati a vuoto, desisto e (capriola) punto su un ciclo For … Next.
    Tutto va a posto al primo colpo.

    Ma non mi do per vinto e riprovo con MATCH. Creo due colonne (nascoste, una per ogni elenco) con le date trasformate in numeri seriali e rilancio la macro. Tutto OK in un batter d’occhio.

    Mi chiedo e vi chiedo, visto che la funzione MATCH è molto più veloce del ciclo For … Next, è possibile applicarla senza colonne d’appoggio e, se la risposta è si, in che modo?

    Allego file con elenchi date e macro.
    Ciao,
    Mario
    File Allegati File Allegati

  2. #2

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4016
    Versione Office
    2013
    Likes ricevuti
    1225
    Likes dati
    923

    Re: Funzione MATCH con le date

    Ciao Mario,
    hai provato semplicemente a dichiarare la variabile "dt1" come "Double"?
    Sembra funzionare:

    Codice: 
    Sub Con_MATCH()
    Sheets(1).Range("D:D").ClearContents
    Dim i As Long, dt1 As Double, rg As Long
    For i = 2 To 30
        If Sheets(1).Cells(i, 1) <> "" Then
            dt1 = Sheets(1).Cells(i, 1).Value
            'trovo la riga della data in Foglio2
            rg = Application.WorksheetFunction.Match(dt1, Sheets(2).Range("E2:E256"), 0) + 1
        End If
        If rg > 0 Then Sheets(1).Cells(i, 4) = CDate(Sheets(2).Cells(rg - 12, 5)): rg = 0
    Next i
    End Sub

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  3. I seguenti utenti hanno dato un "Like"


  4. #3
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3209
    Versione Office
    Excel2010
    Likes ricevuti
    625
    Likes dati
    155

    Re: Funzione MATCH con le date

    Ciao Tore
    grazie di cuore :274: mi ci stavo arrovellando il cervello:235:. E pensare che bastava così poco!

    Ecco perchè hai raggiunto così tanti gradi :18:

    Ciao, Mario

Discussioni Simili

  1. [Risolto] Date grafico con funzione scarto.
    Di AlessandroDV nel forum Domande su Excel in generale
    Risposte: 3
    Ultimo Messaggio: 09/03/17, 19:24
  2. [Risolto] Sommare dei numeri in funzione ad un intervallo di date
    Di sitolofi nel forum Domande su Excel in generale
    Risposte: 4
    Ultimo Messaggio: 03/01/17, 08:06
  3. [Risolto] funzione SE con le date 2
    Di vittorio dit nel forum Domande su Excel in generale
    Risposte: 4
    Ultimo Messaggio: 27/11/16, 15:46
  4. [Risolto] funzione se con le date
    Di vittorio dit nel forum Domande su Excel in generale
    Risposte: 11
    Ultimo Messaggio: 26/11/16, 20:26
  5. [Risolto] Funzione indiretto con le date
    Di Webmaximp nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 20/11/16, 16:02

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •