Condividi:        

Excel Numero Riga

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

Excel Numero Riga

Postdi Flash30005 » 11/10/08 11:58

Avrei bisogno di una formula che mi fornisse l'ultimo numero di riga di una colonna contenente il valore 0
es:
Codice: Seleziona tutto
    A   B
1
2
3  0
4
5       0
6
7
8
9
10      0
11
12
13
14
15
16 0
17
18
19
20
..
..
RT 16 10

Della colonna A (rigaRT) mi desse 16 (riga) mentre della colonna B il valore 10 (trascurando le righe inferiori)

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Sponsor
 

Re: Excel Numero Riga

Postdi Anthony47 » 11/10/08 16:50

Se le celle "bianche" sono effettivamente vuote, puoi usare
Codice: Seleziona tutto
=MAX(RIF.RIGA(A1:A1000)*(A1:A1000<>""))
che confermerai con Contr-Maiusc-Enter (NON solo Enter; vedrai la formula tra parentesi graffe).
Se invece contengono valori diversi da 0, allora userai
Codice: Seleziona tutto
=MAX(RIF.RIGA(A1:A1000)*(A1:A1000<>"")*(A1:A1000=0))
con le stesse istruzioni.

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

Re: Excel Numero Riga

Postdi Flash30005 » 12/10/08 19:06

Anthony47 ha scritto:....
Se invece contengono valori diversi da 0, allora userai
Codice: Seleziona tutto
=MAX(RIF.RIGA(A1:A1000)*(A1:A1000<>"")*(A1:A1000=0))
con le stesse istruzioni.

Questa formula va bene ma... ripetuta tantissime volte mette in crisi excel e il PC :cry:
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel Numero Riga

Postdi Anthony47 » 12/10/08 21:29

Hai scelto la formula piu' complessa perche' quella piu' semplice non funziona?
Se e' per l' applicazione di calcolo dei ritardi degli ambi, con 90 fogli di numeri, allora la formula e' la classica goccia che fa traboccare il vaso gia' pieno.
Ma quante volte la devi mettere e con che lunghezza (numero di righe) dell' intervallo dati?

Se puoi inserire una colonna con una numerazione sequenziale, potresti provare anche questa:
Codice: Seleziona tutto
=CERCA(100;1/(B1:B1000<>"");A1:A1000)

Qui i dati sono in col B e col A contiene una numerazione sequenziale (1,2,3,4....); invece di 1000 metti l'effettiva altezza. Funziona pero' solo se in colonna B hai solo o 0 o vuoti.

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

Re: Excel Numero Riga

Postdi Flash30005 » 14/10/08 00:38

Anthony47 ha scritto:Hai scelto la formula piu' complessa perche' quella piu' semplice non funziona?
Se e' per l' applicazione di calcolo dei ritardi degli ambi, con 90 fogli di numeri, allora la formula e' la classica goccia che fa traboccare il vaso gia' pieno.
Ma quante volte la devi mettere e con che lunghezza (numero di righe) dell' intervallo dati?

Se puoi inserire una colonna con una numerazione sequenziale, potresti provare anche questa:
Codice: Seleziona tutto
=CERCA(100;1/(B1:B1000<>"");A1:A1000)

Qui i dati sono in col B e col A contiene una numerazione sequenziale (1,2,3,4....); invece di 1000 metti l'effettiva altezza. Funziona pero' solo se in colonna B hai solo o 0 o vuoti.

Ciao.


Si era per il calcolo del ritardo attuale ambo e ce ne erano ben 90 x 89 (8010) di quelle formule e così ho dovuto ripiegare con un'idea che mi è balenata: solo somme (uovo di Colombo) :lol: ma se scarichi il file che ho allegato nel topic "ricerca su Archivio" vedrai... è di facile intuizione :lol: :lol: (le formule sono sulle ultime righe di ogni foglio numerato)
fammi sapere... se è possibile migliorare e sveltire... anzi a dire la verità nella macro un'idea per velocizzare ulteriormente il tutto ce l'avrei ma mi occorre la tua assistenza

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel Numero Riga

Postdi Anthony47 » 14/10/08 02:33

Ciao.
Nel file postato vedo che il ritardo e' gia' calcolato dalla macro (CercaAbbinato, I suppose) e questo ti consente di semplificare il calcolo del max in riga 65535; la necessita' aguzza l' ingegno.

Per quanto riguarda velocizzare la macro, mi pare di ricordare (dall' altro post) che 60 anni di estrazioni siano elaborati in circa 9 minuti; se e' cosi' io non farei interventi strutturali ma semplicemente:
-dichiarare tutte le variabili, utilizzando sempre il "tipo" piu' semplice (es Integer, Single, String), coerentemente con cosa devono contenere. Una variabile non dichiarata viene assunta di tipo "variant", e prima di essere usata nel contesto la cpu perdera' un sacco di tempo.
-per essere certo di dichiarare tutto, metti in testa al modulo Option explicit
-toglierei i .Select inutili; es tutti quelli che sono preambolo al .Copy; invece di fare, es, Range("A1").select / Selection.copy basta fare Range("A1").Copy-modifica i nomi fogli: non ha senso chiamarlo "01" se poi sei costretto a fare cos ecome If C < 10 Then /NomeF = "0" & C/Else /etc etc; li chiamo 1,2,..11,12 e risparmi tempo.
-la macro CancellaFogli vedo che la hai preparata in due versioni; per usare la prima (quella commentata) devi cominciare dal foglio 90 e scendere all' uno, quindi dovresti usare For C = 90 To 1 step -1

Sono le cose che ho notato a prima vista, e visti i tempi in gioco non starei a complicarmi la vita.
Altre cose non me ne vengono, anche perche' non conosco il significato di tutti quei numeri calcolati; per me 1,2 0 90 pari sono.
Vedi se questi suggerimenti sono adottabili e se migliorano in modo reale o sono anche loro una perdita di tempo.

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

Re: Excel Numero Riga

Postdi Flash30005 » 14/10/08 19:21

Anthony47 ha scritto:...-modifica i nomi fogli: non ha senso chiamarlo "01" se poi sei costretto a fare cos ecome If C < 10 Then /NomeF = "0" & C/Else /etc etc; li chiamo 1,2,..11,12 e risparmi tempo.

Il problema è che l'archivio originale postato ha in numeri in formato testo e allora... ho mantenuto quella caratteristica (fogli e prima riga colonne con formato "Numero" come l'archivio)

Anthony47 ha scritto:-la macro CancellaFogli vedo che la hai preparata in due versioni; per usare la prima (quella commentata) devi cominciare dal foglio 90 e scendere all' uno, quindi dovresti usare For C = 90 To 1 step -1


Ho provato in tutti i modi quella formula per cancellare i fogli ma... alla fine mi rimane solo il foglio 44 e mi cancella i 3 fogli principali (Foglio1 con l'archivio, Statistice e Modello) :eeh:
la macro usata che ritenevo opportuna visto che la uso anche per crearli è questa considerando che i fogli sono 01, 02, 03, etc
Codice: Seleziona tutto
Sub CACancellaFogli()
Dim NomeF As String
Application.ScreenUpdating = False
Application.Calculation = xlManual
' i codici commentati cancellano i fogli ma bloccano il pc
For C = 90 To 1 Step -1
NomeF = C
  If C < 10 Then NomeF = "0" & C
    Worksheets(NomeF).Select Replace:=False
    Application.DisplayAlerts = False
    ActiveWindow.SelectedSheets.Delete
Next C
    Sheets("Foglio1").Select
End Sub


Anthony47 ha scritto:... e visti i tempi in gioco non starei a complicarmi la vita.

Beh, qui penso che con il tuo aiuto potremmo arrivare a 1 o 2 minuti max per elaborare tutte le 3853 estrazioni :lol:
Guarda bene la macro Sub M1CercaEstratto() "cercatrice" del CapoGioco (prima 1 esplora l'archivio, poi il 2 etc)
é un fulmine poi però penso che quello che succeda nella Sub M2CercaAbbinato() sia una perdita notevole di tempo: vede per ogni riga "captata" da Macro1 se esiste il numero XX invece se si potesse ripetere, adattando, la M1 una subroutine che questa volta cerca direttamente xx su tutta la matrice e a parità di RC faccia la scrittura che fa ora con il codice in M2CercaAbbinato. Io ho provato ma non capisco come mai entra in loop (anche provando un solo foglio For ES = 1 To 1 invece che 1 to 90).

Inoltre, a proposito delle dichiarazioni generali, nel modulo4 ho messo l'opzione Public ma tu mi dici di mettere Option explicit, ma devo sostituire Public? Mi potresti riportare la riga che ho io lì con la tua variante?

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel Numero Riga

Postdi Anthony47 » 16/10/08 02:22

Option explicit serve per costringerti a dichiarare tutte le variabili (se non lo fai ti da' errore di sintassi sulla variabile non definita); mettila ancora prima di Public xyz. Ovviamente questo lo farai (su ogni Modulo) solo se hai intenzione di lavorare sulla dichiarazione delle variabili e attribuzione del tipo piu' semplice per velocizzare le macro.

Passare da 9 minuti a 2 minuti (ma non ho fatto una analisi per capire se questo e' realistico) non ha senso se bisogna spenderci piu' di un' ora... Trattandosi di una macro gia' scritta, tra capire quello che fa, capire come poter fare, codificare e debuggare si spende ben piu'. Insomma io lascerei perdere gli interventi "strutturali".

Il nome foglio su due cifre rimane un handicap inutile, quelle istruzioni (If C < 10 Then /NomeF = "0" & C/Else /etc etc) sono oggetto di loop continuativamente.

La macro CancellaFogli: ti ho consigliato For C = 90 To 1 step -1, ma cosi' e' ovvio che ti faccio cancellare tutti i fogli meno uno! Avrei dovuto consigliare For C = 90 To 4 step -1

So che e' una risposta "inferiore alle attese", ma dal mio punto di vista il costo/beneficio dell' intervento "strutturale" e' negativo, e gli stessi benefici per essere stimati richiederebbero un' analisi preliminare. Sorry...

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


Torna a Applicazioni Office Windows


Topic correlati a "Excel Numero Riga":


Chi c’è in linea

Visitano il forum: Nessuno e 41 ospiti