Ciclo fornext in macro di excel



  • Ciclo for-next in macro di excel
    di jonajams data: 12/06/2014 15:15:37

    Salve a tutti, mi rivolgo a voi perchè sono un po' disperato con il calcolo che devo fare..
    ho 3 doc di excel che devo usare per calcolare un rating. in uno ho il foglio con i calcoli da fare (che è bloccato), mentre negli altri 2 ci sono i dati delle imprese. ciò che devo fare è:
    - spostare i dati da i due doc a quello principale, tramite cerca.vert/orizz.
    - calcolare il rating (automatico) e quindi spostare il risultato su un tabella, che sarà su di un altro file che creerò.

    il mio problema è che le aziende sono 700, quindi ho bisogno di implementare un codice for - next (come ho letto in giro...) per lasciare excel a fare tutti i calcoli.
    i problemi sono:
    - non so fare il ciclio, ma posso imparare;
    - devo inserire il ciclo ad inizio codice oppure in ogni indice di cerc.vert (per evitare problemi, seleziono soltanto 2 righe di matrice per volta, di modo da avere valori giusti in ogni caso)?
    - volendo fare diverse macro separate e poi unirle, è fattibile?


    spero che almeno voi possiate aiutarmi! :)
    -



  • di Lucas87 data: 12/06/2014 15:20:28

    Ciao
    Così in pratica non hai spiegato nulla.
    Allega un file di esempio in modo da capire la situazione e il risultato voluto.
    Spiegati meglio e considera il fatto che non abbiamo idea di cosa stai parlando.



  • di jonajams data: 12/06/2014 16:52:47

    ciao, cerchèro di spiegarmi meglio.
    1. il file di excel che devo usare lo puoi trovare facilmente su google digitando: Modelli di valutazione
    A.Imprese in contabilità ordinaria operanti nei settori: industria, manifatturiera, edilizia, alberghi (società alberghiere proprietarie dell'immobile), pesca e piscicoltura .xls 15.4kb --- FILE MEDIO CREDITO ITALIANO

    2. allego qui le due macro che ho generato per poter svolgere i miei calcoli. devo unire le due macro, non vorrei rifare tutti i passaggi, è possibile farlo da codice?

    3. devo creare un ciclo sul cerca.vert che mi vada a prendere tutte le righe del file che gli indico.
    una riga alla volta.
    il mio dubbio è che, dovendo usare la ricerca appross. (VERO), devo selezionare una matrice di 2 righe soltanto, di modo da essere sicuro della scelta. si può impostare anche la matrice di modo che scenda?

    spero possiate aiutarmi, ho un compito molto difficile e su questo ho veramente zero conoscenza!
     
    Sub cerca_ozz_seconda()
    '
    ' cerca_ozz_seconda Macro
    ' seconda prova
    '
    
    '
        ActiveCell.Offset(-2, 0).Range("A1").Select
        ActiveCell.FormulaR1C1 = ""
        ActiveCell.Select
        ActiveCell.FormulaR1C1 = _
            "=HLOOKUP(RC[-1],[Aida_Export_3.xlsx]Risultati!R1C1:R2C14,2,)"
        ActiveCell.Offset(1, 0).Range("A1").Select
        ActiveCell.FormulaR1C1 = _
            "=HLOOKUP(RC[-1],[Aida_Export_3.xlsx]Risultati!R1C1:R2C14,2,)"
        ActiveCell.Offset(1, 0).Range("A1").Select
        ActiveCell.FormulaR1C1 = _
            "=HLOOKUP(RC[-1],[Aida_Export_3.xlsx]Risultati!R1C1:R2C14,2,)"
        ActiveCell.Offset(3, 0).Range("A1").Select
        ActiveCell.FormulaR1C1 = _
            "=+HLOOKUP(RC[-1],[Aida_Export_3.xlsx]Risultati!R1C1:R2C14,2,)"
        ActiveCell.Offset(1, 0).Range("A1").Select
        ActiveCell.FormulaR1C1 = _
            "=+HLOOKUP(RC[-1],[Aida_Export_3.xlsx]Risultati!R1C1:R2C14,2,)"
        ActiveCell.Offset(1, 0).Range("A1").Select
        ActiveCell.FormulaR1C1 = _
            "=HLOOKUP(RC[-1],[Aida_Export_3.xlsx]Risultati!R1C1:R2C14,2,)"
        ActiveCell.Offset(1, 0).Range("A1").Select
        ActiveWindow.SmallScroll Down:=9
        ActiveCell.Offset(3, 0).Range("A1:B1").Select
        ActiveCell.FormulaR1C1 = _
            "=HLOOKUP(RC[-1],[Aida_Export_3.xlsx]Risultati!R1C1:R2C14,2,TRUE)"
        ActiveCell.Offset(1, 0).Range("A1:B1").Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(RC[-1],[Aida_Export_3.xlsx]Risultati!R1:R2,11,TRUE)"
        ActiveCell.Offset(1, 0).Range("A1:B1").Select
        ActiveCell.FormulaR1C1 = _
            "=HLOOKUP(RC[-1],[Aida_Export_3.xlsx]Risultati!R1C1:R2C14,2,)"
        ActiveCell.Offset(1, 0).Range("A1:B1").Select
        ActiveCell.FormulaR1C1 = _
            "=HLOOKUP(RC[-1],[Aida_Export_3.xlsx]Risultati!R1C1:R2C14,2,)"
        ActiveCell.Offset(1, 0).Range("A1:B1").Select
        ActiveCell.FormulaR1C1 = _
            "=HLOOKUP(RC[-1],[Aida_Export_3.xlsx]Risultati!R1C1:R2C14,2,)"
        ActiveCell.Offset(1, 0).Range("A1").Select
    End Sub
    Sub dati_2012()
    '
    ' dati_2012 Macro
    '
    
    '
        ActiveCell.Offset(-11, 0).Range("A1").Select
        ActiveSheet.Paste
        ActiveCell.Offset(1, 0).Range("A1").Select
        ActiveSheet.Paste
        ActiveCell.Offset(1, 0).Range("A1").Select
        ActiveSheet.Paste
        ActiveCell.Select
        ActiveCell.FormulaR1C1 = _
            "=+VLOOKUP(RC[-3],[dati_2012.xlsx]Risultati!R1:R2,7,TRUE)"
        ActiveCell.Offset(3, 0).Range("A1").Select
        ActiveSheet.Paste
        ActiveCell.Offset(1, 0).Range("A1").Select
        ActiveSheet.Paste
        ActiveCell.Offset(1, 0).Range("A1").Select
        ActiveSheet.Paste
        ActiveCell.Offset(4, 0).Range("A1:B1").Select
        ActiveWindow.SmallScroll Down:=9
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(R[-4]C[-3],[dati_2012.xlsx]Risultati!R1C1:R2C13,11,TRUE)"
        ActiveCell.Offset(1, 0).Range("A1:B1").Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(R[-5]C[-3],[dati_2012.xlsx]Risultati!R1C1:R2C13,13,TRUE)"
        ActiveCell.Offset(1, 0).Range("A1:B1").Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(R[-6]C[-3],[dati_2012.xlsx]Risultati!R1C1:R2C13,12,TRUE)"
        ActiveCell.Offset(1, 0).Range("A1:B1").Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(R[-7]C[-3],[dati_2012.xlsx]Risultati!R1C1:R2C13,10,TRUE)"
        ActiveCell.Offset(1, 0).Range("A1:B1").Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(R[-8]C[-3],[dati_2012.xlsx]Risultati!R1C1:R2C13,9,TRUE)"
        ActiveCell.Offset(1, 0).Range("A1").Select
        ActiveWindow.SmallScroll Down:=9
        ActiveCell.Offset(14, -1).Range("A1:C1").Select
        Selection.Copy
        Windows("scoring mcc.xlsx").Activate
        ActiveSheet.Paste
        Windows("mcc file.xlsm").Activate
    End Sub
    



  • di jonajams data: 12/06/2014 17:05:02

    ho da chiedervi anche un'altra cosa..!!! in pratica in questo foglio bloccato le macro non girano (e mica me ne ero accorto..), esiste un modo per poterle far girare? se non lancio sta macro per le centinaia di aziende che devo analizzare sono spacciato



  • di jonajams data: 12/06/2014 18:33:23

    per combattere il problema del file bloccato ho dovuto spostare tutto su di un nuovo file. quindi devo rifare tutte le macro....appena riesco riposto tutto ciò che avevo postato in precedenza (evitando il copia-incolla, ho capito che vba non lo vuole molto...)