Rilevare ultimo numero riga con un valore

Anonimo
2014-01-09T17:13:48+00:00

salve ho un problema 

ho un file excel che devo aprire e copiare dentro un foglio di un altro file excel

una prima operazione che faccio e contare per stabilire i range il numero di valori presenti in determinate colonne (colonne chiave)

uso questo codice:

maxRigaTabF = sh.Range("F" & .Rows.Count).End(xlUp).Row

il problema e che questo valore è uguale all'ultima  cella piena più 1

non capisco il perchè è come

se la cella pur essendo bianca (vuota) abbia qualche stato che la caratterizza come "piena"

grazie

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

13 risposte

Ordina per: Più utili
  1. Anonimo
    2014-01-10T10:20:54+00:00

    <cut> Excel ha la brutta abitudine di *ricordare* dove hai scritto qualcosa. 

    usedrange lo stavo solo "guardando" per capire come excel si comportava...

    è proprio quello il problema!

    quello che hai scritto sopra xlUp ha questo comportamento dentro

    nel mio caso specifico io ho bisogno del limite con dei dati non con delle formattazioni...

    (comportamento di xlUp) i file sono parecchi e sono file elaborati da altri programmi

    quindi non integrare il tutto con una attività manuale

    il link che ha postato AndyCap64 sono molto interessanti e credo risolvano il mio problema

    lo riporto per completezza

    http://www.ozgrid.com/VBA/ExcelRanges.htm

    ...

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-01-10T08:45:48+00:00

    <cut>

    questa versione dovrebbe essere la definitiva

    Io non so cosa tu stia facendo, ma utilizzo xlUp da una vita senza aver mai avuto problemi:

    Public Sub m()

        Dim sh As Worksheet

        Dim lRiga As Long

        Set sh = ThisWorkbook.Worksheets("Foglio1")

        With sh

            lRiga = .Range("A" & .Rows.Count).End(xlUp).Row

        End With

        MsgBox lRiga

        Set sh = Nothing

    End Sub

    Nel tuo caso, prova ad elimina la riga (tutta la riga) che ti viene restituita e riprova.

    Inoltre. UsedRange è il male se non utilizzato con criterio. Excel ha la brutta abitudine di *ricordare* dove hai scritto qualcosa. Se vuoi gli estremi di una tabella, molto meglio riferirsi ad una cella qualsiasi della tabella e utilizzare:

    Public Sub m()

        Dim sh As Worksheet

        Dim s As String

        Set sh = ThisWorkbook.Worksheets("Foglio1")

        With sh

            s = .Range("A2").CurrentRegion.Address

        End With

        MsgBox s

        Set sh = Nothing

    End Sub

    Fermo restando che se ci sono celle che contengono un qualsiasi valore (anche uno spazio), Excel le ritiene piene.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-01-09T18:06:17+00:00

    ...

    non capisco mi torna 2605 ma la riga 2605 è vuota ...

    ho provato anche con

    ActiveSheet.UsedRange.Rows.Count

    torna 2605 che succede ?

    mi sa che ho capito!

    ho trovato questa frase

    "Counts the number of used (cells with data or formatted) rows in the worksheet, starting from the first used row till the last used row. Does not give row no of last used row."

    cioè significa che se è vuota ma è formattata anche solo un grasseto excel la prende come buona!

    è possibile trovare l'ultima cella valida con un valore ?

    ho devo farmi una routine ad hoc

    grazie

    Ciao,

    se ti sposti manualmente, utilizzando i tasti di scelta rapida, Ctrl+freccia sù o freccia giù, oppure con Ctrl+PagDn, si posiziona correttamente?

    L'ultima riga potrebbe contenere un formato personalizzato che nasconde i dati, se è realmente vuota perché non la cancelli?

    Infine, dai un'occhiata qui sulle varie possibilità per determinare l'ultima cella in un intervallo.

    Puoi trovare anche qui utili indicazioni.

    Andrea.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2014-01-09T18:00:36+00:00

    salve ho un problema 

    ho un file excel che devo aprire e copiare dentro un foglio di un altro file excel

    una prima operazione che faccio e contare per stabilire i range il numero di valori presenti in determinate colonne (colonne chiave)

    uso questo codice:

    maxRigaTabF = sh.Range("F" & .Rows.Count).End(xlUp).Row

    il problema e che questo valore è uguale all'ultima  cella piena più 1

    non capisco il perchè è come

    se la cella pur essendo bianca (vuota) abbia qualche stato che la caratterizza come "piena"

    grazie

    non capisco mi torna 2605 ma la riga 2605 è vuota ...

    ho provato anche con

    ActiveSheet.UsedRange.Rows.Count

    torna 2605 che succede ?

    mi sa che ho capito!

    ho trovato questa frase

    "Counts the number of used (cells with data or formatted) rows in the worksheet, starting from the first used row till the last used row. Does not give row no of last used row."

    cioè significa che se è vuota ma è formattata anche solo un grasseto excel la prende come buona!

    è possibile trovare l'ultima cella valida con un valore ?

    ho devo farmi una routine ad hoc

    grazie

    ho fatto questa non so se può essere utile per il gruppo

    Public Function getMaxRowByColumnOnlyData(pSheetOr As Worksheet, pColumn)

    lRiga = pSheetOr.Range(pColumn & ActiveSheet.Rows.Count).End(xlUp).Row

    'torno indietro a ritroso fin quando non trovo dati non formattazioni

    If lRiga > 1 Then

    For I = 0 To lRiga

    If pSheetOr.Range(pColumn & lRiga - I).value <> "" Then

    Exit For

    End If

    Next

    'ho trovato la prima riga valida piena

    lRiga = lRiga - I

    End If

    getMaxRowByColumnOnlyData = lRiga

    End Function

    questa versione dovrebbe essere la definitiva

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2014-01-09T17:50:29+00:00

    salve ho un problema 

    ho un file excel che devo aprire e copiare dentro un foglio di un altro file excel

    una prima operazione che faccio e contare per stabilire i range il numero di valori presenti in determinate colonne (colonne chiave)

    uso questo codice:

    maxRigaTabF = sh.Range("F" & .Rows.Count).End(xlUp).Row

    il problema e che questo valore è uguale all'ultima  cella piena più 1

    non capisco il perchè è come

    se la cella pur essendo bianca (vuota) abbia qualche stato che la caratterizza come "piena"

    grazie

    non capisco mi torna 2605 ma la riga 2605 è vuota ...

    ho provato anche con

    ActiveSheet.UsedRange.Rows.Count

    torna 2605 che succede ?

    mi sa che ho capito!

    ho trovato questa frase

    "Counts the number of used (cells with data or formatted) rows in the worksheet, starting from the first used row till the last used row. Does not give row no of last used row."

    cioè significa che se è vuota ma è formattata anche solo un grasseto excel la prende come buona!

    è possibile trovare l'ultima cella valida con un valore ?

    ho devo farmi una routine ad hoc

    grazie

    La risposta è stata utile?

    0 commenti Nessun commento