Risultati da 1 a 10 di 10

Discussione: estensione formula nella macro



  1. #1
    L'avatar di ric91
    Clicca e Apri
    Data Registrazione
    Feb 2016
    LocalitÓ
    Voghera
    EtÓ
    26
    Messaggi
    35
    Versione Office
    excel2013
    Likes ricevuti
    0
    Likes dati
    0

    estensione formula nella macro

    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.

    Codice: 
    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")
    Ultima modifica fatta da:cromagno; 19/02/16 alle 16:35 Motivo: Inserito (correttamente) il codice tra i tag CODE...

  2. #2

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Cosenza
    EtÓ
    45
    Messaggi
    2810
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    Bisogna sapere fino a quale riga ricopiare in basso.
    Se si vuole ricopiare fino all'ultimo valore contenuto nella colonna A, si determina l'ultima riga con:

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

    Codice: 
    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
    Dim uRiga As Long'NUOVA RIGA
    uRiga = Range("A" & Rows.Count).End(xlUp).Row'NUOVA RIGA
    Selection.AutoFill Destination:=Range("P3:AB" & uRiga) 'RIGA MODIFICATA

  3. #3
    L'avatar di ric91
    Clicca e Apri
    Data Registrazione
    Feb 2016
    LocalitÓ
    Voghera
    EtÓ
    26
    Messaggi
    35
    Versione Office
    excel2013
    Likes ricevuti
    0
    Likes dati
    0
    Ciao,
    Innanzitutto ti ringrazio per la risposta. Allora il mio problema Ŕ che oggi ho 8000 righe sulle quali va estesa la formula, il rpssimo mese potrei averne 8001 oppure 8100. E' una variabile.
    Se non mi sono spiegato bene ti faccio un esempio.

    Mese di Gennaio:
    Colonna A codici (#8000)
    colonna B formula;

    Mese di Febbraio (utilizzo lo stesso file ma apro il precedente faccio salva come e metto il nome del file con l'aggiunta di febbraio)
    Colonna A (8150 codici);
    Colonna B formula.

    Ovviamente la macro (che ranno con il bottone) Ŕ unica e utilizzo un template per creare i diversi file per i mesi.

  4. #4

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Cosenza
    EtÓ
    45
    Messaggi
    2810
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    La routine proposta dovrebbe andare bene. L'hai provata (e adattata)?

  5. #5
    L'avatar di ric91
    Clicca e Apri
    Data Registrazione
    Feb 2016
    LocalitÓ
    Voghera
    EtÓ
    26
    Messaggi
    35
    Versione Office
    excel2013
    Likes ricevuti
    0
    Likes dati
    0
    Nel caso la formula da registrare fosse come questo codice, come faccio?
    Range("N3").Select
    ActiveCell.FormulaR1C1 = "=+IF(RC1="""",RC3,"""")"
    Range("N3").Select
    Selection.AutoFill Destination:=Range("N3:N8409")

  6. #6

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Cosenza
    EtÓ
    45
    Messaggi
    2810
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    Codice: 
    Range("N3").Select
    ActiveCell.FormulaR1C1 = "=+IF(RC1="""",RC3,"""")"
    Range("N3").Select
    
    Dim uRiga As Long 'NUOVA RIGA
    uRiga = Range("A" & Rows.Count).End(xlUp).Row 'NUOVA RIGA
    Selection.AutoFill Destination:=Range("N3:N" & uRiga)  'RIGA MODIFICATA
    o pi¨ semplicemente
    Codice: 
    Range("N3").FormulaR1C1 = "=+IF(RC1="""",RC3,"""")"
    
    Dim uRiga As Long 'NUOVA RIGA
    uRiga = Range("A" & Rows.Count).End(xlUp).Row 'NUOVA RIGA
    Range("N3").AutoFill Destination:=Range("N3:N" & uRiga)  'RIGA MODIFICATA
    Ricorda che il conteggio delle righe non vuote (piene) viene fatto sulla colonna A

  7. #7
    L'avatar di ric91
    Clicca e Apri
    Data Registrazione
    Feb 2016
    LocalitÓ
    Voghera
    EtÓ
    26
    Messaggi
    35
    Versione Office
    excel2013
    Likes ricevuti
    0
    Likes dati
    0
    Grandissimo! Hai risolto il mio problema!Ti ringrazio moltissimo!!!

  8. #8

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Cosenza
    EtÓ
    45
    Messaggi
    2810
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    Se hai risolto, segna la discussione in [RISOLTO] da Strumenti di discussione

  9. #9
    L'avatar di ric91
    Clicca e Apri
    Data Registrazione
    Feb 2016
    LocalitÓ
    Voghera
    EtÓ
    26
    Messaggi
    35
    Versione Office
    excel2013
    Likes ricevuti
    0
    Likes dati
    0
    Ultima cosa prima che metta la discussione come "risolto". Se devo ripetere l'operazione durante la registrazione della macro, mi compare l'errore: "Duplicate declaration in current scope". Questo vuol dire che devo chiamarlo in nomi diversi questa linea: Dim uRiga As Long? per esempio Dim uRiga as X?

    Range("N3").Select
    ActiveCell.FormulaR1C1 = "=+IF(RC1="""",RC3,"""")"
    Range("N3").Select
    Dim uRiga As Long 'NUOVA RIGA
    uRiga = Range("C" & Rows.Count).End(xlUp).Row 'NUOVA RIGA
    Selection.AutoFill Destination:=Range("N3:N" & uRiga) 'RIGA MODIFICATA


    Range("O3").Select
    ActiveCell.FormulaR1C1 = "=+IF(RC1="""",RC5,"""")"
    Range("O3").Select
    Dim uRiga As Long 'NUOVA RIGA
    uRiga = Range("C" & Rows.Count).End(xlUp).Row 'NUOVA RIGA
    Selection.AutoFill Destination:=Range("O3:O" & uRiga) 'RIGA MODIFICATA


    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
    Dim uRiga As Long 'NUOVA RIGA
    uRiga = Range("C" & Rows.Count).End(xlUp).Row 'NUOVA RIGA
    Selection.AutoFill Destination:=Range("P3:AB" & uRiga) 'RIGA MODIFICATA


    Range("L3").Select
    ActiveCell.FormulaR1C1 = _
    "=+IF(RC1="""",OFFSET(RC14,0,(COUNTA(RC14:RC28)-COUNTIF(RC14:RC28,""""))-1),"""")"
    Range("L3").Select
    Dim uRiga As Long 'NUOVA RIGA
    uRiga = Range("C" & Rows.Count).End(xlUp).Row 'NUOVA RIGA
    Selection.AutoFill Destination:=Range("L3:L" & uRiga) 'RIGA MODIFICATA



    Range("L1").Select
    ActiveCell.FormulaR1C1 = _
    "=+COUNTA(R[2]C:R[1000000]C)-COUNTIF(R[2]C:R[1000000]C,"""")"
    Range("L1").Select
    Selection.Style = "Comma"
    Selection.NumberFormat = "_-* #,##0.0_-;-* #,##0.0_-;_-* ""-""??_-;_-@_-"
    Selection.NumberFormat = "_-* #,##0_-;-* #,##0_-;_-* ""-""??_-;_-@_-"

    Range("A2").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "Data!R2C1:R8409C27", Version:=xlPivotTableVersion15).CreatePivotTable _
    TableDestination:="Sheet1!R3C1", TableName:="PivotTable7", DefaultVersion _
    :=xlPivotTableVersion15
    Sheets("Sheet1").Select
    Cells(3, 1).Select
    With ActiveSheet.PivotTables("PivotTable7").PivotFields("Last code")
    .Orientation = xlRowField
    .Position = 1
    End With
    Range("B3").Select
    ActiveCell.FormulaR1C1 = "Chain"
    Range("B3").Select
    With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 6299648
    .TintAndShade = 0
    .PatternTintAndShade = 0
    End With
    With Selection.Font
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = 0
    End With
    Selection.Font.Bold = True
    Range("B5").Select
    ActiveCell.FormulaR1C1 = "C1"
    Range("B6").Select
    ActiveCell.FormulaR1C1 = "=+""C""&MID(R[-1]C,2,99)+1"
    Range("B6").Select
    Selection.AutoFill Destination:=Range("B6:B6018")
    Range("B6:B6018").Select
    Range("B5").Select
    Sheets("Data").Select

    Range("M3").Select
    ActiveCell.FormulaR1C1 = _
    "=+IF(RC12="""","""",VLOOKUP(RC12,Sheet1!C[-12]:C[-11],2,FALSE))"
    Range("M3").Select
    Dim uRiga As Long 'NUOVA RIGA
    uRiga = Range("A" & Rows.Count).End(xlUp).Row 'NUOVA RIGA
    Selection.AutoFill Destination:=Range("M3:M" & uRiga) 'RIGA MODIFICATA
    Range("M2").Select
    ActiveSheet.Range("$A$2:$AB$8409").AutoFilter Field:=10, Criteria1:="="
    Range("M4").Select
    Selection.ClearContents
    ActiveCell.FormulaR1C1 = "=+OFFSET(RC,-1,0)"
    Range("M4").Select
    Selection.Copy
    Range("M6").Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveSheet.Paste
    ActiveSheet.Range("$A$2:$AB$8409").AutoFilter Field:=10
    Range("J3:K3").Select
    Selection.AutoFill Destination:=Range("J3:K8409")
    Range("A3").Select
    Range("A1").Select
    Sheets("Sheet1").Select
    Sheets("Sheet1").Name = "Chain Numbering"
    Sheets("Data").Select
    End Sub

  10. #10

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    LocalitÓ
    Cosenza
    EtÓ
    45
    Messaggi
    2810
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    979
    Le variabili si dichiarano solo una volta in calce al Modulo. Una volta dichiarata (scritta), non va pi¨ dichiarata

Discussioni Simili

  1. [Risolto] Inserimento e/o formula nella stessa cella
    Di Marius44 nel forum Domande su Excel VBA e MACRO
    Risposte: 9
    Ultimo Messaggio: 19/01/17, 19:25
  2. Paranetro Test nella formula SE
    Di Alessandro nel forum Domande su Excel in generale
    Risposte: 3
    Ultimo Messaggio: 25/05/16, 07:39
  3. Se cambio il valore nella cella non funziona la formula
    Di Lety88 nel forum Domande su Excel in generale
    Risposte: 8
    Ultimo Messaggio: 23/04/16, 19:26
  4. Scrivere nella cella senza perdere la formula
    Di carega83 nel forum Domande su Excel in generale
    Risposte: 10
    Ultimo Messaggio: 16/03/16, 22:35
  5. Problema nella scrittura della formula (tutorial)
    Di Gerardo ZuccalÓ nel forum Problemi, suggerimenti e NovitÓ del forum
    Risposte: 3
    Ultimo Messaggio: 05/07/15, 13:19

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
  •