Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

cerca date più vecchie di oggi

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

cerca date più vecchie di oggi

Postdi femon » 04/04/17 20:36

Salve a tutti,
avrei bisogno di una macro che mi cerca nella colonna c del foglio1 tutte le date più vecchie rispetto ad oggi, e le intere righe corrispondenti le taglia e le incolla nel foglio2 .
In pratica quando eseguo la macro mi toglie tutte le righe del foglio1 che in colonna c hanno una data già superata e mi mantiene le righe che hanno data uguale ad oggi o maggiori. Le righe tolte vanno ad incrementarsi ogni volta nel foglio2 che mi fa da archivio storico.
Grazie in anticipo a chi mi sa aiutare.

Dimenticavo, utilizzo Excel 2013
femon
Utente Junior
 
Post: 88
Iscritto il: 12/03/14 18:51

Sponsor
 

Re: cerca date più vecchie di oggi

Postdi alfrimpa » 04/04/17 21:15

Re in allega un file di esempio con poche righe.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: cerca date più vecchie di oggi

Postdi femon » 04/04/17 21:29

femon
Utente Junior
 
Post: 88
Iscritto il: 12/03/14 18:51

Re: cerca date più vecchie di oggi

Postdi alfrimpa » 04/04/17 23:01

Ciao Femon

Con questa macro copi tutti i record che hanno la data inferiore all'oggi dal foglio1 al foglio2

Codice: Seleziona tutto
Sub Spostadate()
Dim i As Long
Dim ur As Long
Dim lr As Long
ur = Worksheets("Foglio1").Cells(Rows.Count, "C").End(xlUp).Row
For i = ur To 1 Step -1
lr = Worksheets("Foglio2").Cells(Rows.Count, 1).End(xlUp).Row
    If Worksheets("Foglio1").Range("c" & i).Value < Date Then
        Worksheets("Foglio1").Range("a" & i & ":" & "E" & i).Copy Worksheets("Foglio2").Cells(lr + 1, 1)
    End If
Next i
End Sub


Ho fatto il Copia perché facendo il Taglia Excel mi è crashato più volte.

Non so se era questo quel che volevi.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: cerca date più vecchie di oggi

Postdi Anthony47 » 05/04/17 00:04

Io ho capito che bisogna filtrare per date >= Oggi; quindi
Codice: Seleziona tutto
If Worksheets("Foglio1").Range("c" & i).Value >= Date Then

L'alternativa potrebbe essere una macro autoregistrata che usa il filtro su colonna C.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17449
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cerca date più vecchie di oggi

Postdi femon » 05/04/17 10:44

Grazie alfrimpa,
ho provato la macro ma purtroppo ho queste anomalie:

1) le righe copiate nel foglio2 hanno solo 5 colonne (fino alla E) mentre a me interesserebbe che tutta la riga venisse copiata;

2) nel foglio1 (come mi hai accennato nella risposta) mi sono comunque rimaste le righe con date vecchie mentre a me servirebbe avere solo quelle di oggi e quelle future.

Il suggerimento di Anthony invece non so come e dove registrarlo per poterlo provare... scusate ma sono piuttosto ignorante in materia...
Grazie ancora.
Federico.
femon
Utente Junior
 
Post: 88
Iscritto il: 12/03/14 18:51

Re: cerca date più vecchie di oggi

Postdi Anthony47 » 05/04/17 14:42

Per le istruzioni basilari su come registrare una macro:
viewtopic.php?f=26&t=103893&p=622593#p622593

L'ho fatto io per te ottenendo questo codice, non ottimizzato ma funzionante:
Codice: Seleziona tutto
Sub FiltraOggi()
'Macro registrata by Anthony
'
    ActiveSheet.Range("$C$1:$C$10000").AutoFilter Field:=1, Criteria1:= _
        ">=" & (Int(Now())), Operator:=xlAnd            'Modificata
    Range("A2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy
    Sheets("Foglio2").Select
    Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select    'Modificata
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("A2").Select
    Sheets("Foglio1").Select
    ActiveSheet.Range("$C$1:$C$10000").AutoFilter Field:=1
    Range("A1").Select
End Sub
Ovviamente rispetto al codice registrato ho dovuto fare un paio di modifiche per rendere il tutto riciclabile, ma probabilmente ce l'avresti fatta anche da solo.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17449
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cerca date più vecchie di oggi

Postdi femon » 06/04/17 10:10

Grazie Anthony,
le cose stanno andando meglio, ma ho ancora qualche anomalia:

in particolare ho provato oggi a fare la macro (06 aprile) ma nel periodo che mi "seleziona" non mi considera il mese di aprile ed il mese di maggio mentre mi seleziona (e poi copia nel foglio2) da giugno in poi......
Come mai da oggi a fine maggio non lo considera?
Forse qualche problema di formato data?

Grazie ancora.
Federico
femon
Utente Junior
 
Post: 88
Iscritto il: 12/03/14 18:51

Re: cerca date più vecchie di oggi

Postdi Anthony47 » 06/04/17 12:09

Hummm...
Modifica l'istruzione di "filtra" in
Codice: Seleziona tutto
    ActiveSheet.Range("$C$1:$C$10000").AutoFilter Field:=1, Criteria1:= _
        ">=" & CLng((Int(Now()))), Operator:=xlAnd

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17449
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cerca date più vecchie di oggi

Postdi femon » 06/04/17 16:10

Perfetto Anthony,
funziona tutto alla grande.
Mi sei stato molto utile.
Grazie mille!!!!!!!!
Federico.
femon
Utente Junior
 
Post: 88
Iscritto il: 12/03/14 18:51


Torna a Applicazioni Office Windows


Topic correlati a "cerca date più vecchie di oggi":


Chi c’è in linea

Visitano il forum: Nessuno e 33 ospiti