On 18/09/2016 8.50, draleo wrote:
> Per Funzionare ,funziona molto bene. Peccato che non io capisca niente di
> formule. L'ho applicata, ma per esempio: faccio fatica a capire cosa significhi
> BigNum=9.99999999999999E+307
Il valore 9.99999999999999E+307 rappresenta il valore è il più grande
valore positivo che può essere riconosciuto da Excel. Un nome definito è
usato semplicemente per convenienza e perché il numero è ingombrante da
scrivere e da ricordare.
Per una spiegazione dettagliata dell'utilizzo di questo numero per
trovare il valore numerico più grande in un intervallo, vedi la risposta
di Aladin Akyurek (post # 6) nel seguente thread:
http://www.pcreview.co.uk/threads/re-last-value-in-column.1741609/
> comunque ,provando e riprovando, ho risolto anche così
> ti ringrazio ancora
> draleo
> -----------------------------------------------------
> Sub Prova()
> Dim ur As Long, l As Long, nr As Long
> With ActiveSheet
> nr = .Range("A65536").End(xlUp).Row
> For l = nr To 1 Step -1
> If IsEmpty(.Cells(l, 1)) Then
> .Cells(l, 1) = nr - l
> nr = l - 1
> End If
> Next
> End With
>
> End Sub
Bravo!
Se avessi proposto una soluzione di VBA, sarebbe stato del
genere:'=========>>
Option Explicit
'--------->>
Public Sub Tester()
Dim WB As Workbook
Dim SH As Worksheet
Dim srcRng As Range, destRng As Range
Dim arrIn As Variant
Dim LRow As Long
Dim i As Long, iCtr As Long
Const sFoglio As String = "Foglio1" '<<=== Modifica
Const sColonna As String = "A" '<<=== Modifica
Const iPrimaRiga As Long = "1" '<<=== Modifica
Set WB = ThisWorkbook
Set SH = WB.Sheets(sFoglio)
With SH
LRow = .Range(sColonna & .Rows.Count).End(xlUp).Row
Set srcRng = .Cells(iPrimaRiga, sColonna) _
.Resize(LRow - iPrimaRiga + 1)
Set destRng = srcRng
'\\ oppure (diciamo): Set destrng=srcrng.offset(0,1)
End With
arrIn = srcRng.Formula
For i = UBound(arrIn, 1) To LBound(arrIn, 1) Step -1
If Not arrIn(i, 1) = vbNullString Then
iCtr = iCtr + 1
Else
arrIn(i, 1) = iCtr
If Not arrIn(i - 1, 1) = vbNullString Then
iCtr = 0
End If
End If
Next i
With Application
.ScreenUpdating = False
destRng.Value = arrIn
.ScreenUpdating = True
End With
End Sub
'<<=========
Questa routine è più lunga e più verbosa della tua, ma credo che sia più
flessibile e più efficiente. Detto questo, a meno che l'intervallo di
interesse fosse grande, dubito che molta differenza sarebbe percepibile
per l'utente.
===
Regards,
Norman