Estendere una formula



  • Estendere una formula
    di ric91 data: 19/02/2016 15:01:45

    Ciao a tutti,

    Spero che qualcuno possa rispondermi. Ho un problema con una macro. La macro che creo funziona bene, ho un solo problema. Sto creando un foglio che sarà utilizzato sempre con nuovi dati estratti e incollati (un template) e, successimamente gli "ranno" la macro. Il mio problema è che, nella registrazione della macro ho delle formule che vanno estese a 8000 mila righe (8000 è solo un esempio, perchè in alcune estrazioni potrò avere 8000 righe, in altre 6000 e in altre >8000). Come posso estendere la macro senza che mi si limiti il numero di righe, ovvero che possa far fede a delle righe dinamiche?
    Quello che vi allego è una parte di macro e come si può vedere si limita alla riga 8000. Io vorrei che fosse dinamica.
     
    Range("P3").Select
        ActiveCell.FormulaR1C1 = _
            "=+IF(RC1="""",IF(ISNA(VLOOKUP(RC[-1],C3:C5,3,FALSE)),"""",VLOOKUP(RC[-1],C3:C5,3,FALSE)),"""")"
        Range("P3").Select
        Selection.AutoFill Destination:=Range("P3:AB3"), Type:=xlFillDefault
        Range("P3:AB3").Select
        Selection.AutoFill Destination:=Range("P3:AB8409")



  • di alfrimpa data: 19/02/2016 16:00:27

    Ciao Ric

    Non rispondo al tuo quesito in particolare ma ti do delle indicazioni che spero possano tornarti utili.

    Quando si tratta di definire un range dinamicamente cioè che non si sa quale sia l'ultima riga piena c'è un modo in VBA per poterlo fare (anzi più d'uno).

    Supponiamo di avere una tabella di 4 colonne ed n righe di cui non conosciamo il numero.

    La macro che vedi sotto seleziona il range quale che sia il numero delle righe piene.

    Spero sia utile

    Alfredo
     
     
    Sub Seleziona()
    Dim ur as Long     'Definisco la variabile che memorizza il numero dell'ultima riga piena
    ur = Cells(Rows.Count, 1).End(xlUp).Row
    Range("a1:D" & ur).Select
    Ens Sub
    
    Quindi nel tuo caso potresti scrivere:
    
    Range("P3:AB" & ur).Select
    
    ovviamente inserendo le specifiche istruzioni nella tua macro