Condividi:        

[Excel] Eseguire istruzioni su un range di celle

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel] Eseguire istruzioni su un range di celle

Postdi Zoro76 » 22/04/11 14:41

Buon giorno a tutti
ho un problema con questa macro che non riesco a risolvere.
Codice: Seleziona tutto
Public Sub a()
    Dim sh As Worksheet
    Set sh = ThisWorkbook.Worksheets("Foglio1")

    With sh
        Select Case .Range("R8").Value
            Case "PRO 180", "PRO 180 a"
                .Range("J2").Value = .Range("G2").Value * 0.04 * 11 + .Range("H2").Value
            Case "225", "225 a"
                .Range("J2").Value = .Range("G2").Value * 0.06 * 11 + .Range("H2").Value
        End Select
    End With
    Set sh = Nothing
End Sub


Per adesso la macro mi fa il calcolo che mi serve esclusivamente per la cella 2.
Vorrei modificarla per fargli fare il calcolo dalla cella 2 in poi prendendo i valori corrispondenti a quella riga e cioé:
J2 G2 H2
J3 G3 H3
ecc...
C'è qualcuno che può aiutarmi?
Grazie infinite
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Sponsor
 

[Excel] Eseguire istruzioni su un range di celle

Postdi Anthony47 » 22/04/11 23:39

Metti tutto il codice With /End With all' interno di un ciclo:
Codice: Seleziona tutto
For I=2 to XXX '<<< L' ultima riga
'il codice With /End With
Next I

Non so quale criterio adottare per impostare, sulla riga marcata <<<, l' ultima riga da elaborare; quindi l' istruzione e' da personalizzare.
Modificherai poi le istruzioni che ora fanno riferimento a riga 2 affiche' facciano riferimento a riga I; ad esempio invece di .Range("J2").Value userai .Range("J" & I).Value

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Eseguire istruzioni su un range di celle

Postdi Zoro76 » 05/05/11 08:09

Grazie mille Anthony e scusa se ti rispondo così tardi
sta mattina ho provato la tua opzione e funziona molto bene. Ho solo una domanda da fare su questa riga

For I = 2 To 100

Esiste la possibilità di mettere al posto di 100 un range? tipo:

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

Così che mi trovi in atuomatico l'ultima riga scritta.

Grazie intanto
Ciao
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [Excel] Eseguire istruzioni su un range di celle

Postdi Zoro76 » 05/05/11 08:39

Ho provato a fare così ma si blocca:
Codice: Seleziona tutto
Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    Dim lRiga4 As Long
    Dim lRigafine As Long
    Dim I As Long
   
    Set sh1 = ThisWorkbook.Worksheets("Foglio1")
       
    lRiga4 = sh1.Range("A" & .Rows.Count).End(xlUp).Row  <<<<< si blocca qui
    lRigafine = sh1.Range("J" & .Rows.Count).End(xlUp).Row
   
    For I = lRiga4 + 1 To lRigafine
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [Excel] Eseguire istruzioni su un range di celle

Postdi Anthony47 » 05/05/11 14:02

La sintassi giusta per le istruzioni aggiunte e' questa:
Codice: Seleziona tutto
lRiga4 = sh1.Range("A" & Rows.Count).End(xlUp).Row  <<<<< si blocca qui
lRigafine = sh1.Range("J" & Rows.Count).End(xlUp).Row

Da come le utilizzi, verra' creato un loop che parte dall' ultima riga usata di col A e termina sull' ultima riga usata in col J; non conoscendo il layout dei tuoi dati non so confermare anche che questa logica sia corretta.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Eseguire istruzioni su un range di celle

Postdi Zoro76 » 05/05/11 15:18

Grazie Anthony
molto probabilmente non ho capito bene io come utilizzare questo tipo di procedura

Tu mi hai scritto:
Da come le utilizzi, verra' creato un loop che parte dall' ultima riga usata di col A

Io invece volevo partire dalla riga 2 di A

La mia tabella è composta da dati numeri a partire dalla riga 2 (perchè nella riga 1 ho la desrizione dei dati) fino alla riga n; dalla colonna A alla colonna I . Nella colonna J devo avere il risultati della macro.

Praticamente con questo:
lRigafine = sh1.Range("J" & Rows.Count).End(xlUp).Row
trovo la riga n: giusto?

Grazie
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [Excel] Eseguire istruzioni su un range di celle

Postdi Anthony47 » 06/05/11 00:51

L' istruzione del tipo lRigafine = sh1.Range("J" & Rows.Count).End(xlUp).Row ti restituisce il numero dell' ultima riga di col J che e' occupata.

Se vuoi fare il loop da riga 2 all' ultima riga di col A occupata allora userai
For I = 2 to lRiga4

Valgono poi sempre le altre informazioni che ti diedi per adattare le istruzioni all' interno del ciclo With /End With:
Modificherai poi le istruzioni che ora fanno riferimento a riga 2 affiche' facciano riferimento a riga I; ad esempio invece di .Range("J2").Value userai .Range("J" & I).Value


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Eseguire istruzioni su un range di celle

Postdi Zoro76 » 06/05/11 07:13

Grazie Anthony ora ho capito
funziona tutto alla perfezione
Ciao e grazie
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Eseguire istruzioni su un range di celle":


Chi c’è in linea

Visitano il forum: Nessuno e 22 ospiti