Risultati da 1 a 8 di 8

Discussione: Ultima riga piena di un range



  1. #1

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6759
    Versione Office
    2013
    Likes ricevuti
    714
    Likes dati
    164

    Ultima riga piena di un range

    Ciao a tutti.

    Con riferimento al file allegato vorrei sapere che istruzione VBA utilizzare per trovare l'ultima riga piena del range A17:A29 ossia la n. 25?

    Grazie

    Alfredo
    File Allegati File Allegati

  2. #2
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3207
    Versione Office
    Excel2010
    Likes ricevuti
    625
    Likes dati
    155
    Ciao Alfredo
    In maniera molto banale si può utilizzare questa macro
    Codice: 
    Public Sub trova()
    Dim i As Long, riga As Long, testo As String
    For i = 1 To 29
        testo = Cells(i, 1)
        If testo <> "" Then riga = i
    Next i
    Cells(riga, 1).Select
    End Sub
    Ciao,
    Mario

  3. #3
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3207
    Versione Office
    Excel2010
    Likes ricevuti
    625
    Likes dati
    155
    Ciao Alfredo
    scartabellando fra le mie carte (ma si dice ancora così quando si cerca qualcosa tra i files?) ho trovato questa macro che potrebbe esserti utile nel caso volessi sapere qual'è l'ultimo dato in un'Area.

    Codice: 
    Sub UltimoValore()
    With Cells.SpecialCells(xlCellTypeConstants).Areas
        riga = .Item(.Count)(.Item(.Count).Count).Row
        colonna = .Item(.Count)(.Item(.Count).Count).Column
        valore = Cells(riga, colonna).Text
    End With
    MsgBox "riga=" & riga & " colonna=" & colonna & vbLf & " valore=" & valore
    End sub
    Speriamo non la veda un "purista" e mi richiami per il mancato dimensionamento delle variabili.
    Ciao,
    Mario

  4. #4

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1011
    Versione Office
    .
    Likes ricevuti
    365
    Likes dati
    0
    Ciao a tutti, a quelli bravi e a quelli che non dichiarano le variabili :188:

    Con riferimento al file allegato vorrei sapere che istruzione VBA utilizzare per trovare l'ultima riga piena del range A17:A29 ossia la n. 25?
    Ad esempio con questa UDF
    Codice: 
    Function ultimaDi(ByRef rng As Range) As Long
        ultimaDi = rng(rng.Rows.Count, 1).End(xlUp).Row
    End Function
    Esempio d'uso lato celle:
    =ultimadi(A1:A29)

    Esempio di uso in VBA:
    Codice: 
    Sub prova()
      Dim nLR As Long
      nLR = ultimaDi(Range("A1:A29"))
      MsgBox "ultima riga valorizzata:  " & nLR
    End Sub
    Bye!
    scossa
    scossa's web site
    ___
    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)

  5. I seguenti utenti hanno dato un "Like"


  6. #5

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1011
    Versione Office
    .
    Likes ricevuti
    365
    Likes dati
    0
    Ciao,

    ovviamente la UDF
    Codice: 
    Function ultimaDi(ByRef rng As Range) As Long
        ultimaDi = rng(rng.Rows.Count, 1).End(xlUp).Row
    End Function
    funziona bene coi dati dell'esempio di Alfredo, ma se l'ultima cella del range non fosse vuota restituirebbe la riga della prima cella piena dell'ultimo gruppo di celle valorizzate.
    Ad esempio se la chiamassimo con =ultimaDi(A1:A25) restituirebbe 17 anziché 25.

    Per risolvere bisogna "complicare" leggermente il codice:
    Codice: 
    Function ultimaDi(ByRef rng As Range) As Long
    'by scossa
    
      With rng.Rows(rng.Rows.Count)
        ultimaDi = IIf(.Value <> "", .Row, .End(xlUp).Row)
      End With
    
    End Function

  7. I seguenti utenti hanno dato un "Like"


  8. #6

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6759
    Versione Office
    2013
    Likes ricevuti
    714
    Likes dati
    164
    Innanzitutto un sentito ringraziamento sia a Mario che a Marco.

    In effetti quello che cercavo era proprio quello suggerito da scossa con la sua prima function.

    Cerco di spiegare da cosa è partita la mia richiesta.

    Solitamente si ha la necessità di determinare qual è l'ultima cella piena di una colonna e questo lo si fa con una delle solite istruzioni tipo:

    Codice: 
    Cells(Rows.Count, 1).End(xlUp).Row
    o simili.

    Se invece dell'intera colonna si vuole esaminare solo una parte di essa non sapevo come fare.

    Ad esempio per compilare una fattura questa ha un'intestazione, un piè di pagina ed una parte centrale dedicata all'inserimento di prodotti.

    Ecco quello che mi chiedevo era come fare per inserire i prodotti uno di seguito all'altro nello spazio a loro riservato.

    Ovviamente si può usare la function per memorizzare il numero dell'ultima riga piena in una variabile e poi utilizzare questa per l'esecuzione delle successive linee di codice.

    Grazie ancora e segno la discussione come "RISOLTO"

    Alfredo

  9. #7

    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    64
    Messaggi
    6759
    Versione Office
    2013
    Likes ricevuti
    714
    Likes dati
    164
    Marco scusa solo un'ultima cosa.

    Mi spieghi cosa sta a significare l' "1" dopo rng.Rows.Count?

    Inizialmente pensavo si riferisse alla colonna A ma poi ho visto che la function funziona correttamente indipendentemente dalla colonna.

    Grazie

    Alfredo

  10. #8

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1011
    Versione Office
    .
    Likes ricevuti
    365
    Likes dati
    0
    Citazione Originariamente Scritto da alfrimpa Visualizza Messaggio
    Mi spieghi cosa sta a significare l' "1" dopo rng.Rows.Count?
    Inizialmente pensavo si riferisse alla colonna A ma poi ho visto che la function funziona correttamente indipendentemente dalla colonna.
    Hai pensato giusto, è la colonna A (colonna 1), ma di rng, infatti rng.range("A1").address equivale a rng.cells(1,1).address

    Comunque alla luce della tua spiegazione propongo questa UDF:
    Codice: 
    Function ultimaDi2(ByRef rng As Range) As Long
    'by scossa
      ultimaDi2 = rng.Find("*", after:=rng.Cells(1, 1), searchDirection:=xlPrevious).Row
    End Function
    Bye!
    scossa
    scossa's web site
    ___
    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)

Discussioni Simili

  1. Ultima riga valorizzata in colonna con formule
    Di patel nel forum Domande su Excel VBA e MACRO
    Risposte: 10
    Ultimo Messaggio: 03/02/17, 12:01
  2. Risposte: 18
    Ultimo Messaggio: 22/09/16, 02:23
  3. Modifica codice evidenziare riga in un range.
    Di Berna11 nel forum Domande su Excel VBA e MACRO
    Risposte: 8
    Ultimo Messaggio: 25/08/16, 23:52
  4. Se l'ultima riga dei dati del grafico è #N/A
    Di pop_marco nel forum Domande sui Grafici di Excel
    Risposte: 23
    Ultimo Messaggio: 03/06/16, 13:46
  5. Macro che effettua le operazioni tenendo conto dell'ultima riga con dati
    Di G.Bove nel forum Domande su Excel VBA e MACRO
    Risposte: 14
    Ultimo Messaggio: 29/01/16, 14:06

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •