Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Indicizzare date fine mese

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

Re: Indicizzare date fine mese

Postdi Statix » 16/05/12 15:20

Ciao Flash30005,
come detto prima per me va bene già così,
per evidenziare correttamente l'ultima del mese ho messo una condizione in fondo alla macro che mi elimina una cella vuota in su ,così va tutto ok.
ti ringrazio tantissimo.
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Sponsor
 

Re: Indicizzare date fine mese

Postdi Flash30005 » 16/05/12 15:26

ho aggiunto l'edit nel mio post precedente con la macro che fa un po' questo e quello...
Edit che riporto qui

Nel frattempo ho modificato così
da 1 a 3 avrai le prime tre estrazioni del mese
con 4 impostato in J2 avrai l'ultima estrazione del mese
Codice: Seleziona tutto
Sub TrovaEstr()
UR = Worksheets("Archivio").Range("A" & Rows.Count).End(xlUp).Row
Range("B3:B10000").ClearContents
MM = ""
CS = 0
For RR = 3 To UR
    If Len(Range("C" & RR).Value) > 9 Then
        If Month(Range("C" & RR).Value) <> MM Then
            If Range("J2").Value <> 4 Then
                For RS = 1 To 4
                    If Range("J2").Value = RS Then
                        CS = CS + 1
                        Range("B" & RR).Value = CS
                        RR = RR - 1
                    End If
                    RR = RR + 1
                Next RS
                MM = Month(Range("C" & RR).Value)
            Else
                If MM <> "" Then
                CS = CS + 1
                Range("B" & RigaP).Value = CS
                End If
            End If
        Else
            RigaP = RR
        End If
        MM = Month(Range("C" & RR).Value)
    End If
Next RR
End Sub


ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Indicizzare date fine mese

Postdi Statix » 16/05/12 15:36

ok perfettissima,
nel frattempo mi sono divertito un pò cercando di capire la tua macro,
nel caso avrei bisogno di altre scelte ho capito dove e cosa modificare .
grazie ancora.
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Indicizzare date fine mese

Postdi ricky53 » 16/05/12 15:39

Ciao Statix,
sono stato fuori per lavoro e ... arrivo a giochi fatti (per merito di Flash e Anthony) ... avevo buttato giù qualcosa ma non ho concluso ... lascio stare visto che hai risolto.
Comunque era simile a quanto ti ha inviato Flash (un grosso CIAO) quindi ... alla prossima.


Solo per ottimizzare il codice: io inserirei, ad inizio della macro, la seguente istruzione
Codice: Seleziona tutto
    Application.EnableEvents = False


e alla fine ripristinerei con
Codice: Seleziona tutto
    Application.EnableEvents = True


Questo per evitare di richiamare (nell'esempio 880 volte), al cambiamento dei valori che vengono scritti nelle celle delle colonna "B", l'evento
"Worksheet_Change"
che andrebbe ad eseguire il codice contenuto in questo evento
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$J$2" Then Exit Sub
   TrovaEstr
End Sub



Statix: alla fine di tutto invierai il codice finale utilizzato?
Grazie
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Indicizzare date fine mese

Postdi Statix » 16/05/12 16:00

Ciao Ricky53,
credo che non c'è ne sia bisogno di ripostare il codice,
in quanto ho utilizzato quello che ha postato Flash30005 nell'ultimo post senza ulteriori modifiche,
rispecchiava i riferimenti da me postati in precedenza,
ti ringrazio tantissimo.
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Indicizzare date fine mese

Postdi ricky53 » 16/05/12 16:11

Ciao,
BENE !

Ricordati di inserire le due istruzioni che ti ho consigliato.

Buon proseguimento e ... alla prossima.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Indicizzare date fine mese

Postdi Flash30005 » 16/05/12 16:38

Quanto dice Ricky è correttissimo
Non inserisco mai le righe codice di velocizzazione (calcolo manuale e update screen e nemmeno di blocco eventi) nei miei test, una volta finito si possono aggiungere.
Pertanto puoi inserire le classiche righe codice qui
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$J$2" Then Exit Sub
    Application.ScreenUpdating = False
    Application.Calculation = xlManual
    Application.EnableEvents = False
   TrovaEstr
   Application.Calculation = xlCalculationAutomatic
   Application.ScreenUpdating = True
   Application.EnableEvents = True
End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Indicizzare date fine mese

Postdi scossa » 16/05/12 19:10

Flash30005 ha scritto:Pertanto puoi inserire le classiche righe codice qui
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$J$2" Then Exit Sub
    Application.ScreenUpdating = False
    Application.Calculation = xlManual
    Application.EnableEvents = False
   TrovaEstr
   Application.Calculation = xlCalculationAutomatic
   Application.ScreenUpdating = True
   Application.EnableEvents = True
End Sub



Solo una considerazione personale, riguardo Application.Calculation: secondo me sarebbe meglio memorizzare il valore ante-disabilitazione e ripristinarlo alla fine del codice. L'utente potrebbe avere come impostazione predefinita il calcolo manuale (ad esempio perché lavora con file molto pesanti e magari ne ha uno già aperto) e non è simpatico cambiargli l'impostazione sotto il naso :o :

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim bCalc As XlCalculation
  If Target.Address <> "$J$2" Then Exit Sub
  With Application
    bCalc = .Calculation
    .Calculation = xlManual
    .ScreenUpdating = False
    .EnableEvents = False
  End With
 
    TrovaEstr
 
  With Application
    .EnableEvents = True
   .ScreenUpdating = True
   .Calculation = bCalc
  End With
End Sub
Bye!
scossa

Se tu hai una mela, e 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)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Indicizzare date fine mese

Postdi Statix » 19/05/12 10:43

Ciao Flash30005,
ho riscontrato un piccolo inconveniente della macro,
se inizio estrazioni le date non incominciano dall'inizio del mese,
mi sbaglia,
quando imposto a 1, 2, e 3 ,questo capita solo al primo mese dell'inizio estrazioni,poi le successive vanno bene
mentre a 4 quella fine mese va sempre bene .
visto che ci siamo ,se è possibile portarle fino a 8/9 e fine mese,
attualmente il 4 mi fa il fine mese.
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Indicizzare date fine mese

Postdi Statix » 19/05/12 11:11

Ho notato che se inizio estrazioni incomincia con una data fine mese,
e facendo l'indicizzazione a 4 la macro mi da errore.
da quello che ho potuto capire i problemi dipendono tutto dall'estrazioni del primo mese.
per i successivi con qualsiasi indicizzazione va bene.
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Indicizzare date fine mese

Postdi Flash30005 » 19/05/12 15:38

Avrai capito che trattasi di "anomalie" dovute all'archivio che possono essere previste da una macro (correzioni delle eccezioni) ma devi dire tu cosa vorresti avere in tali casi.
Se l'archivio inizia con una data fine mese, cosa vorresti avere in caso inserisca 1 o 2 o 3 o 4
e con due date fine mese?
Etc Etc
Tenendo conto che in un mese puoi avere anche 14 estrazioni (14 date).

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Indicizzare date fine mese

Postdi Statix » 19/05/12 20:04

Ciao Flash30005
quello che vorrei dalla macro è che se imposto 1 mi deve indicizzare tutte le date della prima estrazione del mese,
idem con 2 le seconde,3 le terze,e così fino a 8 + l'ultima del mese, 9 opzioni
1-2-3-4-5-6-7-8--fine mese,
in effetti le estrazioni almeno quelle recenti che io uso possono essere 12/13/14 estrazioni mensili,
a me basta fino a 8 più l'ultima del mese,
considerando che il problema si verifica con le prime estrazioni del mese,(uso archivio scorrevole ma fisso a 1000
estrazioni,quindi aggiungo la nuova e tolgo l'ultima più vecchia,facendo in questo modo puo capitare che del primo mese ci possa essere anche una sola estrazione,se è l'ultima del mese la macro da errore,
diversamente sbaglia indicizzazione,mettendo a 1 considera l'ultima del mese la prima per poi proseguire correttamente.
vedo la cosa un pò complicata proprio a causa del divario delle quantità di estrazioni per mese,
eventualmente opterei di non prenderle in considerazione,cioè saltare il primo mese ,
faccio un riepilogo
uso le ultime 1000/1500 estrazioni
in un mese ho minimo 9 estrazioni ad un massimo di 14,
quindi rientro con il range di selezione da 1 a 8 +fine mese,
le estrazioni parzializzate del primo mese non le prendiamo in considerazione
e il gioco è fatto,almeno spero.
poi non sò se hai qualche idea migliore.
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Indicizzare date fine mese

Postdi Statix » 19/05/12 20:14

Stò valutando di spostare le estrazioni ogni mese,
invece che singolarmente,così di avere sempre la data dell'inizio del mese,
però bisogna sempre sistemare la macro,
potrebbe essere una buona idea.
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Indicizzare date fine mese

Postdi Statix » 19/05/12 20:20

come vedi se imposto a 6 il primo mese sbaglia il secondo va bene.

Immagine
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Indicizzare date fine mese

Postdi Statix » 19/05/12 20:55

Ciao Flash30005,
ho deciso di optare per l'ultima soluzione,
modifica la macro che seleziona da 1-8+ fine mese,
l'archivio lo faccio partire dalla prima del mese,
al resto poi ci penso io,eventualmente faccio una colonna appoggio e risolvo entrambi i casi.
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Indicizzare date fine mese

Postdi Flash30005 » 19/05/12 21:29

Hai aggiunto numeri di estrazioni nella convalida quindi l'opzione 4 che prende in cosiderazione l'ultima estrazione mese non è più valida

prova questa macro
Codice: Seleziona tutto
Sub TrovaEstr()
UR = Worksheets("Archivio").Range("A" & Rows.Count).End(xlUp).Row
Range("B3:B10000").ClearContents
MM = Month(Range("C3").Value)   '<<<<<<<<<<<<< inizio archivio
CS = 0
ES = Range("J2").Value
For RR = 3 To UR
    If Len(Range("C" & RR).Value) > 9 Then
        If Month(Range("C" & RR).Value) <> MM Then
                For RS = 1 To ES
                    If ES = RS Then
                        CS = CS + 1
                        Range("B" & RR).Value = CS
                        RR = RR - 1
                    End If
                    RR = RR + 1
                Next RS
                MM = Month(Range("C" & RR).Value)
        Else
            RigaP = RR
        End If
        MM = Month(Range("C" & RR).Value)
    End If
Next RR
End Sub


Guarda nota nella macro, inoltre adatta la colonna data estrazione, ora "C", alla tua disposizione dati

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Indicizzare date fine mese

Postdi Statix » 19/05/12 21:46

ok funziona da 1 a 9,
manca fine mese,
inoltre si è presentato un altro problemino,
se faccio la ricerca a 5 o 6 o7
e alla fine dell'archivio mancano le estrazioni mi va in errore.
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Indicizzare date fine mese

Postdi Flash30005 » 20/05/12 06:19

L'elenco nella convalida dovrà essere così
Codice: Seleziona tutto
1;2;3;4;5;6;7;8;9;FM


e poi prova questa macro
Codice: Seleziona tutto
Sub TrovaEstr()
UR = Worksheets("Archivio").Range("A" & Rows.Count).End(xlUp).Row
If UR < 3 Then UR = 3
Range("B3:B" & UR).ClearContents
MM = Month(Range("C3").Value)
CS = 0
Application.EnableEvents = False
ES = Range("J2").Value
For RR = 3 To UR
    If Len(Range("C" & RR).Value) > 9 Then
        If Month(Range("C" & RR).Value) <> MM Then
            If ES <> "FM" Then
                For RS = 1 To ES
                    If ES = RS Then
                        CS = CS + 1
                        If Range("C" & RR).Value <> "" Then Range("B" & RR).Value = CS
                        RR = RR - 1
                    End If
                    RR = RR + 1
                Next RS
                MM = Month(Range("C" & RR).Value)
            Else
                CS = CS + 1
                If MM <> "" Then Range("B" & RigaP).Value = CS
            End If
        Else
            RigaP = RR
        End If
        MM = Month(Range("C" & RR).Value)
    End If
Next RR
Application.EnableEvents = True
End Sub

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Indicizzare date fine mese

Postdi Statix » 20/05/12 09:35

Ciao Flash30005,
purtroppo per il fine mese non ci siamo,la macro mi da errore.
la stessa cosa capita se le estrazioni sono inferiori al numero selezionato
allego la foto inizio e fine archivio.
per essere precisi ti ricordo che la prima estrazione dell'archivio è sempre la prima del mese.
Immagine

Immagine

Immagine

Immagine
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Indicizzare date fine mese

Postdi Statix » 20/05/12 14:37

Ho risolto il problema delle ultime estrazioni,
mettendo delle celle di controllo,
una mi controlla il passaggio dell'ultimo mese in corso con quello precedente,
dandomi il rif.riga ,poi passo il valore a UR
per il FM aumento di 1
in un'altra cella conto le ultime estrazioni del mese in corso ,se il valore e <= alla selezione
parte la macro altrimenti mi esclude il mese in corso,e calcola tutte le altre estrazioni,
l'unica cosa rimasta è la correzione della macro che non calcola il FM,
attualmente sono costretto ad usare 2 macro,
una per il FM. e l'altra da 1 a 9
un pò ingegnoso ma funziona alla grande,visto che è difficilissimo capire se l'ultima estrazione del mese in corso sia veramente l'ultima del mese,ad esempio se l'ultima è il 29/05/2012,può capitare che il giorno dopo ne fanno un altra 30/05/2012 ,sono casi che capitano nei giorni festivi.
mentre nei mesi precedenti il salto si può controllare perche l'evento è già avvenuto.
Statix
Windows 7,
Office 2010,
Statix
Utente Senior
 
Post: 1078
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "Indicizzare date fine mese":


Chi c’è in linea

Visitano il forum: albval, patel e 24 ospiti