|
Domanda.
da Carlo
carghi@libero.it
Scusami, ma
nonostante il mio girovagare nel tuo sito, non sono riuscito a risolvere il
mio problema.
In un intervallo di celle, es: A1:A150 inserisco i giorni del mese corrente,
1,2,3.......fino a 31 se il mese è di 31 gg., però
per alcuni giorni il numero del giorno devo riperterlo più volte su più
celle. Es: di come potrebbe apparire l'intervallo menzionato sopra:
A1=1
A2=2
A3=3
A4=3
A5=3
A6=3
A7=4
A8=4
A9=4
A10=5
A11=6
ecc.ecc..........
Naturalmente l'intervallo di 150 celle quasi mai viene utilizzato per intero
ma garantisce tranquillamente la copertura dei mesi più
impegnativi. E' anche chiaro che nelle colonne adiacenti vengono inseriti i
dati relativi alla giornata lavorativa indicata nella colonna A. Mi è
successo che registrando a fine mese tutte le giornate lavorative, mi sia
dimenticato di registrare due giornate: qui nasce il mio quesito.........è
possibile ad es. in E1 visualizzare quante giornate sono state registrate
nell'intervallo A1:A150?.......in poche parole, quanti numeri differenti ci
sono nell'intervallo A1:A150?.......se dopo avere registrato il mese di
Agosto vedo comparire in E1 30..........sarei avvisato che mi sono
dimenticato di registrare una giornata,
Spero di essere stato chiaro..........e spero soprattutto in un tuo
aiuto........Grazie anticipate
Carlo
Risposta.
vedi Carlo, esempi specifici sul sito che rispecchino esattamente le
problematiche che troviamo, sarà sempre impossibile trovarne. Ma quello che
il sito vuole (cioè io), è fornire ESEMPI che forniscano una base da
modificare ed adattare alle esigenze. Lo scopo è di aiutare chi vuole
imparare il vba, non di fornire routine a coloro che non vogliono usare il
cervello che mamma ci ha fatto, studiandosi i vari esempi presenti nella
sezione vba, e sono tanti, che riguardano la ricerca o meno di dati, ed
adattarli alle proprie necessità. Questa volta ti accontento, ma sarà
l'ultima. Questa la routine:
Sub Contamelapippo()
Dim CL As Object
Set zona = Range([A1], [A1].End(xlDown))
For Each CL In zona
X = CL.Value
If CL.Offset(1, 0).Value = X Or CL.Offset(1, 0).Value = X + 1 Then
GoTo 10
ElseIf CL.Offset(1, 0) = "" Then
Exit For
Else
MsgBox "manca un giorno dopo il " & CL.Value & ""
End If
10:
Next
End Sub
Questa ti avvisa dicendoti se manca uno, o più giorni, tra i numeri della
colonna A, basandosi sul controllo che la cella sotto a quella in quel
momento controllata, sia di valore uguale o maggiore di 1, in caso contrario
ti segnala la mancanza, e se una cella è vuota (significa che siamo a fine
elenco), si esce dalla routine.
Saluti, ennius
|