Problema macro: Selezione range di colonne durante cicli iterativi for-next

Anonimo
2016-02-02T06:51:48+00:00

Salve a tutti!

Sono un novizio del VBA per questo mi rivolgo a voi in cerca di un prezioso aiuto.

Sto cercando di generare un codice che consiste di due cicli for-next, ciascuno dei quali dovrebbe scorrere tra le colonne di due database. Allego una bozza del codice per essere più chiaro...

For i = ... To ...

Range("B3:B15").Select

For k = .. To ..

Range("B18:B29").Select

Next k

Next i

Quello che sto provando a fare senza successo è utilizzare le colonne ("B3:B15") e ("B18:B29") nella routine i1 k1, ("B3:B15") e ("C18:C29") nella i1k2, ("B3:B15") e ("D18:D29") nella i1k3, per poi ricominciare da capo con ("C3:C15") e ("B18:B29") nella i2k1, e così via.

Grazie mille a chiunque proverà ad aiutarmi.

A presto,

Giuseppe

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

5 risposte

Ordina per: Più utili
  1. Anonimo
    2016-02-02T21:16:13+00:00

    Ciao! 

    Ho risolto il problema..

    Dovevo solo indicizzare la selezione delle colonne in questo modo

    columnmelt = 2

    For i = 1 To 6

        Sheets("Dataset").Select

        Range(Cells(3, columnmelt), Cells(15, columnmelt)).Select

    .....

    columnmelt = columnmelt + 1

    columncpx = 2

    For k = 3 To 12

        Sheets("Dataset").Select

        Range(Cells(18, columncpx), Cells(29, columncpx)).Select

    .....

    columncpx = columncpx + 1

    Next k

    Next i

    Grazie cmq per l'aiuto :)

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-02-02T09:39:05+00:00

    Ecco in allegato il foglio di calcolo con la macro

    Il foglio "dataset" sono i dati di partenza, il foglio "CPX-melt equilibria" (foglio 2) è quello con le equazioni, e il foglio result è dove vorrei incollare i vari risultati.

    Le colonne da B3:B15 a G3:G15 del foglio dataset vanno nelle celle vanno nelle celle B5:B16 del foglio2, mentre le colonne da B18:B29 a K18:K29 del dataset vanno nelle celle B26:B38 del foglio2. 

    I risultati dal incollare sul foglio result sono le celle K14 ed M14 del foglio 2.

    Lo script funziona abbastanza bene, se non fosse che fa le computazioni soltanto con le colonne B3:B15 e B18:B29.

    In sostanza vorrei modificare rispettivamente riga 10 e riga 25 della macro.

    https://onedrive.live.com/redir?resid=E22A59D89AC6F52E!3773&authkey=!AFruLGvpzwn25WQ&ithint=file%2cxlsm

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-02-02T08:58:19+00:00

    Per favore condividi un file su Onedrive o altro sito di sharing. Grazie.

    Così faciliti il compito di chi vuole aiutarti. Posta poi il link al file. Grazie.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-02-02T08:48:56+00:00

    Ciao Mauro,

    grazie per la risposta! 

    Ho provato il tuo codice, ma non è adatto alle mie necessità. Ti allego una immagine per spiegarti meglio.

    Questi in figura sono i miei dati di partenza e il mio obiettivo è comparare ciascuna colonna del set 1 con ciascuna colonna del set 2. Il database al momento è molto ristretto, ma a breve sarà considerevolmente più ampio.

    In sostanza, quello che voglio fare è copiare la colonna B3:B15, incollarla sul foglio di calcolo 2, copiare la colonna B18:B29 incollarla sul foglio di calcolo 2, copiare i risultati dal foglio 2 ed incollarli sul foglio 3, e poi sostituire alla colonna B18:B29, le colonne C18:C29, poi D18:D29 , E18:E29, e così via sino alla K18:K29. Ovviamente ognivolta che sostituisco le colonne del set 2  sul foglio2 copio ed incollo i risultati ottenuti nel foglio 3.

    Ultimato questo ciclo dovrei prendere la colonna C3:C15 dal set 1, incollarla sul foglio 2, poi prendere la colonna B18:B29 dal set 2, incollarla sul foglio 2, salvare i risultati sul foglio 3, e proseguire in maniera iterativa per ogni colonna del set 2, fino alla K18:K19.

    Poi andare alla terza colonna del set1 ossia la D3:D15... e così via..

    Spero che tu abbia capito un po meglio cosa sto cercando di fare, e sopratutto che tu possa darmi un prezioso aiuto!

    Se ti serve ti posso incollare il codice che ho scritto...

    Grazie mille!

    Buona giornata!

    Giuseppe

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2016-02-02T08:19:41+00:00

    Non ho capito cosa tu voglia fare.

    Per *scorrere* Range contigui di celle puoi utilizzare qualcosa di diverso da For x To y.

    Ad esempio:

    Public Sub m()

        Dim rng1 As Range

        Dim rng2 As Range

        Dim c1 As Range

        Dim c2 As Range

        Dim sh As Worksheet

        Set sh = ThisWorkbook.Worksheets("Foglio1")

        With sh

            Set rng1 = .Range("B1:B5")

            Set rng2 = .Range("B6:B10")

            For Each c1 In rng1

                For Each c2 In rng2

                    MsgBox c1.Value & "-" & c2.Value

                Next

            Next

        End With

        Set rng2 = Nothing

        Set rng1 = Nothing

        Set sh = Nothing

    End Sub

    Per vedere come funziona, metti dei valori in B1:B10 del Foglio1 ed esegui la macro.

    La risposta è stata utile?

    0 commenti Nessun commento